Errors compiling Squeak with new gcc 3.3... (Mpeg3Plugin)

Ivo Rössling iroess at cs.uni-magdeburg.de
Mon May 19 00:13:43 UTC 2003


Hi, there!

I ran into trouble to try to compile Squeak (3.5-1devel) with the latest 
gcc 3.3 -
or to be exactly: by trying to compile the "Mpeg3Plugin":

--------------- snip ---------------
/scratch/Squeak-3.5-1devel/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c:264:5: 
missing terminating " character
/scratch/Squeak-3.5-1devel/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c:296:9: 
missing terminating " character
/scratch/Squeak-3.5-1devel/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c:306:5: 
missing terminating " character
/scratch/Squeak-3.5-1devel/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c:339:9: 
missing terminating " character
/scratch/Squeak-3.5-1devel/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c:342:1: 
missing terminating " character
/scratch/Squeak-3.5-1devel/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c:355:5: 
missing terminating " character
/scratch/Squeak-3.5-1devel/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c:387:9: 
missing terminating " character
/scratch/Squeak-3.5-1devel/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c:397:5: 
missing terminating " character
/scratch/Squeak-3.5-1devel/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c:430:9: 
missing terminating " character
make[1]: *** [output.o] Error 1
make: *** [Mpeg3Plugin/Mpeg3Plugin.a] Error 2
--------------- snap ---------------

the problem is the method asm being called like that:
--------------- snip ---------------
asm("
/* Output will be 0x00rrggbb with the 00 trailing so this can also be 
used */
/* for bgr24. */
    movd (%0), %%mm0;          /* Load y   0x00000000000000yy */
    movd (%1), %%mm1;          /* Load u    0x00000000000000cr */
[....]
"
:
: "r" (&y), "r" (&u), "r" (&v), "r" (output));
--------------- snap ---------------

those kind of multi-line string literals seem to be not allowed anymore 
with gcc 3.3
--------------- snip ---------------
gcc 3.2 just gave a warning about multi-line string literals:
    
/scratch/Squeak-3.5-1devel/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c:264:5: 
warning: multi-line string literals are deprecated
--------------- snap ---------------

i didn't find the compiler-option responsible for this in order to turn 
it off.
so i had to patch the file by exchanging those multi-line string 
literals by concatenations of single newline-delimited strings...

--------------- snip ---------------
asm("\n".
"/* Output will be 0x00rrggbb with the 00 trailing so this can also be 
used */\n".
"/* for bgr24. */\n".
"    movd (%0), %%mm0;          /* Load y   0x00000000000000yy */\n".
"    movd (%1), %%mm1;          /* Load u    0x00000000000000cr */\n".
"[....]\n".
"\n"
:
: "r" (&y), "r" (&u), "r" (&v), "r" (output));
--------------- snap ---------------

don't know, if there was a better way to handle that - didn't find one...

cheers,
ivo




More information about the Squeak-dev mailing list