On Feb 17, 2008 10:40 AM, Richard Guenther <[EMAIL PROTECTED]> wrote:
>
> On Feb 17, 2008 9:38 AM, Greg Schafer <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > driver-i386.s: Assembler messages:
> > driver-i386.s:2454: Error: invalid character '{' in mnemonic
> > driver-i386.s:2455: Error: invalid character '{' in mnemonic
> > driver-i386.s:2456: Error: invalid character '{' in mnemonic
> > driver-i386.s:2457: Error: invalid character '{' in mnemonic
> > driver-i386.s:2458: Error: invalid character '{' in mnemonic
> > driver-i386.s:2459: Error: invalid character '{' in mnemonic
> > driver-i386.s:2460: Error: invalid character '{' in mnemonic
> > driver-i386.s:2461: Error: invalid character '{' in mnemonic
> > driver-i386.s:2462: Error: invalid character '{' in mnemonic
> > driver-i386.s:2463: Error: invalid character '{' in mnemonic
> >
> > This is on an ancient distro (don't ask..) i.e. RedHat 6.2. (4.2.3 builds
> > fine so this is somewhat of a regression...)
> >
> > Looking at the -save-temps output, it seems the old assembler is choking
> > on this syntax from __get_cpuid_max() in cpuid.h:
> >
> > .stabn 68,0,91,.LM210-__get_cpuid_max
> > .LM210:
> > #APP
> >         pushf{l|d}
> >         pushf{l|d}
> >         pop{l}  %eax
> >         mov{l}  {%eax, %edx|%edx, %eax}
> >         xor{l}  {$2097152, %eax|%eax, $2097152}
> >         push{l} %eax
> >         popf{l|d}
> >         pushf{l|d}
> >         pop{l}  %eax
> >         popf{l|d}
> >
> > #NO_APP
> >
> >
> > It's kind of unfortunate for the build to break in this way. Is there any
> > hope for some kind of fix or workaround? I realize ancient distros are not
> > a priority, but still....
>
> The problem is that your host GCC doesn't recognize the inline asm correctly
> (the above should not reach the assembler), GCC 3.3.x handles the above fine.
> This probably also breaks build with non-GCC host compilers.
>
> Rask, you introduced this change - any idea on how to fix this?  Can we please
> revert the cpuid.h change for 4.3.0 if this is too hard to fix in a short 
> time?

I see the use of cpuid.h is wrapped inside #ifdef __GNUC__, so the issue is only
using old GCC as the host compiler (I checked 2.95 which chokes on the asm).
Can we change this guard to only allow GCC >= 3.3 which would also fix this?

Thanks,
Richard.

Reply via email to