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?

Thanks,
Richard.

Reply via email to