aboutsummaryrefslogtreecommitdiff
path: root/arm-link.c
diff options
context:
space:
mode:
authorThomas Preud'homme <robotux@celest.fr>2016-11-17 23:00:11 +0000
committerThomas Preud'homme <robotux@celest.fr>2016-12-03 17:26:51 +0000
commita11b0a67e368f86751431f827db3ca85682b9864 (patch)
tree4ca5011b3dfc25ed1b7c8ec7321ebd0cc62e6395 /arm-link.c
parent1c811a4d1db56e4ed4fefa99ea39c679aa0c29f0 (diff)
downloadtinycc-a11b0a67e368f86751431f827db3ca85682b9864.tar.gz
tinycc-a11b0a67e368f86751431f827db3ca85682b9864.tar.bz2
Consolidate GOT creation in build_got_entries
Currently GOT/PLT creation happens in two locations depending on whether the GOT/PLT [entry] is required by the symbol or the relocation: - bind_exe_dynsym for relocations to undefined symbol - build_got_entries/put_got_entry for relocations that require a GOT/PLT entry This commit consolidate GOT/PLT creation in build_got_entries by reducing bind_exe_dynsym's job to create a dynamic symbol for undefined symbols. build_got_entries then invoke put_got_entry if the symbol being relocated is undefined or the relocation asks for a PLT or GOT [entry]. put_got_entry is also modified to only export a symbol in the dynamic symbol table when we are in the case of PLT/GOT [entry] required by the relocation (since undefined symbol are already exported by bind_exe_dynsym).
Diffstat (limited to 'arm-link.c')
-rw-r--r--arm-link.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arm-link.c b/arm-link.c
index ec989bb..7d94048 100644
--- a/arm-link.c
+++ b/arm-link.c
@@ -13,7 +13,7 @@ ST_DATA struct reloc_info relocs_info[] = {
INIT_RELOC_INFO (R_ARM_THM_MOVT_ABS, 0, AUTO_GOTPLT_ENTRY, 0)
INIT_RELOC_INFO (R_ARM_THM_MOVW_ABS_NC, 0, AUTO_GOTPLT_ENTRY, 0)
INIT_RELOC_INFO (R_ARM_PREL31, 1, AUTO_GOTPLT_ENTRY, 0)
- INIT_RELOC_INFO (R_ARM_ABS32, 0, NO_GOTPLT_ENTRY, 0)
+ INIT_RELOC_INFO (R_ARM_ABS32, 0, AUTO_GOTPLT_ENTRY, 0)
INIT_RELOC_INFO (R_ARM_REL32, 0, AUTO_GOTPLT_ENTRY, 0)
INIT_RELOC_INFO (R_ARM_GOTPC, 0, BUILD_GOT_ONLY, 0)
INIT_RELOC_INFO (R_ARM_GOTOFF, 0, BUILD_GOT_ONLY, 0)