From 5526395941661215d1915a3559d8d6ce2dca669f Mon Sep 17 00:00:00 2001 From: Marcel Moolenaar Date: Sun, 20 Jun 2004 22:32:19 +0000 Subject: Fix the following error: ld: locore.o: non-pic code with imm relocation against dynamic symbol `__gp' With binutils 2.15, ld(1) defines the implicit/automatic symbol __gp as a dynamic symbol and thus will now complain when used in a non-PIC fashion (the immediate relocation used to set the GP register). Resolve this by defining __gp in the linker script. Make sure __gp is aligned on a 16-byte boundary. Note: the 0x200000 magic offset is due to having a 22-bit GP-relative relocation. The GOT will be accessed with negative offsets from GP. --- sys/conf/ldscript.ia64 | 2 ++ 1 file changed, 2 insertions(+) (limited to 'sys/conf/ldscript.ia64') diff --git a/sys/conf/ldscript.ia64 b/sys/conf/ldscript.ia64 index a06798b0150d..cc78ee1397ad 100644 --- a/sys/conf/ldscript.ia64 +++ b/sys/conf/ldscript.ia64 @@ -74,6 +74,8 @@ SECTIONS *(.dtors) *(SORT(.dtors.*)) } + . = ALIGN(16); + __gp = . + 0x200000; .got : { *(.got.plt) *(.got) } .IA_64.pltoff : { *(.IA_64.pltoff) } /* We want the small data sections together, so single-instruction offsets -- cgit v1.2.3