From e04ef02299ad4aae08da857e8535d98e8643a274 Mon Sep 17 00:00:00 2001 From: Renlin Li Date: Wed, 28 Mar 2018 18:06:05 +0100 Subject: [PATCH] [2/2][LD][AARCH64]Add BFD_RELOC_AARCH64_TLSLE_LDST8/16/32/64_TPREL_LO12 support in LD. This patch adds the following relocation support into binutils bfd linker. BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC, BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC, BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC, BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC. Those relocations includes both ip64 and ilp32 variant. --- bfd/ChangeLog | 17 +++++++ bfd/elfnn-aarch64.c | 16 +++++++ bfd/elfxx-aarch64.c | 19 +++++++- ld/ChangeLog | 53 ++++++++++++++++++++++ ld/testsuite/ld-aarch64/aarch64-elf.exp | 30 +++++++++++- ld/testsuite/ld-aarch64/emit-relocs-112-overflow.d | 5 ++ ld/testsuite/ld-aarch64/emit-relocs-112-overflow.s | 11 +++++ ld/testsuite/ld-aarch64/emit-relocs-112.d | 8 ++++ ld/testsuite/ld-aarch64/emit-relocs-112.s | 10 ++++ ld/testsuite/ld-aarch64/emit-relocs-113.d | 10 ++++ ld/testsuite/ld-aarch64/emit-relocs-113.s | 17 +++++++ ld/testsuite/ld-aarch64/emit-relocs-114-overflow.d | 5 ++ ld/testsuite/ld-aarch64/emit-relocs-114-overflow.s | 11 +++++ ld/testsuite/ld-aarch64/emit-relocs-114.d | 8 ++++ ld/testsuite/ld-aarch64/emit-relocs-114.s | 10 ++++ ld/testsuite/ld-aarch64/emit-relocs-115.d | 10 ++++ ld/testsuite/ld-aarch64/emit-relocs-115.s | 17 +++++++ ld/testsuite/ld-aarch64/emit-relocs-116-overflow.d | 5 ++ ld/testsuite/ld-aarch64/emit-relocs-116-overflow.s | 11 +++++ ld/testsuite/ld-aarch64/emit-relocs-116.d | 8 ++++ ld/testsuite/ld-aarch64/emit-relocs-116.s | 10 ++++ ld/testsuite/ld-aarch64/emit-relocs-117.d | 10 ++++ ld/testsuite/ld-aarch64/emit-relocs-117.s | 17 +++++++ ld/testsuite/ld-aarch64/emit-relocs-118-overflow.d | 5 ++ ld/testsuite/ld-aarch64/emit-relocs-118-overflow.s | 11 +++++ ld/testsuite/ld-aarch64/emit-relocs-118.d | 8 ++++ ld/testsuite/ld-aarch64/emit-relocs-118.s | 12 +++++ ld/testsuite/ld-aarch64/emit-relocs-119.d | 10 ++++ ld/testsuite/ld-aarch64/emit-relocs-119.s | 19 ++++++++ ld/testsuite/ld-aarch64/emit-relocs-552-overflow.d | 4 ++ ld/testsuite/ld-aarch64/emit-relocs-552-overflow.s | 11 +++++ ld/testsuite/ld-aarch64/emit-relocs-552.d | 7 +++ ld/testsuite/ld-aarch64/emit-relocs-552.s | 10 ++++ ld/testsuite/ld-aarch64/emit-relocs-553.d | 9 ++++ ld/testsuite/ld-aarch64/emit-relocs-553.s | 17 +++++++ ld/testsuite/ld-aarch64/emit-relocs-554-overflow.d | 4 ++ ld/testsuite/ld-aarch64/emit-relocs-554-overflow.s | 11 +++++ ld/testsuite/ld-aarch64/emit-relocs-554.d | 7 +++ ld/testsuite/ld-aarch64/emit-relocs-554.s | 10 ++++ ld/testsuite/ld-aarch64/emit-relocs-555.d | 9 ++++ ld/testsuite/ld-aarch64/emit-relocs-555.s | 17 +++++++ ld/testsuite/ld-aarch64/emit-relocs-556-overflow.d | 4 ++ ld/testsuite/ld-aarch64/emit-relocs-556-overflow.s | 11 +++++ ld/testsuite/ld-aarch64/emit-relocs-556.d | 7 +++ ld/testsuite/ld-aarch64/emit-relocs-556.s | 10 ++++ ld/testsuite/ld-aarch64/emit-relocs-557.d | 9 ++++ ld/testsuite/ld-aarch64/emit-relocs-557.s | 17 +++++++ ld/testsuite/ld-aarch64/emit-relocs-558-overflow.d | 4 ++ ld/testsuite/ld-aarch64/emit-relocs-558-overflow.s | 11 +++++ ld/testsuite/ld-aarch64/emit-relocs-558.d | 7 +++ ld/testsuite/ld-aarch64/emit-relocs-558.s | 12 +++++ ld/testsuite/ld-aarch64/emit-relocs-559.d | 9 ++++ ld/testsuite/ld-aarch64/emit-relocs-559.s | 19 ++++++++ 53 files changed, 615 insertions(+), 4 deletions(-) create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-112-overflow.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-112-overflow.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-112.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-112.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-113.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-113.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-114-overflow.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-114-overflow.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-114.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-114.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-115.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-115.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-116-overflow.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-116-overflow.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-116.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-116.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-117.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-117.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-118-overflow.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-118-overflow.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-118.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-118.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-119.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-119.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-552-overflow.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-552-overflow.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-552.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-552.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-553.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-553.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-554-overflow.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-554-overflow.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-554.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-554.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-555.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-555.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-556-overflow.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-556-overflow.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-556.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-556.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-557.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-557.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-558-overflow.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-558-overflow.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-558.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-558.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-559.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-559.s diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 32881d8..b88eb6c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,6 +1,23 @@ 2018-03-28 Renlin Li PR ld/22970 + * elfnn-aarch64.c (IS_AARCH64_TLS_RELOC): Add cases for + BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, + BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC, + BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, + BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC, + BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, + BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC, + BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, + BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC. + (elfNN_aarch64_final_link_relocate): Support new relocations. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Support new + relocations. + (_bfd_aarch64_elf_resolve_relocation): Support new relocations. + +2018-03-28 Renlin Li + + PR ld/22970 * reloc.c: Add BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12 BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC, BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index d6a215e..3ccca77 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -201,6 +201,14 @@ || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12 \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12 \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC \ + || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12 \ + || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC \ + || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12 \ + || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC \ + || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12 \ + || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC \ + || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12 \ + || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0 \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1 \ @@ -5830,6 +5838,14 @@ bad_ifunc_reloc: case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC: case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c index 4fa5682..08e7cd9 100644 --- a/bfd/elfxx-aarch64.c +++ b/bfd/elfxx-aarch64.c @@ -285,11 +285,18 @@ _bfd_aarch64_elf_put_addend (bfd *abfd, case BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC: case BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12: case BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC: if (old_addend & ((1 << howto->rightshift) - 1)) return bfd_reloc_overflow; /* Used for ldr*|str* rt, [rn, #uimm12] to provide the low order - 12 bits of the page offset following BFD_RELOC_AARCH64_ADR_HI21_PCREL - which computes the (pc-relative) page base. */ + 12 bits address offset. */ contents = reencode_ldst_pos_imm (contents, addend); break; @@ -457,6 +464,14 @@ _bfd_aarch64_elf_resolve_relocation (bfd_reloc_code_real_type r_type, case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1: case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC: case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2: + case BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC: + case BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12: + case BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC: value = value + addend; break; diff --git a/ld/ChangeLog b/ld/ChangeLog index 5f34819..6b8ffdb 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,56 @@ +2018-03-23 Renlin Li + + PR ld/22970 + * testsuite/ld-aarch64/aarch64-elf.exp: Update to run new tests. + * testsuite/ld-aarch64/emit-relocs-552-overflow.d: New. + * testsuite/ld-aarch64/emit-relocs-552-overflow.s: New. + * testsuite/ld-aarch64/emit-relocs-552.d: New. + * testsuite/ld-aarch64/emit-relocs-552.s: New. + * testsuite/ld-aarch64/emit-relocs-553.d: New. + * testsuite/ld-aarch64/emit-relocs-553.s: New. + * testsuite/ld-aarch64/emit-relocs-554-overflow.d: New. + * testsuite/ld-aarch64/emit-relocs-554-overflow.s: New. + * testsuite/ld-aarch64/emit-relocs-554.d: New. + * testsuite/ld-aarch64/emit-relocs-554.s: New. + * testsuite/ld-aarch64/emit-relocs-555.d: New. + * testsuite/ld-aarch64/emit-relocs-555.s: New. + * testsuite/ld-aarch64/emit-relocs-556-overflow.d: New. + * testsuite/ld-aarch64/emit-relocs-556-overflow.s: New. + * testsuite/ld-aarch64/emit-relocs-556.d: New. + * testsuite/ld-aarch64/emit-relocs-556.s: New. + * testsuite/ld-aarch64/emit-relocs-557.d: New. + * testsuite/ld-aarch64/emit-relocs-557.s: New. + * testsuite/ld-aarch64/emit-relocs-558-overflow.d: New. + * testsuite/ld-aarch64/emit-relocs-558-overflow.s: New. + * testsuite/ld-aarch64/emit-relocs-558.d: New. + * testsuite/ld-aarch64/emit-relocs-558.s: New. + * testsuite/ld-aarch64/emit-relocs-559.d: New. + * testsuite/ld-aarch64/emit-relocs-559.s: New. + * testsuite/ld-aarch64/emit-relocs-112-overflow.d: New. + * testsuite/ld-aarch64/emit-relocs-112-overflow.s: New. + * testsuite/ld-aarch64/emit-relocs-112.d: New. + * testsuite/ld-aarch64/emit-relocs-112.s: New. + * testsuite/ld-aarch64/emit-relocs-113.d: New. + * testsuite/ld-aarch64/emit-relocs-113.s: New. + * testsuite/ld-aarch64/emit-relocs-114-overflow.d: New. + * testsuite/ld-aarch64/emit-relocs-114-overflow.s: New. + * testsuite/ld-aarch64/emit-relocs-114.d: New. + * testsuite/ld-aarch64/emit-relocs-114.s: New. + * testsuite/ld-aarch64/emit-relocs-115.d: New. + * testsuite/ld-aarch64/emit-relocs-115.s: New. + * testsuite/ld-aarch64/emit-relocs-116-overflow.d: New. + * testsuite/ld-aarch64/emit-relocs-116-overflow.s: New. + * testsuite/ld-aarch64/emit-relocs-116.d: New. + * testsuite/ld-aarch64/emit-relocs-116.s: New. + * testsuite/ld-aarch64/emit-relocs-117.d: New. + * testsuite/ld-aarch64/emit-relocs-117.s: New. + * testsuite/ld-aarch64/emit-relocs-118-overflow.d: New. + * testsuite/ld-aarch64/emit-relocs-118-overflow.s: New. + * testsuite/ld-aarch64/emit-relocs-118.d: New. + * testsuite/ld-aarch64/emit-relocs-118.s: New. + * testsuite/ld-aarch64/emit-relocs-119.d: New. + * testsuite/ld-aarch64/emit-relocs-119.s: New. + 2018-03-28 Eric Botcazou PR ld/22972 diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp index de99a8b..1bbc064 100644 --- a/ld/testsuite/ld-aarch64/aarch64-elf.exp +++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp @@ -99,8 +99,22 @@ run_dump_test "emit-relocs-89" run_dump_test "emit-relocs-90" run_dump_test "emit-relocs-90-overflow" run_dump_test "emit-relocs-92" -run_dump_test_lp64 "emit-relocs-257" -run_dump_test_lp64 "emit-relocs-257-be" + +run_dump_test "emit-relocs-112" +run_dump_test "emit-relocs-112-overflow" +run_dump_test "emit-relocs-113" +run_dump_test "emit-relocs-114" +run_dump_test "emit-relocs-114-overflow" +run_dump_test "emit-relocs-115" +run_dump_test "emit-relocs-116" +run_dump_test "emit-relocs-116-overflow" +run_dump_test "emit-relocs-117" +run_dump_test "emit-relocs-118" +run_dump_test "emit-relocs-118-overflow" +run_dump_test "emit-relocs-119" + +run_dump_test "emit-relocs-257" +run_dump_test "emit-relocs-257-be" # 258 is tested in 257 # 259 is tested in 257 run_dump_test_lp64 "emit-relocs-258-dyn-bad" @@ -197,6 +211,18 @@ run_dump_test_lp64 "emit-relocs-536" run_dump_test_lp64 "emit-relocs-537" run_dump_test_lp64 "emit-relocs-537-overflow" run_dump_test_lp64 "emit-relocs-538" +run_dump_test_lp64 "emit-relocs-552" +run_dump_test_lp64 "emit-relocs-552-overflow" +run_dump_test_lp64 "emit-relocs-553" +run_dump_test_lp64 "emit-relocs-554" +run_dump_test_lp64 "emit-relocs-554-overflow" +run_dump_test_lp64 "emit-relocs-555" +run_dump_test_lp64 "emit-relocs-556" +run_dump_test_lp64 "emit-relocs-556-overflow" +run_dump_test_lp64 "emit-relocs-557" +run_dump_test_lp64 "emit-relocs-558" +run_dump_test_lp64 "emit-relocs-558-overflow" +run_dump_test_lp64 "emit-relocs-559" run_dump_test "reloc-overflow-bad" diff --git a/ld/testsuite/ld-aarch64/emit-relocs-112-overflow.d b/ld/testsuite/ld-aarch64/emit-relocs-112-overflow.d new file mode 100644 index 0000000..b66812b --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-112-overflow.d @@ -0,0 +1,5 @@ +#source: emit-relocs-552-overflow.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#error: .*\(.text\+0x\d+\): relocation truncated to fit: R_AARCH64_P32_TLSLE_LDST8_TPREL_LO12 against symbol `v2' .* diff --git a/ld/testsuite/ld-aarch64/emit-relocs-112-overflow.s b/ld/testsuite/ld-aarch64/emit-relocs-112-overflow.s new file mode 100644 index 0000000..904ab2f --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-112-overflow.s @@ -0,0 +1,11 @@ + .global v1 + .size v1, 4096 + .global v2 + .section .tdata,"awT",%progbits +v1: + .zero 4096 +v2: + .word 0xcafecafe + + .text + ldrsb x22, [x1, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-112.d b/ld/testsuite/ld-aarch64/emit-relocs-112.d new file mode 100644 index 0000000..8379cf2 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-112.d @@ -0,0 +1,8 @@ +#source: emit-relocs-552.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#... +00010000 <.text>: + 10000: 39803115 ldrsb x21, \[x8, #12\] + 10000: R_AARCH64_P32_TLSLE_LDST8_TPREL_LO12 v2 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-112.s b/ld/testsuite/ld-aarch64/emit-relocs-112.s new file mode 100644 index 0000000..6575db3 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-112.s @@ -0,0 +1,10 @@ + .global v1 + .global v2 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .word 0xcafecafe + + .text + ldrsb x21, [x8, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-113.d b/ld/testsuite/ld-aarch64/emit-relocs-113.d new file mode 100644 index 0000000..60e40e6 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-113.d @@ -0,0 +1,10 @@ +#source: emit-relocs-553.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#... +00010000 <.text>: + 10000: 3980309d ldrsb x29, \[x4, #12\] + 10000: R_AARCH64_P32_TLSLE_LDST8_TPREL_LO12_NC v2 + 10004: 398040f2 ldrsb x18, \[x7, #16\] + 10004: R_AARCH64_P32_TLSLE_LDST8_TPREL_LO12_NC v3 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-113.s b/ld/testsuite/ld-aarch64/emit-relocs-113.s new file mode 100644 index 0000000..f910cdb --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-113.s @@ -0,0 +1,17 @@ + .global v1 + .global v2 + .size v2, 4100 + .global v3 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .zero 4100 +v3: + .word 0xcafecafe + + .text + ldrsb x29, [x4, #:tprel_lo12_nc:v2] + + # should not issue overflow error. + ldrsb x18, [x7, #:tprel_lo12_nc:v3] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-114-overflow.d b/ld/testsuite/ld-aarch64/emit-relocs-114-overflow.d new file mode 100644 index 0000000..5926173 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-114-overflow.d @@ -0,0 +1,5 @@ +#source: emit-relocs-554-overflow.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#error: .*\(.text\+0x\d+\): relocation truncated to fit: R_AARCH64_P32_TLSLE_LDST16_TPREL_LO12 against symbol `v2' .* diff --git a/ld/testsuite/ld-aarch64/emit-relocs-114-overflow.s b/ld/testsuite/ld-aarch64/emit-relocs-114-overflow.s new file mode 100644 index 0000000..83ca3af --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-114-overflow.s @@ -0,0 +1,11 @@ + .global v1 + .size v1, 4096 + .global v2 + .section .tdata,"awT",%progbits +v1: + .zero 4096 +v2: + .word 0xcafecafe + + .text + ldrsh x2, [x17, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-114.d b/ld/testsuite/ld-aarch64/emit-relocs-114.d new file mode 100644 index 0000000..96a2501 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-114.d @@ -0,0 +1,8 @@ +#source: emit-relocs-554.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#... +00010000 <.text>: + 10000: 798018eb ldrsh x11, \[x7, #12\] + 10000: R_AARCH64_P32_TLSLE_LDST16_TPREL_LO12 v2 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-114.s b/ld/testsuite/ld-aarch64/emit-relocs-114.s new file mode 100644 index 0000000..8ad7afb --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-114.s @@ -0,0 +1,10 @@ + .global v1 + .global v2 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .word 0xcafecafe + + .text + ldrsh x11, [x7, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-115.d b/ld/testsuite/ld-aarch64/emit-relocs-115.d new file mode 100644 index 0000000..f436d32 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-115.d @@ -0,0 +1,10 @@ +#source: emit-relocs-555.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#... +00010000 <.text>: + 10000: 798019d6 ldrsh x22, \[x14, #12\] + 10000: R_AARCH64_P32_TLSLE_LDST16_TPREL_LO12_NC v2 + 10004: 79a72a28 ldrsh x8, \[x17, #5012\] + 10004: R_AARCH64_P32_TLSLE_LDST16_TPREL_LO12_NC v3 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-115.s b/ld/testsuite/ld-aarch64/emit-relocs-115.s new file mode 100644 index 0000000..b21e6ce --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-115.s @@ -0,0 +1,17 @@ + .global v1 + .global v2 + .size v2, 5000 + .global v3 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .zero 5000 +v3: + .word 0xcafecafe + + .text + ldrsh x22, [x14, #:tprel_lo12_nc:v2] + + # should not issue overflow error. + ldrsh x8, [x17, #:tprel_lo12_nc:v3] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-116-overflow.d b/ld/testsuite/ld-aarch64/emit-relocs-116-overflow.d new file mode 100644 index 0000000..f060c17 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-116-overflow.d @@ -0,0 +1,5 @@ +#source: emit-relocs-556-overflow.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#error: .*\(.text\+0x\d+\): relocation truncated to fit: R_AARCH64_P32_TLSLE_LDST32_TPREL_LO12 against symbol `v2' .* diff --git a/ld/testsuite/ld-aarch64/emit-relocs-116-overflow.s b/ld/testsuite/ld-aarch64/emit-relocs-116-overflow.s new file mode 100644 index 0000000..9b8e5d7 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-116-overflow.s @@ -0,0 +1,11 @@ + .global v1 + .size v1, 4096 + .global v2 + .section .tdata,"awT",%progbits +v1: + .zero 4096 +v2: + .word 0xcafecafe + + .text + ldrsw x2, [x17, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-116.d b/ld/testsuite/ld-aarch64/emit-relocs-116.d new file mode 100644 index 0000000..bd2d6aa --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-116.d @@ -0,0 +1,8 @@ +#source: emit-relocs-556.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#... +00010000 <.text>: + 10000: b9800e61 ldrsw x1, \[x19, #12\] + 10000: R_AARCH64_P32_TLSLE_LDST32_TPREL_LO12 v2 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-116.s b/ld/testsuite/ld-aarch64/emit-relocs-116.s new file mode 100644 index 0000000..bb08315 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-116.s @@ -0,0 +1,10 @@ + .global v1 + .global v2 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .word 0xcafecafe + + .text + ldrsw x1, [x19, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-117.d b/ld/testsuite/ld-aarch64/emit-relocs-117.d new file mode 100644 index 0000000..a3bb606 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-117.d @@ -0,0 +1,10 @@ +#source: emit-relocs-557.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#... +00010000 <.text>: + 10000: b9800dd6 ldrsw x22, \[x14, #12\] + 10000: R_AARCH64_P32_TLSLE_LDST32_TPREL_LO12_NC v2 + 10004: b9800e28 ldrsw x8, \[x17, #12\] + 10004: R_AARCH64_P32_TLSLE_LDST32_TPREL_LO12_NC v3 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-117.s b/ld/testsuite/ld-aarch64/emit-relocs-117.s new file mode 100644 index 0000000..88dcdfa --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-117.s @@ -0,0 +1,17 @@ + .global v1 + .global v2 + .size v2, 16384 + .global v3 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .zero 16384 +v3: + .word 0xcafecafe + + .text + ldrsw x22, [x14, #:tprel_lo12_nc:v2] + + # should not issue overflow error. + ldrsw x8, [x17, #:tprel_lo12_nc:v3] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-118-overflow.d b/ld/testsuite/ld-aarch64/emit-relocs-118-overflow.d new file mode 100644 index 0000000..1eedac1 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-118-overflow.d @@ -0,0 +1,5 @@ +#source: emit-relocs-558-overflow.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#error: .*\(.text\+0x\d+\): relocation truncated to fit: R_AARCH64_P32_TLSLE_LDST64_TPREL_LO12 against symbol `v2' .* diff --git a/ld/testsuite/ld-aarch64/emit-relocs-118-overflow.s b/ld/testsuite/ld-aarch64/emit-relocs-118-overflow.s new file mode 100644 index 0000000..82dfef6 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-118-overflow.s @@ -0,0 +1,11 @@ + .global v1 + .size v1, 4096 + .global v2 + .section .tdata,"awT",%progbits +v1: + .zero 4096 +v2: + .word 0xcafecafe + + .text + ldr x12, [x13, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-118.d b/ld/testsuite/ld-aarch64/emit-relocs-118.d new file mode 100644 index 0000000..9061974 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-118.d @@ -0,0 +1,8 @@ +#source: emit-relocs-558.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#... +00010000 <.text>: + 10000: f9400920 ldr x0, \[x9, #16\] + 10000: R_AARCH64_P32_TLSLE_LDST64_TPREL_LO12 v2 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-118.s b/ld/testsuite/ld-aarch64/emit-relocs-118.s new file mode 100644 index 0000000..0fe7593 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-118.s @@ -0,0 +1,12 @@ + .global v1 + .global v2 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead + .word 0xdeaddead +v2: + .word 0xcafecafe + .word 0xcafecafe + + .text + ldr x0, [x9, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-119.d b/ld/testsuite/ld-aarch64/emit-relocs-119.d new file mode 100644 index 0000000..20e05eb --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-119.d @@ -0,0 +1,10 @@ +#source: emit-relocs-559.s +#as: -mabi=ilp32 +#ld: -m [aarch64_choose_ilp32_emul] -T relocs-ilp32.ld -e0 --emit-relocs +#objdump: -dr +#... +00010000 <.text>: + 10000: f9400882 ldr x2, \[x4, #16\] + 10000: R_AARCH64_P32_TLSLE_LDST64_TPREL_LO12_NC v2 + 10004: f9400a2e ldr x14, \[x17, #16\] + 10004: R_AARCH64_P32_TLSLE_LDST64_TPREL_LO12_NC v3 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-119.s b/ld/testsuite/ld-aarch64/emit-relocs-119.s new file mode 100644 index 0000000..3548d79 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-119.s @@ -0,0 +1,19 @@ + .global v1 + .global v2 + .size v2, 32768 + .global v3 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead + .word 0xdeaddead +v2: + .zero 32768 +v3: + .word 0xcafecafe + .word 0xcafecafe + + .text + ldr x2, [x4, #:tprel_lo12_nc:v2] + + # should not issue overflow error. + ldr x14, [x17, #:tprel_lo12_nc:v3] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-552-overflow.d b/ld/testsuite/ld-aarch64/emit-relocs-552-overflow.d new file mode 100644 index 0000000..91e7035 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-552-overflow.d @@ -0,0 +1,4 @@ +#source: emit-relocs-552-overflow.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#error: .*\(.text\+0x\d+\): relocation truncated to fit: R_AARCH64_TLSLE_LDST8_TPREL_LO12 against symbol `v2' .* diff --git a/ld/testsuite/ld-aarch64/emit-relocs-552-overflow.s b/ld/testsuite/ld-aarch64/emit-relocs-552-overflow.s new file mode 100644 index 0000000..904ab2f --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-552-overflow.s @@ -0,0 +1,11 @@ + .global v1 + .size v1, 4096 + .global v2 + .section .tdata,"awT",%progbits +v1: + .zero 4096 +v2: + .word 0xcafecafe + + .text + ldrsb x22, [x1, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-552.d b/ld/testsuite/ld-aarch64/emit-relocs-552.d new file mode 100644 index 0000000..3c39139 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-552.d @@ -0,0 +1,7 @@ +#source: emit-relocs-552.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#... +0000000000010000 <.text>: + 10000: 39805115 ldrsb x21, \[x8, #20\] + 10000: R_AARCH64_TLSLE_LDST8_TPREL_LO12 v2 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-552.s b/ld/testsuite/ld-aarch64/emit-relocs-552.s new file mode 100644 index 0000000..6575db3 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-552.s @@ -0,0 +1,10 @@ + .global v1 + .global v2 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .word 0xcafecafe + + .text + ldrsb x21, [x8, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-553.d b/ld/testsuite/ld-aarch64/emit-relocs-553.d new file mode 100644 index 0000000..08d1672 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-553.d @@ -0,0 +1,9 @@ +#source: emit-relocs-553.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#... +0000000000010000 <.text>: + 10000: 3980509d ldrsb x29, \[x4, #20\] + 10000: R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC v2 + 10004: 398060f2 ldrsb x18, \[x7, #24\] + 10004: R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC v3 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-553.s b/ld/testsuite/ld-aarch64/emit-relocs-553.s new file mode 100644 index 0000000..f910cdb --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-553.s @@ -0,0 +1,17 @@ + .global v1 + .global v2 + .size v2, 4100 + .global v3 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .zero 4100 +v3: + .word 0xcafecafe + + .text + ldrsb x29, [x4, #:tprel_lo12_nc:v2] + + # should not issue overflow error. + ldrsb x18, [x7, #:tprel_lo12_nc:v3] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-554-overflow.d b/ld/testsuite/ld-aarch64/emit-relocs-554-overflow.d new file mode 100644 index 0000000..fb520e7 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-554-overflow.d @@ -0,0 +1,4 @@ +#source: emit-relocs-554-overflow.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#error: .*\(.text\+0x\d+\): relocation truncated to fit: R_AARCH64_TLSLE_LDST16_TPREL_LO12 against symbol `v2' .* diff --git a/ld/testsuite/ld-aarch64/emit-relocs-554-overflow.s b/ld/testsuite/ld-aarch64/emit-relocs-554-overflow.s new file mode 100644 index 0000000..83ca3af --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-554-overflow.s @@ -0,0 +1,11 @@ + .global v1 + .size v1, 4096 + .global v2 + .section .tdata,"awT",%progbits +v1: + .zero 4096 +v2: + .word 0xcafecafe + + .text + ldrsh x2, [x17, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-554.d b/ld/testsuite/ld-aarch64/emit-relocs-554.d new file mode 100644 index 0000000..d53338b --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-554.d @@ -0,0 +1,7 @@ +#source: emit-relocs-554.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#... +0000000000010000 <.text>: + 10000: 798028eb ldrsh x11, \[x7, #20\] + 10000: R_AARCH64_TLSLE_LDST16_TPREL_LO12 v2 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-554.s b/ld/testsuite/ld-aarch64/emit-relocs-554.s new file mode 100644 index 0000000..8ad7afb --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-554.s @@ -0,0 +1,10 @@ + .global v1 + .global v2 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .word 0xcafecafe + + .text + ldrsh x11, [x7, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-555.d b/ld/testsuite/ld-aarch64/emit-relocs-555.d new file mode 100644 index 0000000..e866b60 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-555.d @@ -0,0 +1,9 @@ +#source: emit-relocs-555.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#... +0000000000010000 <.text>: + 10000: 798029d6 ldrsh x22, \[x14, #20\] + 10000: R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC v2 + 10004: 79a73a28 ldrsh x8, \[x17, #5020\] + 10004: R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC v3 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-555.s b/ld/testsuite/ld-aarch64/emit-relocs-555.s new file mode 100644 index 0000000..b21e6ce --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-555.s @@ -0,0 +1,17 @@ + .global v1 + .global v2 + .size v2, 5000 + .global v3 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .zero 5000 +v3: + .word 0xcafecafe + + .text + ldrsh x22, [x14, #:tprel_lo12_nc:v2] + + # should not issue overflow error. + ldrsh x8, [x17, #:tprel_lo12_nc:v3] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-556-overflow.d b/ld/testsuite/ld-aarch64/emit-relocs-556-overflow.d new file mode 100644 index 0000000..2c789c1 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-556-overflow.d @@ -0,0 +1,4 @@ +#source: emit-relocs-556-overflow.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#error: .*\(.text\+0x\d+\): relocation truncated to fit: R_AARCH64_TLSLE_LDST32_TPREL_LO12 against symbol `v2' .* diff --git a/ld/testsuite/ld-aarch64/emit-relocs-556-overflow.s b/ld/testsuite/ld-aarch64/emit-relocs-556-overflow.s new file mode 100644 index 0000000..9b8e5d7 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-556-overflow.s @@ -0,0 +1,11 @@ + .global v1 + .size v1, 4096 + .global v2 + .section .tdata,"awT",%progbits +v1: + .zero 4096 +v2: + .word 0xcafecafe + + .text + ldrsw x2, [x17, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-556.d b/ld/testsuite/ld-aarch64/emit-relocs-556.d new file mode 100644 index 0000000..9a35dcf --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-556.d @@ -0,0 +1,7 @@ +#source: emit-relocs-556.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#... +0000000000010000 <.text>: + 10000: b9801661 ldrsw x1, \[x19, #20\] + 10000: R_AARCH64_TLSLE_LDST32_TPREL_LO12 v2 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-556.s b/ld/testsuite/ld-aarch64/emit-relocs-556.s new file mode 100644 index 0000000..bb08315 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-556.s @@ -0,0 +1,10 @@ + .global v1 + .global v2 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .word 0xcafecafe + + .text + ldrsw x1, [x19, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-557.d b/ld/testsuite/ld-aarch64/emit-relocs-557.d new file mode 100644 index 0000000..286f448 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-557.d @@ -0,0 +1,9 @@ +#source: emit-relocs-557.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#... +0000000000010000 <.text>: + 10000: b98015d6 ldrsw x22, \[x14, #20\] + 10000: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC v2 + 10004: b9801628 ldrsw x8, \[x17, #20\] + 10004: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC v3 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-557.s b/ld/testsuite/ld-aarch64/emit-relocs-557.s new file mode 100644 index 0000000..88dcdfa --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-557.s @@ -0,0 +1,17 @@ + .global v1 + .global v2 + .size v2, 16384 + .global v3 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead +v2: + .zero 16384 +v3: + .word 0xcafecafe + + .text + ldrsw x22, [x14, #:tprel_lo12_nc:v2] + + # should not issue overflow error. + ldrsw x8, [x17, #:tprel_lo12_nc:v3] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-558-overflow.d b/ld/testsuite/ld-aarch64/emit-relocs-558-overflow.d new file mode 100644 index 0000000..1746b629 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-558-overflow.d @@ -0,0 +1,4 @@ +#source: emit-relocs-558-overflow.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#error: .*\(.text\+0x\d+\): relocation truncated to fit: R_AARCH64_TLSLE_LDST64_TPREL_LO12 against symbol `v2' .* diff --git a/ld/testsuite/ld-aarch64/emit-relocs-558-overflow.s b/ld/testsuite/ld-aarch64/emit-relocs-558-overflow.s new file mode 100644 index 0000000..82dfef6 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-558-overflow.s @@ -0,0 +1,11 @@ + .global v1 + .size v1, 4096 + .global v2 + .section .tdata,"awT",%progbits +v1: + .zero 4096 +v2: + .word 0xcafecafe + + .text + ldr x12, [x13, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-558.d b/ld/testsuite/ld-aarch64/emit-relocs-558.d new file mode 100644 index 0000000..5bbee74 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-558.d @@ -0,0 +1,7 @@ +#source: emit-relocs-558.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#... +0000000000010000 <.text>: + 10000: f9400d20 ldr x0, \[x9, #24\] + 10000: R_AARCH64_TLSLE_LDST64_TPREL_LO12 v2 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-558.s b/ld/testsuite/ld-aarch64/emit-relocs-558.s new file mode 100644 index 0000000..0fe7593 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-558.s @@ -0,0 +1,12 @@ + .global v1 + .global v2 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead + .word 0xdeaddead +v2: + .word 0xcafecafe + .word 0xcafecafe + + .text + ldr x0, [x9, #:tprel_lo12:v2] diff --git a/ld/testsuite/ld-aarch64/emit-relocs-559.d b/ld/testsuite/ld-aarch64/emit-relocs-559.d new file mode 100644 index 0000000..b44d1b3 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-559.d @@ -0,0 +1,9 @@ +#source: emit-relocs-559.s +#ld: -T relocs.ld -e0 --emit-relocs +#objdump: -dr +#... +0000000000010000 <.text>: + 10000: f9400c82 ldr x2, \[x4, #24\] + 10000: R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC v2 + 10004: f9400e2e ldr x14, \[x17, #24\] + 10004: R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC v3 diff --git a/ld/testsuite/ld-aarch64/emit-relocs-559.s b/ld/testsuite/ld-aarch64/emit-relocs-559.s new file mode 100644 index 0000000..3548d79 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-559.s @@ -0,0 +1,19 @@ + .global v1 + .global v2 + .size v2, 32768 + .global v3 + .section .tdata,"awT",%progbits +v1: + .word 0xdeaddead + .word 0xdeaddead +v2: + .zero 32768 +v3: + .word 0xcafecafe + .word 0xcafecafe + + .text + ldr x2, [x4, #:tprel_lo12_nc:v2] + + # should not issue overflow error. + ldr x14, [x17, #:tprel_lo12_nc:v3] -- 2.7.4