Skip to content

Commit 9662a60

Browse files
committed
[ELF,test] Make loongarch-reloc-leb128.s similar to riscv-reloc-leb128.s
For the label difference A-B where A and B are in the same section, if the section contains no linker-relaxable instruction, we can disable the framnent walk code path. However, the test from #81133 relies on the redundant relocations. Make it similar to riscv-reloc-leb128.s. For now, lose the 32-bit coverage as call36 is 64-bit only.
1 parent 964aedb commit 9662a60

File tree

1 file changed

+45
-57
lines changed

1 file changed

+45
-57
lines changed

lld/test/ELF/loongarch-reloc-leb128.s

Lines changed: 45 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,7 @@
66
# RUN: ld.lld -shared --gc-sections a.o -o a.so
77
# RUN: llvm-readelf -x .gcc_except_table -x .debug_rnglists -x .debug_loclists a.so | FileCheck %s
88

9-
# RUN: llvm-mc --filetype=obj --triple=loongarch32 --mattr=+relax a.s -o a32.o
10-
# RUN: llvm-readobj -r -x .gcc_except_table -x .debug_rnglists -x .debug_loclists a32.o | FileCheck %s --check-prefix=REL
11-
# RUN: ld.lld -shared --gc-sections a32.o -o a32.so
12-
# RUN: llvm-readelf -x .gcc_except_table -x .debug_rnglists -x .debug_loclists a32.so | FileCheck %s
13-
14-
# RUN: llvm-mc --filetype=obj --triple=loongarch32 --mattr=+relax extraspace.s -o extraspace32.o
159
# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax extraspace.s -o extraspace64.o
16-
# RUN: not ld.lld -shared extraspace32.o 2>&1 | FileCheck %s --check-prefix=ERROR
1710
# RUN: not ld.lld -shared extraspace64.o 2>&1 | FileCheck %s --check-prefix=ERROR
1811
# ERROR: error: extraspace{{.*}}.o:(.rodata+0x0): extra space for uleb128
1912

@@ -22,72 +15,67 @@
2215
.cfi_lsda 0x1b,.LLSDA0
2316
.cfi_endproc
2417

18+
.globl _start
19+
_start:
20+
foo:
21+
nop
22+
2523
.section .text.w,"axR"
26-
break 0; break 0; break 0; w1:
27-
.p2align 4 # 4 bytes after relaxation
28-
w2: break 0
24+
w1:
25+
call36 foo # 4 bytes after relaxation
26+
w2:
2927

3028
.section .text.x,"ax"
31-
break 0; break 0; break 0; x1:
32-
.p2align 4 # 4 bytes after relaxation
33-
x2: break 0
29+
x1:
30+
call36 foo # 4 bytes after relaxation
31+
x2:
3432

3533
.section .gcc_except_table,"a"
3634
.LLSDA0:
37-
.uleb128 w2-w1+116 # initial value: 0x0080
38-
.uleb128 w1-w2+141 # initial value: 0x0080
39-
.uleb128 w2-w1+16372 # initial value: 0x008080
40-
.uleb128 w1-w2+16397 # initial value: 0x008080
41-
.uleb128 w2-w1+2097140 # initial value: 0x00808080
42-
.uleb128 w1-w2+2097165 # initial value: 0x00808080
35+
.reloc ., R_LARCH_ADD_ULEB128, w1+130
36+
.reloc ., R_LARCH_SUB_ULEB128, w2-1 # non-zero addend for SUB
37+
.byte 0x7b
38+
.uleb128 w2-w1+120
39+
.uleb128 w1-w2+137
40+
.uleb128 w2-w1+16376
41+
.uleb128 w1-w2+16393
42+
.uleb128 w2-w1+2097144
43+
.uleb128 w1-w2+2097161
4344

4445
.section .debug_rnglists
45-
.uleb128 w2-w1+116 # initial value: 0x0080
46-
.uleb128 w1-w2+141 # initial value: 0x0080
47-
.uleb128 w2-w1+16372 # initial value: 0x008080
48-
.uleb128 w1-w2+16397 # initial value: 0x008080
49-
.uleb128 w2-w1+2097140 # initial value: 0x00808080
50-
.uleb128 w1-w2+2097165 # initial value: 0x00808080
46+
.reloc ., R_LARCH_ADD_ULEB128, w1+130
47+
.reloc ., R_LARCH_SUB_ULEB128, w2-1 # non-zero addend for SUB
48+
.byte 0x7b
49+
.uleb128 w2-w1+120
50+
.uleb128 w1-w2+137
51+
.uleb128 w2-w1+16376
52+
.uleb128 w1-w2+16393
53+
.uleb128 w2-w1+2097144
54+
.uleb128 w1-w2+2097161
5155

5256
.section .debug_loclists
57+
.reloc ., R_LARCH_ADD_ULEB128, w2+3
58+
.reloc ., R_LARCH_SUB_ULEB128, w1+4 # SUB with a non-zero addend
59+
.byte 0
5360
.uleb128 x2-x1 # references discarded symbols
5461

55-
# REL: Section ({{.*}}) .rela.debug_rnglists {
56-
# REL-NEXT: 0x0 R_LARCH_ADD_ULEB128 w2 0x74
57-
# REL-NEXT: 0x0 R_LARCH_SUB_ULEB128 w1 0x0
58-
# REL-NEXT: 0x2 R_LARCH_ADD_ULEB128 w1 0x8D
59-
# REL-NEXT: 0x2 R_LARCH_SUB_ULEB128 w2 0x0
60-
# REL-NEXT: 0x4 R_LARCH_ADD_ULEB128 w2 0x3FF4
61-
# REL-NEXT: 0x4 R_LARCH_SUB_ULEB128 w1 0x0
62-
# REL-NEXT: 0x7 R_LARCH_ADD_ULEB128 w1 0x400D
63-
# REL-NEXT: 0x7 R_LARCH_SUB_ULEB128 w2 0x0
64-
# REL-NEXT: 0xA R_LARCH_ADD_ULEB128 w2 0x1FFFF4
65-
# REL-NEXT: 0xA R_LARCH_SUB_ULEB128 w1 0x0
66-
# REL-NEXT: 0xE R_LARCH_ADD_ULEB128 w1 0x20000D
67-
# REL-NEXT: 0xE R_LARCH_SUB_ULEB128 w2 0x0
68-
# REL-NEXT: }
69-
# REL: Section ({{.*}}) .rela.debug_loclists {
70-
# REL-NEXT: 0x0 R_LARCH_ADD_ULEB128 x2 0x0
71-
# REL-NEXT: 0x0 R_LARCH_SUB_ULEB128 x1 0x0
72-
# REL-NEXT: }
73-
74-
# REL: Hex dump of section '.gcc_except_table':
75-
# REL-NEXT: 0x00000000 80008000 80800080 80008080 80008080 .
76-
# REL-NEXT: 0x00000010 8000 .
77-
# REL: Hex dump of section '.debug_rnglists':
78-
# REL-NEXT: 0x00000000 80008000 80800080 80008080 80008080 .
79-
# REL-NEXT: 0x00000010 8000 .
80-
# REL: Hex dump of section '.debug_loclists':
81-
# REL-NEXT: 0x00000000 00 .
62+
# REL: Hex dump of section '.gcc_except_table':
63+
# REL-NEXT: 0x00000000 7b800080 00808000 80800080 80800080 {
64+
# REL-NEXT: 0x00000010 808000 .
65+
# REL: Hex dump of section '.debug_rnglists':
66+
# REL-NEXT: 0x00000000 7b800080 00808000 80800080 80800080 {
67+
# REL-NEXT: 0x00000010 808000 .
68+
# REL: Hex dump of section '.debug_loclists':
69+
# REL-NEXT: 0x00000000 0000 .
8270

8371
# CHECK: Hex dump of section '.gcc_except_table':
84-
# CHECK-NEXT: 0x[[#%x,]] f8008901 f8ff0089 8001f8ff ff008980 .
85-
# CHECK-NEXT: 0x[[#%x,]] 8001 .
72+
# CHECK-NEXT: 0x00000238 7afc0085 01fcff00 858001fc ffff0085 z
73+
# CHECK-NEXT: 0x00000248 808001 .
8674
# CHECK: Hex dump of section '.debug_rnglists':
87-
# CHECK-NEXT: 0x00000000 f8008901 f8ff0089 8001f8ff ff008980 .
88-
# CHECK-NEXT: 0x00000010 8001 .
75+
# CHECK-NEXT: 0x00000000 7afc0085 01fcff00 858001fc ffff0085 z
76+
# CHECK-NEXT: 0x00000010 808001 .
8977
# CHECK: Hex dump of section '.debug_loclists':
90-
# CHECK-NEXT: 0x00000000 00 .
78+
# CHECK-NEXT: 0x00000000 0300 .
9179

9280
#--- extraspace.s
9381
.text

0 commit comments

Comments
 (0)