From da0781dc5ffa0fdbec8d7fa65b053e3ef5a7997e Mon Sep 17 00:00:00 2001 From: Yufeng Zhang Date: Wed, 13 Nov 2013 14:47:04 +0000 Subject: [PATCH] bfd/ * elfnn-aarch64.c (elfNN_aarch64_howto_table): Use R_AARCH64_TLS_DTPMOD64 instead of R_AARCH64_TLS_DTPMOD; likewise for R_AARCH64_TLS_DTPREL and R_AARCH64_TLS_TPREL. include/elf/ * aarch64.h: Define R_AARCH64_TLS_DTPMOD64, R_AARCH64_TLS_DTPREL64 and R_AARCH64_TLS_TPREL64; guard R_AARCH64_TLS_DTPMOD, R_AARCH64_TLS_DTPREL and R_AARCH64_TLS_TPREL with RELOC_MACROS_GEN_FUNC. --- bfd/ChangeLog | 6 ++++++ bfd/elfnn-aarch64.c | 12 ++++++++++++ include/elf/ChangeLog | 7 +++++++ include/elf/aarch64.h | 8 ++++++++ 4 files changed, 33 insertions(+) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index fd82ee7cfb..aa4595a230 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2013-11-13 Yufeng Zhang + + * elfnn-aarch64.c (elfNN_aarch64_howto_table): Use + R_AARCH64_TLS_DTPMOD64 instead of R_AARCH64_TLS_DTPMOD; + likewise for R_AARCH64_TLS_DTPREL and R_AARCH64_TLS_TPREL. + 2013-11-12 Matthew Leach * elfxx-aarch64.c (_bfd_aarch64_elf_grok_prstatus): Fix hard-coded diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 3424ae2f8f..48fa3d2974 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -1297,7 +1297,11 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ +#if ARCH_SIZE == 64 + AARCH64_R_STR (TLS_DTPMOD64), /* name */ +#else AARCH64_R_STR (TLS_DTPMOD), /* name */ +#endif FALSE, /* partial_inplace */ 0, /* src_mask */ ALL_ONES, /* dst_mask */ @@ -1311,7 +1315,11 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ +#if ARCH_SIZE == 64 + AARCH64_R_STR (TLS_DTPREL64), /* name */ +#else AARCH64_R_STR (TLS_DTPREL), /* name */ +#endif FALSE, /* partial_inplace */ 0, /* src_mask */ ALL_ONES, /* dst_mask */ @@ -1325,7 +1333,11 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ +#if ARCH_SIZE == 64 + AARCH64_R_STR (TLS_TPREL64), /* name */ +#else AARCH64_R_STR (TLS_TPREL), /* name */ +#endif FALSE, /* partial_inplace */ 0, /* src_mask */ ALL_ONES, /* dst_mask */ diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index 68b1002104..dc226198f7 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,10 @@ +2013-11-13 Yufeng Zhang + + * aarch64.h: Define R_AARCH64_TLS_DTPMOD64, + R_AARCH64_TLS_DTPREL64 and R_AARCH64_TLS_TPREL64; guard + R_AARCH64_TLS_DTPMOD, R_AARCH64_TLS_DTPREL and + R_AARCH64_TLS_TPREL with RELOC_MACROS_GEN_FUNC. + 2013-10-30 Alan Modra * ppc.h (DT_PPC_TLSOPT): Delete. diff --git a/include/elf/aarch64.h b/include/elf/aarch64.h index 41016038f1..7dbab8ccf9 100644 --- a/include/elf/aarch64.h +++ b/include/elf/aarch64.h @@ -316,9 +316,17 @@ RELOC_NUMBER (R_AARCH64_JUMP_SLOT, 1026) /* Adjust by program base. */ RELOC_NUMBER (R_AARCH64_RELATIVE, 1027) +RELOC_NUMBER (R_AARCH64_TLS_DTPMOD64, 1028) +RELOC_NUMBER (R_AARCH64_TLS_DTPREL64, 1029) +RELOC_NUMBER (R_AARCH64_TLS_TPREL64, 1030) +/* Aliasing relocs are guarded by RELOC_MACROS_GEN_FUNC + so that readelf.c won't generate duplicated case + statements. */ +#ifndef RELOC_MACROS_GEN_FUNC RELOC_NUMBER (R_AARCH64_TLS_DTPMOD, 1028) RELOC_NUMBER (R_AARCH64_TLS_DTPREL, 1029) RELOC_NUMBER (R_AARCH64_TLS_TPREL, 1030) +#endif RELOC_NUMBER (R_AARCH64_TLSDESC, 1031) RELOC_NUMBER (R_AARCH64_IRELATIVE, 1032)