[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: FLT_ROUNDS failures ... gcc/binutils regression ?
On Sep 27, 2011, at 11:27 AM, David Laight wrote:
> On Tue, Sep 27, 2011 at 08:05:15PM +0200, Nicolas Joly wrote:
>> On Tue, Sep 27, 2011 at 06:58:14PM +0100, David Laight wrote:
>>> On Tue, Sep 27, 2011 at 07:10:30PM +0200, Nicolas Joly wrote:
>>>> < flt_rounds.old: file format elf64-x86-64
>>>>> flt_rounds.new: file format elf64-x86-64
>>>> < 1e: 48 8d 0d db ff ff ff lea -0x25(%rip),%rcx # 0 <_map>
>>>>> 1e: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 25
>>>> The new code, which does not work, looks suspicious to me ...
>> 0000000000000021 R_X86_64_GOTPCREL _map+0xfffffffffffffffc
> That is some kind of pc-relative relocation for _map.
> So it looks like _map (or rather its address?) has moved sections (or similar)
> so that the offset isn't a compile time constant - or gcc is allowing for
> Dunno it that is the right relocation type.
> Might be worth linking the .o into a static program to see what 'ld'
> makes of it.
> Also link into a shlib, load, and see what the dynamic linker has done.
> Might be a bug in the dynamic linker!
_map probably should be in .rdata
you could recode it to extract two bits from 0x78 (01.11.10.00) which
avoid a memory reference. Something like:
movl -4(%rsp), %ecx
shrl $9, %ecx
andl $6, %ecx
movl $120, %eax
sarl %cl, %eax
andl $3, %eax
Main Index |
Thread Index |