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.