[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/2809] ld incorrect applies LTOFF22X/LDXMOV relocations
From: |
cgray at cse dot unsw dot edu dot au |
Subject: |
[Bug ld/2809] ld incorrect applies LTOFF22X/LDXMOV relocations |
Date: |
22 Jun 2006 06:59:40 -0000 |
------- Additional Comments From cgray at cse dot unsw dot edu dot au
2006-06-22 06:59 -------
I'm confused. You don't believe that ld doing these relocations creates a fixed
fixed address relationship between segments? Or you don't believe that this is
what the IA64 ABI is saying you can't do?
If I compile some simple code, say,
printf( "string" );
ld applies relocations to get:
addl r14=-99976,r1 ;;
...
ld8 r32=[r14]
However, the -99976 is *much* bigger than the size of the read/write data
section the gp is in, as shown here: (leading zeros removed for formatting)
LOAD off 0x0005cb50 vaddr 0x0006cb50 paddr 0x00006cb50 align 2**16
filesz 0x00002428 memsz 0x000049d0 flags rw-
So the relocated code assumes a fixed address relationship between sections. If
I load the read-only data at a modified offset, things crash.
You claim "offset from GP is fixed in executable or shared library", however
this is only true at linktime for read/write data. Only the dynamic linker can
extend this to read-only data. The ABI says so.
This only seems to work for the current VM system in the current version of
Linux. I'd like to supply you with a small test case, however that would require
also supplying you with a whole new VM system, or in my case, OS.
I think it's very clear from the emitted code that ld does *not* obey what is
specified in the ABI, so I don't think sample code is really that necessary. Any
code which uses static read-only data can be used for testing.
If ld is fine with being by default non-ABI compliant, is it not possible to
have command line flags to disable these relocations? Alternatively, do they
already exist and are just undocumented?
Thanks,
Chuck
--
http://sourceware.org/bugzilla/show_bug.cgi?id=2809
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.