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

Christian Costa titan.costa at wanadoo.fr
Sat Mar 22 13:22:41 CST 2003


Christian Costa wrote:

> 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
>
Please don't use my previous patch! Use this one instead.

Christian.

-------------- 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 1\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