[PATCH] Make use of .half and .asciiz assembler keywords when needed

Christian Costa titan.costa at wanadoo.fr
Sat Mar 22 06:35:28 CST 2003


Hi,

AS provided in Sun Workshop Compilers
1) does not recognizes .short keyword but .half
2) .ascii creates string that does not contain the null character, 
.asciz does

Bye.
Christian.

Changelog:
Make use of .half and/or .asciiz assembler keywords when necessary.

Christian Costa   titan.costa at wanadoo.fr

-------------- next part --------------
Index: configure.ac
===================================================================
RCS file: /home/wine/wine/configure.ac,v
retrieving revision 1.134
diff -u -r1.134 configure.ac
--- configure.ac	21 Mar 2003 05:06:53 -0000	1.134
+++ configure.ac	22 Mar 2003 11:00:35 -0000
@@ -732,14 +732,32 @@
   AC_DEFINE([__ASM_NAME(name)], [name])
 fi
 
-dnl **** Check for .string in assembler ****
+dnl **** Check for .string then .asciz in assembler ****
 
 AC_CACHE_CHECK([whether assembler accepts .string], ac_cv_c_asm_string,
     WINE_TRY_ASM_LINK([".data\n\t.string \"test\"\n\t.text"],,,
                       ac_cv_c_asm_string="yes",ac_cv_c_asm_string="no"))
 if test "$ac_cv_c_asm_string" = "yes"
 then
-  AC_DEFINE(HAVE_ASM_STRING, 1, [Define to use .string instead of .ascii])
+  AC_DEFINE(HAVE_ASM_STRING, 1, [Define to use .string instead of .asciz or .ascii])
+else
+    AC_CACHE_CHECK([whether assembler accepts .asciz], ac_cv_c_asm_asciz,
+        WINE_TRY_ASM_LINK([".data\n\t.asciz \"test\"\n\t.text"],,,
+                      ac_cv_c_asm_asciz="yes",ac_cv_c_asm_asciz="no"))
+    if test "$ac_cv_c_asm_asciz" = "yes"
+    then
+      AC_DEFINE(HAVE_ASM_ASCIZ, 1, [Define to use .asciz instead of .ascii])
+    fi					
+fi
+
+dnl **** Check for .short in assembler ****
+
+AC_CACHE_CHECK([whether assembler accepts .short], ac_cv_c_asm_short,
+    WINE_TRY_ASM_LINK([".data\n\t.short \"test\"\n\t.text"],,,
+                      ac_cv_c_asm_short="yes",ac_cv_c_asm_short="no"))
+if test "$ac_cv_c_asm_short" = "yes"
+then
+  AC_DEFINE(HAVE_ASM_SHORT, 1, [Define to use .short instead of .half])
 fi
 
 dnl **** Check for working dll ****
Index: include/config.h.in
===================================================================
RCS file: /home/wine/wine/include/config.h.in,v
retrieving revision 1.143
diff -u -r1.143 config.h.in
--- include/config.h.in	20 Mar 2003 23:47:25 -0000	1.143
+++ include/config.h.in	22 Mar 2003 11:00:36 -0000
@@ -35,8 +35,14 @@
 /* Define if you have ARTS sound server */
 #undef HAVE_ARTS
 
-/* Define to use .string instead of .ascii */
+/* Define to use .string instead of .asciz or .ascii */
 #undef HAVE_ASM_STRING
+
+/* Define to use .asciiz instead of .ascii */
+#undef HAVE_ASM_ASCIZ
+
+/* Define to use .short instead of .half */
+#undef HAVE_ASM_SHORT
 
 /* Define to 1 if you have the <audio/audiolib.h> header file. */
 #undef HAVE_AUDIO_AUDIOLIB_H
Index: tools/winebuild/build.h
===================================================================
RCS file: /home/wine/wine/tools/winebuild/build.h,v
retrieving revision 1.41
diff -u -r1.41 build.h
--- tools/winebuild/build.h	18 Mar 2003 05:30:54 -0000	1.41
+++ tools/winebuild/build.h	22 Mar 2003 11:00:37 -0000
@@ -32,9 +32,17 @@
 #include <string.h>
 
 #ifdef HAVE_ASM_STRING
-# define STRING ".string"
+# define ASM_STRING ".string"
+#elif HAVE_ASM_ASCIZ
+# define ASM_STRING ".asciz"
 #else
-# define STRING ".ascii"
+# define ASM_STRING ".ascii"
+#endif
+
+#ifdef HAVE_ASM_SHORT
+# define ASM_SHORT ".short"
+#else
+# define ASM_SHORT ".half"
 #endif
 
 typedef enum
Index: tools/winebuild/spec32.c
===================================================================
RCS file: /home/wine/wine/tools/winebuild/spec32.c,v
retrieving revision 1.62
diff -u -r1.62 spec32.c
--- tools/winebuild/spec32.c	18 Mar 2003 05:30:54 -0000	1.62
+++ tools/winebuild/spec32.c	22 Mar 2003 11:00:39 -0000
@@ -210,7 +210,7 @@
         fprintf( outfile, "    \"\\t.text\\n\"\n" );
         fprintf( outfile, "    \"__wine_spec_exp_names:\\n\"\n" );
         for (i = 0; i < nb_names; i++)
-            fprintf( outfile, "    \"\\t" STRING " \\\"%s\\\"\\n\"\n", Names[i]->name );
+            fprintf( outfile, "    \"\\t" ASM_STRING " \\\"%s\\\"\\n\"\n", Names[i]->name );
         fprintf( outfile, "    \"\\t.data\\n\"\n" );
 
         /* output the function ordinals */
@@ -218,12 +218,12 @@
         fprintf( outfile, "    \"__wine_spec_exp_ordinals:\\n\"\n" );
         for (i = 0; i < nb_names; i++)
         {
-            fprintf( outfile, "    \"\\t.short %d\\n\"\n", Names[i]->ordinal - Base );
+            fprintf( outfile, "    \"\\t" ASM_SHORT " %d\\n\"\n", Names[i]->ordinal - Base );
         }
         total_size += nb_names * sizeof(short);
         if (nb_names % 2)
         {
-            fprintf( outfile, "    \"\\t.short 0\\n\"\n" );
+            fprintf( outfile, "    \"\\t" ASM_SHORT " 0\\n\"\n" );
             total_size += sizeof(short);
         }
     }
@@ -237,7 +237,7 @@
         {
             ORDDEF *odp = Ordinals[i];
             if (odp && (odp->flags & FLAG_FORWARD))
-                fprintf( outfile, "    \"\\t" STRING " \\\"%s\\\"\\n\"\n", odp->link_name );
+                fprintf( outfile, "    \"\\t" ASM_STRING " \\\"%s\\\"\\n\"\n", odp->link_name );
         }
         fprintf( outfile, "    \"\\t.align %d\\n\"\n", get_alignment(4) );
         total_size += (fwd_size + 3) & ~3;
@@ -281,7 +281,7 @@
             case TYPE_CDECL:
                 fprintf( outfile, "    \"\\tjmp " __ASM_NAME("%s") "\\n\"\n", name );
                 fprintf( outfile, "    \"\\tret\\n\"\n" );
-                fprintf( outfile, "    \"\\t.short %d\\n\"\n", args );
+                fprintf( outfile, "    \"\\t" ASM_SHORT " %d\\n\"\n", args );
                 fprintf( outfile, "    \"\\t.long " __ASM_NAME("%s") ",0x%08x\\n\"\n", name, mask );
                 break;
             default:


More information about the wine-patches mailing list