diff options
author | Marcel Moolenaar <marcel@FreeBSD.org> | 2004-06-20 22:32:19 +0000 |
---|---|---|
committer | Marcel Moolenaar <marcel@FreeBSD.org> | 2004-06-20 22:32:19 +0000 |
commit | 5526395941661215d1915a3559d8d6ce2dca669f (patch) | |
tree | 6c0e13747deb38610eb40059e7874e7af554cc89 /sys/conf/ldscript.ia64 | |
parent | ce1affa2acfa0151ae3312f09a1a5e89647afe7a (diff) |
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.
Notes
Notes:
svn path=/head/; revision=130829
Diffstat (limited to 'sys/conf/ldscript.ia64')
-rw-r--r-- | sys/conf/ldscript.ia64 | 2 |
1 files changed, 2 insertions, 0 deletions
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 |