diff options
author | Renlin Li <renlin.li@arm.com> | 2018-03-28 18:06:05 +0100 |
---|---|---|
committer | Renlin Li <renlin.li@arm.com> | 2018-03-28 18:08:51 +0100 |
commit | e04ef02299ad4aae08da857e8535d98e8643a274 (patch) | |
tree | 97641db4c9e6afb079d360cee7c57e8f135d55a1 /ld/testsuite/ld-aarch64 | |
parent | 84f1b9fb081372a726fd70dfd8258a707833caef (diff) | |
download | binutils-gdb-e04ef02299ad4aae08da857e8535d98e8643a274.tar.gz |
[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.
Diffstat (limited to 'ld/testsuite/ld-aarch64')
49 files changed, 512 insertions, 2 deletions
diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp index de99a8b233b..1bbc0648578 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 00000000000..b66812b740e --- /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 00000000000..904ab2fa813 --- /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 00000000000..8379cf211fe --- /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 00000000000..6575db34975 --- /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 00000000000..60e40e6ba2b --- /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 00000000000..f910cdbb52a --- /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 00000000000..59261734dc2 --- /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 00000000000..83ca3af1cd7 --- /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 00000000000..96a2501d058 --- /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 00000000000..8ad7afbc2a4 --- /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 00000000000..f436d32c61f --- /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 00000000000..b21e6ce4f9e --- /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 00000000000..f060c1731e1 --- /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 00000000000..9b8e5d778cd --- /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 00000000000..bd2d6aabf48 --- /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 00000000000..bb083154fd6 --- /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 00000000000..a3bb606bf59 --- /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 00000000000..88dcdfad38b --- /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 00000000000..1eedac19d29 --- /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 00000000000..82dfef67077 --- /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 00000000000..90619742850 --- /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 00000000000..0fe7593f9c3 --- /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 00000000000..20e05eb81bf --- /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 00000000000..3548d79f935 --- /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 00000000000..91e70359739 --- /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 00000000000..904ab2fa813 --- /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 00000000000..3c39139fdae --- /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 00000000000..6575db34975 --- /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 00000000000..08d1672ac4d --- /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 00000000000..f910cdbb52a --- /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 00000000000..fb520e75aea --- /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 00000000000..83ca3af1cd7 --- /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 00000000000..d53338b61e3 --- /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 00000000000..8ad7afbc2a4 --- /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 00000000000..e866b6034c4 --- /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 00000000000..b21e6ce4f9e --- /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 00000000000..2c789c1012f --- /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 00000000000..9b8e5d778cd --- /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 00000000000..9a35dcff8ff --- /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 00000000000..bb083154fd6 --- /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 00000000000..286f44895e9 --- /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 00000000000..88dcdfad38b --- /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 00000000000..1746b629d8a --- /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 00000000000..82dfef67077 --- /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 00000000000..5bbee742710 --- /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 00000000000..0fe7593f9c3 --- /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 00000000000..b44d1b3ece2 --- /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 00000000000..3548d79f935 --- /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] |