Hi -
> From: Wolfgang Fritz <[EMAIL PROTECTED]>
> > gcc -O6 -I. -c -o jdapimin.o jdapimin.c
> > /tmp/cc7IfzBn.s: Assembler messages:
> > /tmp/cc7IfzBn.s:619: Error: symbol `NOT_SUPPORTED' is already defined
> > gmake: *** [jdapimin.o] Error 1
> >
>
> The reason for this it that gcc inlines the assembler function
> mmxsupport() at 2 places, so the symbol NOT_SUPPORTED is defined twice.
Hmmm, the 2 places are under different #ifdef conditions.
The first is '#ifdef HAVE_MMX_INTEL_MNEMONICS' while the second
one is '#if defined(HAVE_MMX_ATT_MNEMONICS)'
Why does gcc 3.3 include both sections of code? Effectively
"gcc-3.3 -O6" causes the compiler to apparently ignore the '#ifdef'
statements and include both blocks of code which causes NOT_SUPPORTED
to be defined twice.
In order for NOT_SUPPORTED to be defined twice both the
#ifdef HAVE_MMX_INTEL_MNEMONICS and the #ifdef HAVE_MMX_ATT_MNEMONIC
sections would have to be compiled.
> A fix without changing the O option is to change the global symbol to a
> local one. See the attached patch.
That will work but I wonder if it is simply masking the problem?
The current jpeg_mmx code seems to have a weird blend of support
for ATT mnemonics in some modules, ATT and INTEL in other modules
and ATT + INTEL in others.
Thus the 'cpu_accel.c' module will return a meaningful value if
'HAVE_MMX_ATT_MNEMONICS' is defined because there is no
HAVE_MMX_INTEL_MNEMONICS support in cpu_accel.c - thus if jpeg_mmx
is built on a system without ATT_MNEMONICS defined cpu_accel will
always return 0.
Would a better approach be to only support 1 set of assembler
mnemonics?
Cheers,
Steven Schultz
-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
Mjpeg-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/mjpeg-users