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@wanadoo.fr
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: