summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2004-06-20 22:32:19 +0000
committermarcel <marcel@FreeBSD.org>2004-06-20 22:32:19 +0000
commitd7e5b117c40a64820465a4c4cfc34ba57fbf955f (patch)
tree6c0e13747deb38610eb40059e7874e7af554cc89
parent26d7dd0b9aa02d3be9a728188219fea6344781ac (diff)
downloadFreeBSD-src-d7e5b117c40a64820465a4c4cfc34ba57fbf955f.zip
FreeBSD-src-d7e5b117c40a64820465a4c4cfc34ba57fbf955f.tar.gz
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.
-rw-r--r--sys/conf/ldscript.ia642
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/conf/ldscript.ia64 b/sys/conf/ldscript.ia64
index a06798b..cc78ee1 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
OpenPOWER on IntegriCloud