From 1c811a4d1db56e4ed4fefa99ea39c679aa0c29f0 Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Sat, 12 Nov 2016 23:16:07 +0800 Subject: Make build_got_entries more target independent Factor most of common logic between targets in build_got_entries by defining target specific info into structures in the backends. --- x86_64-link.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'x86_64-link.c') diff --git a/x86_64-link.c b/x86_64-link.c index 2a9e9b0..5f8c504 100644 --- a/x86_64-link.c +++ b/x86_64-link.c @@ -2,6 +2,20 @@ #define HAVE_SECTION_RELOC static ElfW_Rel *qrel; /* ptr to next reloc entry reused */ +ST_DATA struct reloc_info relocs_info[] = { + INIT_RELOC_INFO (R_X86_64_64, 0, AUTO_GOTPLT_ENTRY, 0) + INIT_RELOC_INFO (R_X86_64_32, 0, AUTO_GOTPLT_ENTRY, 0) + INIT_RELOC_INFO (R_X86_64_32S, 0, AUTO_GOTPLT_ENTRY, 0) + INIT_RELOC_INFO (R_X86_64_PC32, 1, AUTO_GOTPLT_ENTRY, 0) + INIT_RELOC_INFO (R_X86_64_PLT32, 1, ALWAYS_GOTPLT_ENTRY, 1) + INIT_RELOC_INFO (R_X86_64_GLOB_DAT, 0, NO_GOTPLT_ENTRY, 0) + INIT_RELOC_INFO (R_X86_64_JUMP_SLOT, 1, NO_GOTPLT_ENTRY, 0) + INIT_RELOC_INFO (R_X86_64_GOTPCREL, 0, ALWAYS_GOTPLT_ENTRY, 0) + INIT_RELOC_INFO (R_X86_64_GOTPCRELX, 0, ALWAYS_GOTPLT_ENTRY, 0) + INIT_RELOC_INFO (R_X86_64_REX_GOTPCRELX, 0, ALWAYS_GOTPLT_ENTRY, 0) + INIT_RELOC_INFO (R_X86_64_GOTTPOFF, 0, BUILD_GOT_ONLY, 0) + INIT_RELOC_INFO (R_X86_64_GOT32, 0, ALWAYS_GOTPLT_ENTRY, 0) +}; void relocate_init(Section *sr) { -- cgit v1.3.1