diff options
author | Jinyang He <hejinyang@loongson.cn> | 2023-09-05 10:31:28 +0800 |
---|---|---|
committer | liuzhensong <liuzhensong@loongson.cn> | 2024-02-27 11:54:34 +0800 |
commit | b98da8583a500419c976bcfd56b80b02b1afceff (patch) | |
tree | 9f64bffba67e7b1da9b3dd97ea8ca4c55ca38f51 /ld | |
parent | 6ae2890f3b16a3d558683dd1191389e3bd5a1c58 (diff) | |
download | gdb-b98da8583a500419c976bcfd56b80b02b1afceff.zip gdb-b98da8583a500419c976bcfd56b80b02b1afceff.tar.gz gdb-b98da8583a500419c976bcfd56b80b02b1afceff.tar.bz2 |
LoongArch: ld: Fix other pop relocs overflow check and add tests
Add reloc_unsign_bits() to fix others sop_pop relocs overflow check.
Then add over/underflow tests for relocs B*, SOP_POP* and PCREL20_S2.
bfd/ChangeLog:
* bfd/elfxx-loongarch.c: Add reloc_unsign_bits().
ld/ChangeLog:
* ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp: Add tests.
* ld/testsuite/ld-loongarch-elf/abi1_max_imm.dd: New test.
* ld/testsuite/ld-loongarch-elf/abi1_max_imm.s: New test.
* ld/testsuite/ld-loongarch-elf/abi1_sops.s: New test.
* ld/testsuite/ld-loongarch-elf/abi2_max_imm.s: New test.
* ld/testsuite/ld-loongarch-elf/abi2_overflows.s: New test.
* ld/testsuite/ld-loongarch-elf/max_imm_b16.d: New test.
* ld/testsuite/ld-loongarch-elf/max_imm_b21.d: New test.
* ld/testsuite/ld-loongarch-elf/max_imm_b26.d: New test.
* ld/testsuite/ld-loongarch-elf/max_imm_pcrel20.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_b16.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_b21.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_b26.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_pcrel20.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_s_0_10_10_16_s2.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_s_0_5_10_16_s2.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_s_10_12.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_s_10_16.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_s_10_16_s2.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_s_10_5.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_s_5_20.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_u.d: New test.
* ld/testsuite/ld-loongarch-elf/overflow_u_10_12.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_b16.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_b21.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_b26.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_pcrel20.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_s_0_10_10_16_s2.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_s_0_5_10_16_s2.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_s_10_12.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_s_10_16.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_s_10_16_s2.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_s_10_5.d: New test.
* ld/testsuite/ld-loongarch-elf/underflow_s_5_20.d: New test.
Diffstat (limited to 'ld')
34 files changed, 319 insertions, 0 deletions
diff --git a/ld/testsuite/ld-loongarch-elf/abi1_max_imm.dd b/ld/testsuite/ld-loongarch-elf/abi1_max_imm.dd new file mode 100644 index 0000000..c852714 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/abi1_max_imm.dd @@ -0,0 +1,18 @@ +#... +.*00003c00.* +.*00004000.* +.*001ffc00.* +.*00200000.* +.*01fffc00.* +.*02000000.* +.*01fffc00.* +.*02000000.* +.*03fffc0f.* +.*00000010.* +.*03fffdff.* +.*00000200.* +.*00ffffe0.* +.*01000000.* +.*003ffc00.* +.*ffffffff.* +#pass diff --git a/ld/testsuite/ld-loongarch-elf/abi1_max_imm.s b/ld/testsuite/ld-loongarch-elf/abi1_max_imm.s new file mode 100644 index 0000000..02507f1 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/abi1_max_imm.s @@ -0,0 +1,39 @@ +.macro sign_check reloc_name reloc_bits + .reloc off, R_LARCH_SOP_PUSH_ABSOLUTE, (1 << (\reloc_bits - 1)) - 1 + .reloc off, \reloc_name + .word 0 + .set off, off + 4 + .reloc off, R_LARCH_SOP_PUSH_ABSOLUTE, -(1 << (\reloc_bits - 1)) + .reloc off, \reloc_name + .word 0 + .set off, off + 4 +.endm + +.macro sign_check_s2 reloc_name reloc_bits + .reloc off, R_LARCH_SOP_PUSH_ABSOLUTE, ((1 << (\reloc_bits - 1)) - 1) << 2 + .reloc off, \reloc_name + .word 0 + .set off, off + 4 + .reloc off, R_LARCH_SOP_PUSH_ABSOLUTE, (-(1 << (\reloc_bits - 1))) << 2 + .reloc off, \reloc_name + .word 0 + .set off, off + 4 +.endm + +.macro unsign_check reloc_name reloc_bits + .reloc off, R_LARCH_SOP_PUSH_ABSOLUTE, (1 << \reloc_bits) - 1 + .reloc off, \reloc_name + .word 0 + .set off, off + 4 +.endm + +.set off, 0 +sign_check R_LARCH_SOP_POP_32_S_10_5 5 +sign_check R_LARCH_SOP_POP_32_S_10_12 12 +sign_check R_LARCH_SOP_POP_32_S_10_16 16 +sign_check_s2 R_LARCH_SOP_POP_32_S_10_16_S2 16 +sign_check_s2 R_LARCH_SOP_POP_32_S_0_5_10_16_S2 21 +sign_check_s2 R_LARCH_SOP_POP_32_S_0_10_10_16_S2 26 +sign_check R_LARCH_SOP_POP_32_S_5_20 20 +unsign_check R_LARCH_SOP_POP_32_U_10_12 12 +unsign_check R_LARCH_SOP_POP_32_U 32 diff --git a/ld/testsuite/ld-loongarch-elf/abi1_sops.s b/ld/testsuite/ld-loongarch-elf/abi1_sops.s new file mode 100644 index 0000000..34f2d59 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/abi1_sops.s @@ -0,0 +1,43 @@ +.macro sign_check reloc_sym reloc_name reloc_bits + .ifdef \reloc_sym + .ifdef overflow + .reloc 0, R_LARCH_SOP_PUSH_ABSOLUTE, 1 << (\reloc_bits - 1) + .reloc 0, \reloc_name + .else + .reloc 0, R_LARCH_SOP_PUSH_ABSOLUTE, -(1 << (\reloc_bits - 1)) - 1 + .reloc 0, \reloc_name + .endif + .word 0 + .endif +.endm + +.macro sign_check_s2 reloc_sym reloc_name reloc_bits + .ifdef \reloc_sym + .ifdef overflow + .reloc 0, R_LARCH_SOP_PUSH_ABSOLUTE, (1 << (\reloc_bits - 1)) << 2 + .reloc 0, \reloc_name + .else + .reloc 0, R_LARCH_SOP_PUSH_ABSOLUTE, (-(1 << (\reloc_bits - 1)) - 1) << 2 + .reloc 0, \reloc_name + .endif + .word 0 + .endif +.endm + +.macro unsign_check reloc_sym reloc_name reloc_bits + .ifdef \reloc_sym + .reloc 0, R_LARCH_SOP_PUSH_ABSOLUTE, 1 << \reloc_bits + .reloc 0, \reloc_name + .word 0 + .endif +.endm + +sign_check s_10_5 R_LARCH_SOP_POP_32_S_10_5 5 +sign_check s_10_12 R_LARCH_SOP_POP_32_S_10_12 12 +sign_check s_10_16 R_LARCH_SOP_POP_32_S_10_16 16 +sign_check_s2 s_10_16_s2 R_LARCH_SOP_POP_32_S_10_16_S2 16 +sign_check_s2 s_0_5_10_16_s2 R_LARCH_SOP_POP_32_S_0_5_10_16_S2 21 +sign_check_s2 s_0_10_10_16_s2 R_LARCH_SOP_POP_32_S_0_10_10_16_S2 26 +sign_check s_5_20 R_LARCH_SOP_POP_32_S_5_20 20 +unsign_check u_10_12 R_LARCH_SOP_POP_32_U_10_12 12 +unsign_check u R_LARCH_SOP_POP_32_U 32 diff --git a/ld/testsuite/ld-loongarch-elf/abi2_max_imm.s b/ld/testsuite/ld-loongarch-elf/abi2_max_imm.s new file mode 100644 index 0000000..f1bc386 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/abi2_max_imm.s @@ -0,0 +1,24 @@ + .text +.ifdef b16 + beq $a0, $a1, low + beq $a0, $a1, high +.endif +.ifdef b21 + beqz $a0, low + beqz $a0, high +.endif +.ifdef b26 + b low + b high +.endif +.ifdef pcrel20 + .reloc 0, R_LARCH_PCREL20_S2, low + pcaddi $a0, 0 + .reloc 4, R_LARCH_PCREL20_S2, high + pcaddi $a0, 0 +.endif + + .section ".low" +low: nop + .section ".high" +high: nop diff --git a/ld/testsuite/ld-loongarch-elf/abi2_overflows.s b/ld/testsuite/ld-loongarch-elf/abi2_overflows.s new file mode 100644 index 0000000..1c25bd8 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/abi2_overflows.s @@ -0,0 +1,24 @@ + .text + +.set idx, 0 +.ifdef underflow + nop + .set idx, 4 +.endif + +.ifdef b16 + beq $a0, $a1, local_sym +.endif +.ifdef b21 + beqz $a0, local_sym +.endif +.ifdef b26 + b local_sym +.endif +.ifdef pcrel20 + .reloc idx, R_LARCH_PCREL20_S2, local_sym + pcaddi $a0, 0 +.endif + + .section ".local_sym" +local_sym: nop diff --git a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp index 3ae0d9d..2ad783f 100644 --- a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp +++ b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp @@ -35,6 +35,22 @@ if [istarget "loongarch64-*-*"] { run_dump_test "anno-sym" run_dump_test "pcala64" run_dump_test "tls-le" + run_dump_test "overflow_s_10_5" + run_dump_test "overflow_s_10_12" + run_dump_test "overflow_s_10_16" + run_dump_test "overflow_s_10_16_s2" + run_dump_test "overflow_s_0_5_10_16_s2" + run_dump_test "overflow_s_0_10_10_16_s2" + run_dump_test "overflow_s_5_20" + run_dump_test "overflow_u_10_12" + run_dump_test "overflow_u" + run_dump_test "underflow_s_10_5" + run_dump_test "underflow_s_10_12" + run_dump_test "underflow_s_10_16" + run_dump_test "underflow_s_10_16_s2" + run_dump_test "underflow_s_0_5_10_16_s2" + run_dump_test "underflow_s_0_10_10_16_s2" + run_dump_test "underflow_s_5_20" } if [istarget "loongarch32-*-*"] { @@ -95,6 +111,16 @@ if [istarget "loongarch64-*-*"] { {} \ "medium-call" \ ] \ + [list \ + "abi1_max_imm" \ + "-e 0x0" "" \ + "" \ + {abi1_max_imm.s} \ + [list \ + [list objdump -D abi1_max_imm.dd] \ + ] \ + "abi1_max_imm" \ + ] \ ] } @@ -108,3 +134,16 @@ if [istarget "loongarch64-*-*"] { run_dump_test "desc-relax" } } + +run_dump_test "max_imm_b16" +run_dump_test "max_imm_b21" +run_dump_test "max_imm_b26" +run_dump_test "max_imm_pcrel20" +run_dump_test "overflow_b16" +run_dump_test "overflow_b21" +run_dump_test "overflow_b26" +run_dump_test "overflow_pcrel20" +run_dump_test "underflow_b16" +run_dump_test "underflow_b21" +run_dump_test "underflow_b26" +run_dump_test "underflow_pcrel20" diff --git a/ld/testsuite/ld-loongarch-elf/max_imm_b16.d b/ld/testsuite/ld-loongarch-elf/max_imm_b16.d new file mode 100644 index 0000000..2c3f6cd --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/max_imm_b16.d @@ -0,0 +1,9 @@ +#source: abi2_max_imm.s +#as: --defsym b16=1 +#ld: -e 0 -Ttext 0x20000000 --section-start=.low=0x1ffe0000 --section-start=.high=0x20020000 +#objdump: -s + +#... +Contents of section .text: + 20000000 8500005a 85fcff59.* +#pass diff --git a/ld/testsuite/ld-loongarch-elf/max_imm_b21.d b/ld/testsuite/ld-loongarch-elf/max_imm_b21.d new file mode 100644 index 0000000..5861fb4 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/max_imm_b21.d @@ -0,0 +1,9 @@ +#source: abi2_max_imm.s +#as: --defsym b21=1 +#ld: -e 0 -Ttext 0x20000000 --section-start=.low=0x1fc00000 --section-start=.high=0x20400000 +#objdump: -s + +#... +Contents of section .text: + 20000000 90000040 8ffcff43.* +#pass diff --git a/ld/testsuite/ld-loongarch-elf/max_imm_b26.d b/ld/testsuite/ld-loongarch-elf/max_imm_b26.d new file mode 100644 index 0000000..f475ccb --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/max_imm_b26.d @@ -0,0 +1,9 @@ +#source: abi2_max_imm.s +#as: --defsym b26=1 +#ld: -e 0 -Ttext 0x20000000 --section-start=.low=0x18000000 --section-start=.high=0x28000000 +#objdump: -s + +#... +Contents of section .text: + 20000000 00020050 fffdff53.* +#pass diff --git a/ld/testsuite/ld-loongarch-elf/max_imm_pcrel20.d b/ld/testsuite/ld-loongarch-elf/max_imm_pcrel20.d new file mode 100644 index 0000000..4bd9d2f --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/max_imm_pcrel20.d @@ -0,0 +1,9 @@ +#source: abi2_max_imm.s +#as: --defsym pcrel20=1 +#ld: -e 0 -Ttext 0x20000000 --section-start=.low=0x1fe00000 --section-start=.high=0x20200000 +#objdump: -s + +#... +Contents of section .text: + 20000000 04000019 e4ffff18.* +#pass diff --git a/ld/testsuite/ld-loongarch-elf/overflow_b16.d b/ld/testsuite/ld-loongarch-elf/overflow_b16.d new file mode 100644 index 0000000..26cad41 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_b16.d @@ -0,0 +1,4 @@ +#source: abi2_overflows.s +#as: --defsym overflow=1 --defsym b16=1 +#ld: -e 0 --section-start=.local_sym=0x20020000 -Ttext 0x20000000 +#error: .*relocation truncated to fit: R_LARCH_B16 against `local_sym' diff --git a/ld/testsuite/ld-loongarch-elf/overflow_b21.d b/ld/testsuite/ld-loongarch-elf/overflow_b21.d new file mode 100644 index 0000000..826856f --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_b21.d @@ -0,0 +1,4 @@ +#source: abi2_overflows.s +#as: --defsym overflow=1 --defsym b21=1 +#ld: -e 0 --section-start=.local_sym=0x20400000 -Ttext 0x20000000 +#error: .*relocation truncated to fit: R_LARCH_B21 against `local_sym' diff --git a/ld/testsuite/ld-loongarch-elf/overflow_b26.d b/ld/testsuite/ld-loongarch-elf/overflow_b26.d new file mode 100644 index 0000000..474e575 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_b26.d @@ -0,0 +1,4 @@ +#source: abi2_overflows.s +#as: --defsym overflow=1 --defsym b26=1 +#ld: -e 0 --section-start=.local_sym=0x28000000 -Ttext 0x20000000 +#error: .*relocation truncated to fit: R_LARCH_B26 against `local_sym' diff --git a/ld/testsuite/ld-loongarch-elf/overflow_pcrel20.d b/ld/testsuite/ld-loongarch-elf/overflow_pcrel20.d new file mode 100644 index 0000000..420be72 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_pcrel20.d @@ -0,0 +1,4 @@ +#source: abi2_overflows.s +#as: --defsym overflow=1 --defsym pcrel20=1 +#ld: -e 0 --section-start=.local_sym=0x20200000 -Ttext 0x20000000 +#error: .*relocation truncated to fit: R_LARCH_PCREL20_S2 against `local_sym' diff --git a/ld/testsuite/ld-loongarch-elf/overflow_s_0_10_10_16_s2.d b/ld/testsuite/ld-loongarch-elf/overflow_s_0_10_10_16_s2.d new file mode 100644 index 0000000..621054b --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_s_0_10_10_16_s2.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym overflow=1 --defsym s_0_10_10_16_s2=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_0_10_10_16_S2 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/overflow_s_0_5_10_16_s2.d b/ld/testsuite/ld-loongarch-elf/overflow_s_0_5_10_16_s2.d new file mode 100644 index 0000000..348f5ae --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_s_0_5_10_16_s2.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym overflow=1 --defsym s_0_5_10_16_s2=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_0_5_10_16_S2 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/overflow_s_10_12.d b/ld/testsuite/ld-loongarch-elf/overflow_s_10_12.d new file mode 100644 index 0000000..dcadff7 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_s_10_12.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym overflow=1 --defsym s_10_12=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_10_12 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/overflow_s_10_16.d b/ld/testsuite/ld-loongarch-elf/overflow_s_10_16.d new file mode 100644 index 0000000..3677415 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_s_10_16.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym overflow=1 --defsym s_10_16=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_10_16 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/overflow_s_10_16_s2.d b/ld/testsuite/ld-loongarch-elf/overflow_s_10_16_s2.d new file mode 100644 index 0000000..24ffa81 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_s_10_16_s2.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym overflow=1 --defsym s_10_16_s2=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_10_16_S2 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/overflow_s_10_5.d b/ld/testsuite/ld-loongarch-elf/overflow_s_10_5.d new file mode 100644 index 0000000..7881457 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_s_10_5.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym overflow=1 --defsym s_10_5=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_10_5 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/overflow_s_5_20.d b/ld/testsuite/ld-loongarch-elf/overflow_s_5_20.d new file mode 100644 index 0000000..5f06eed --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_s_5_20.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym overflow=1 --defsym s_5_20=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_5_20 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/overflow_u.d b/ld/testsuite/ld-loongarch-elf/overflow_u.d new file mode 100644 index 0000000..96906f6 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_u.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym overflow=1 --defsym u=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_U against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/overflow_u_10_12.d b/ld/testsuite/ld-loongarch-elf/overflow_u_10_12.d new file mode 100644 index 0000000..9d8e090 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/overflow_u_10_12.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym overflow=1 --defsym u_10_12=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_U_10_12 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/underflow_b16.d b/ld/testsuite/ld-loongarch-elf/underflow_b16.d new file mode 100644 index 0000000..e2e2194 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_b16.d @@ -0,0 +1,4 @@ +#source: abi2_overflows.s +#as: --defsym underflow=1 --defsym b16=1 +#ld: -e 0 --section-start=.local_sym=0x1ffe0000 -Ttext 0x20000000 +#error: .*relocation truncated to fit: R_LARCH_B16 against `local_sym' diff --git a/ld/testsuite/ld-loongarch-elf/underflow_b21.d b/ld/testsuite/ld-loongarch-elf/underflow_b21.d new file mode 100644 index 0000000..6f56526 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_b21.d @@ -0,0 +1,4 @@ +#source: abi2_overflows.s +#as: --defsym underflow=1 --defsym b21=1 +#ld: -e 0 --section-start=.local_sym=0x1fc00000 -Ttext 0x20000000 +#error: .*relocation truncated to fit: R_LARCH_B21 against `local_sym' diff --git a/ld/testsuite/ld-loongarch-elf/underflow_b26.d b/ld/testsuite/ld-loongarch-elf/underflow_b26.d new file mode 100644 index 0000000..5756cc1 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_b26.d @@ -0,0 +1,4 @@ +#source: abi2_overflows.s +#as: --defsym underflow=1 --defsym b26=1 +#ld: -e 0 --section-start=.local_sym=0x18000000 -Ttext 0x20000000 +#error: .*relocation truncated to fit: R_LARCH_B26 against `local_sym' diff --git a/ld/testsuite/ld-loongarch-elf/underflow_pcrel20.d b/ld/testsuite/ld-loongarch-elf/underflow_pcrel20.d new file mode 100644 index 0000000..e65c60a --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_pcrel20.d @@ -0,0 +1,4 @@ +#source: abi2_overflows.s +#as: --defsym underflow=1 --defsym pcrel20=1 +#ld: -e 0 --section-start=.local_sym=0x1fe00000 -Ttext 0x20000000 +#error: .*relocation truncated to fit: R_LARCH_PCREL20_S2 against `local_sym' diff --git a/ld/testsuite/ld-loongarch-elf/underflow_s_0_10_10_16_s2.d b/ld/testsuite/ld-loongarch-elf/underflow_s_0_10_10_16_s2.d new file mode 100644 index 0000000..3e7715a --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_s_0_10_10_16_s2.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym underflow=1 --defsym s_0_10_10_16_s2=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_0_10_10_16_S2 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/underflow_s_0_5_10_16_s2.d b/ld/testsuite/ld-loongarch-elf/underflow_s_0_5_10_16_s2.d new file mode 100644 index 0000000..14be5a9 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_s_0_5_10_16_s2.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym underflow=1 --defsym s_0_5_10_16_s2=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_0_5_10_16_S2 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/underflow_s_10_12.d b/ld/testsuite/ld-loongarch-elf/underflow_s_10_12.d new file mode 100644 index 0000000..ed9fe9b --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_s_10_12.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym underflow=1 --defsym s_10_12=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_10_12 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/underflow_s_10_16.d b/ld/testsuite/ld-loongarch-elf/underflow_s_10_16.d new file mode 100644 index 0000000..03b851b --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_s_10_16.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym underflow=1 --defsym s_10_16=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_10_16 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/underflow_s_10_16_s2.d b/ld/testsuite/ld-loongarch-elf/underflow_s_10_16_s2.d new file mode 100644 index 0000000..c0e4ca0 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_s_10_16_s2.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym underflow=1 --defsym s_10_16_s2=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_10_16_S2 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/underflow_s_10_5.d b/ld/testsuite/ld-loongarch-elf/underflow_s_10_5.d new file mode 100644 index 0000000..77d0eb0 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_s_10_5.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym underflow=1 --defsym s_10_5=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_10_5 against `<nameless>'
\ No newline at end of file diff --git a/ld/testsuite/ld-loongarch-elf/underflow_s_5_20.d b/ld/testsuite/ld-loongarch-elf/underflow_s_5_20.d new file mode 100644 index 0000000..c458bb8 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/underflow_s_5_20.d @@ -0,0 +1,4 @@ +#source: abi1_sops.s +#as: --defsym underflow=1 --defsym s_5_20=1 +#ld: -e 0 +#error: .*relocation truncated to fit: R_LARCH_SOP_POP_32_S_5_20 against `<nameless>'
\ No newline at end of file |