ld on ia64 applies LTOFF22X and LDXMOV relocations at linktime, voilating the ABI.
The IA64 ABI description here http://refspecs.freestandards.org/elf/IA64-SysV-psABI.pdf states in Section 5.2.1 - Linktime and Runtime Addresses: "Since there is no fixed address relationship at runtime among segments created at linktime, the constant value must be calculated based on the segment containing the address in question." By applying these relocation in ld rather than the dynamic linker it assumes a fixed address relationship at runtime. ie. the constant value is not calculated based on the segment containing the address. Executing code with these relocations applied and loading segments with a non-fixed offset (as you should be able to do) causes crashes and other random behaviour. These relocations seem to be related to the "--relax" option of ld. If ld can't/won't preserve these relocations to be done at load time, is there at least some way to turn off these relaxations? -- Summary: ld incorrect applies LTOFF22X/LDXMOV relocations Product: binutils Version: 2.16 Status: NEW Severity: normal Priority: P2 Component: ld AssignedTo: unassigned at sources dot redhat dot com ReportedBy: cgray at cse dot unsw dot edu dot au CC: bug-binutils at gnu dot org GCC build triplet: ia64-*-* GCC host triplet: ia64-*-linux GCC target triplet: ia64-*-* 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. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils