hauradou wrote:
> Bruce Dubbs wrote:
>> hauradou wrote:
>>
>>
>>> well, the difference between a big patch and just one option to pass to
>>> the compiler...
>>>
>> I don't consider a 49 line patch big. It is really only adding 8 lines
>> and the rest is explanation. I believe the patch came from upstream.
>>
>>
> when I look inside the patch, that's not what I see:
>
> Upstream Status: Not Submitted
> Origin: http://www.eglibc.org/archives/patches/msg00073.html
>
> Looks like a patch for eglibc, written in year 2007
That's upstream or at least related to upstream.
> yes. But why do you assume this method implies less optimal code ? Which
> part of glibc's code would get sub-optimal?
Looking more deeply, I think your method disables the assembly code
completely. The error that it's fixing is:
./sysdeps/i386/fpu/s_frexp.S: Assembler messages:
./sysdeps/i386/fpu/s_frexp.S:66: Error: invalid identifier for ".ifdef"
Tracing that code to a macro (sysdeps/i386/sysdep.h, line 137):
.ifndef __i686.get_pc_thunk.reg;
Undefining __i686 is an error for the assembler just as setting to '1'
is. It would lead to:
.ifndef .get_pc_thunk.reg;
It looks like (I am not an expert here and don't know for sure) the
difference in gcc-4.5 is that the define substitutes in the line above
and older version of gcc don't due to the dot after the __i686. This is
a change in behavior. The patch does:
+asm ("\n#if defined __i686 && defined __ASSEMBLER__");
+asm ("\n#undef __i686");
+asm ("\n#define __i686 __i686");
+asm ("\n#endif");
If undefining __i686 alone did the right thing, then the 3rd line
wouldn't be needed.
-- Bruce
--
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page