Skip to content

Commit 95f4540

Browse files
committed
la.pcrel relax test modify.
1 parent ea9fea2 commit 95f4540

File tree

2 files changed

+101
-55
lines changed

2 files changed

+101
-55
lines changed

lld/test/ELF/loongarch-relax-align.s

Lines changed: 75 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,56 +6,91 @@
66
# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 %t.64.o -o %t.64
77
# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 %t.32.o --no-relax -o %t.32n
88
# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 %t.64.o --no-relax -o %t.64n
9-
# RUN: llvm-objdump -td --no-show-raw-insn %t.32 | FileCheck %s
10-
# RUN: llvm-objdump -td --no-show-raw-insn %t.64 | FileCheck %s
11-
# RUN: llvm-objdump -td --no-show-raw-insn %t.32n | FileCheck %s
12-
# RUN: llvm-objdump -td --no-show-raw-insn %t.64n | FileCheck %s
9+
# RUN: llvm-objdump -td --no-show-raw-insn %t.32 | FileCheck --check-prefixes=RELAX,NOOLD %s
10+
# RUN: llvm-objdump -td --no-show-raw-insn %t.64 | FileCheck --check-prefixes=RELAX,NOOLD %s
11+
# RUN: llvm-objdump -td --no-show-raw-insn %t.32n | FileCheck --check-prefixes=NORELAX,NOOLD %s
12+
# RUN: llvm-objdump -td --no-show-raw-insn %t.64n | FileCheck --check-prefixes=NORELAX,NOOLD %s
1313

1414
## Test the R_LARCH_ALIGN without symbol index.
1515
# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s -o %t.o64.o --defsym=old=1
1616
# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 %t.o64.o -o %t.o64
1717
# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 %t.o64.o --no-relax -o %t.o64n
18-
# RUN: llvm-objdump -td --no-show-raw-insn %t.o64 | FileCheck %s
19-
# RUN: llvm-objdump -td --no-show-raw-insn %t.o64n | FileCheck %s
18+
# RUN: llvm-objdump -td --no-show-raw-insn %t.o64 | FileCheck --check-prefixes=RELAX,OLD %s
19+
# RUN: llvm-objdump -td --no-show-raw-insn %t.o64n | FileCheck --check-prefixes=NORELAX,OLD %s
2020

2121
## -r keeps section contents unchanged.
2222
# RUN: ld.lld -r %t.64.o -o %t.64.r
2323
# RUN: llvm-objdump -dr --no-show-raw-insn %t.64.r | FileCheck %s --check-prefix=CHECKR
2424

25-
# CHECK-DAG: {{0*}}10000 l .text {{0*}}44 .Ltext_start
26-
# CHECK-DAG: {{0*}}10038 l .text {{0*}}0c .L1
27-
# CHECK-DAG: {{0*}}10040 l .text {{0*}}04 .L2
28-
# CHECK-DAG: {{0*}}20000 l .text2 {{0*}}14 .Ltext2_start
29-
30-
# CHECK: <.Ltext_start>:
31-
# CHECK-NEXT: break 1
32-
# CHECK-NEXT: break 2
33-
# CHECK-NEXT: nop
34-
# CHECK-NEXT: nop
35-
# CHECK-NEXT: break 3
36-
# CHECK-NEXT: break 4
37-
# CHECK-NEXT: nop
38-
# CHECK-NEXT: nop
39-
# CHECK-NEXT: pcalau12i $a0, 0
40-
# CHECK-NEXT: addi.{{[dw]}} $a0, $a0, 0
41-
# CHECK-NEXT: pcalau12i $a0, 0
42-
# CHECK-NEXT: addi.{{[dw]}} $a0, $a0, 56
43-
# CHECK-NEXT: pcalau12i $a0, 0
44-
# CHECK-NEXT: addi.{{[dw]}} $a0, $a0, 64
45-
# CHECK-EMPTY:
46-
# CHECK-NEXT: <.L1>:
47-
# CHECK-NEXT: nop
48-
# CHECK-NEXT: nop
49-
# CHECK-EMPTY:
50-
# CHECK-NEXT: <.L2>:
51-
# CHECK-NEXT: break 5
52-
53-
# CHECK: <.Ltext2_start>:
54-
# CHECK-NEXT: pcalau12i $a0, 0
55-
# CHECK-NEXT: addi.{{[dw]}} $a0, $a0, 0
56-
# CHECK-NEXT: nop
57-
# CHECK-NEXT: nop
58-
# CHECK-NEXT: break 6
25+
# NOOLD: {{0*}}10000 l .text {{0*}}00 .Lalign_symbol
26+
# OLD: {{0*}}00001 l *ABS* {{0*}}00 old
27+
28+
# NORELAX-DAG: {{0*}}10000 l .text {{0*}}44 .Ltext_start
29+
# NORELAX-DAG: {{0*}}10038 l .text {{0*}}0c .L1
30+
# NORELAX-DAG: {{0*}}10040 l .text {{0*}}04 .L2
31+
# NORELAX-DAG: {{0*}}20000 l .text2 {{0*}}14 .Ltext2_start
32+
33+
# NORELAX: <.Ltext_start>:
34+
# NORELAX-NEXT: break 1
35+
# NORELAX-NEXT: break 2
36+
# NORELAX-NEXT: nop
37+
# NORELAX-NEXT: nop
38+
# NORELAX-NEXT: break 3
39+
# NORELAX-NEXT: break 4
40+
# NORELAX-NEXT: nop
41+
# NORELAX-NEXT: nop
42+
# NORELAX-NEXT: pcalau12i $a0, 0
43+
# NORELAX-NEXT: addi.{{[dw]}} $a0, $a0, 0
44+
# NORELAX-NEXT: pcalau12i $a0, 0
45+
# NORELAX-NEXT: addi.{{[dw]}} $a0, $a0, 56
46+
# NORELAX-NEXT: pcalau12i $a0, 0
47+
# NORELAX-NEXT: addi.{{[dw]}} $a0, $a0, 64
48+
# NORELAX-EMPTY:
49+
# NORELAX-NEXT: <.L1>:
50+
# NORELAX-NEXT: nop
51+
# NORELAX-NEXT: nop
52+
# NORELAX-EMPTY:
53+
# NORELAX-NEXT: <.L2>:
54+
# NORELAX-NEXT: break 5
55+
56+
# NORELAX: <.Ltext2_start>:
57+
# NORELAX-NEXT: pcalau12i $a0, 0
58+
# NORELAX-NEXT: addi.{{[dw]}} $a0, $a0, 0
59+
# NORELAX-NEXT: nop
60+
# NORELAX-NEXT: nop
61+
# NORELAX-NEXT: break 6
62+
63+
64+
# RELAX-DAG: {{0*}}10000 l .text {{0*}}34 .Ltext_start
65+
# RELAX-DAG: {{0*}}1002c l .text {{0*}}08 .L1
66+
# RELAX-DAG: {{0*}}10030 l .text {{0*}}04 .L2
67+
# RELAX-DAG: {{0*}}20000 l .text2 {{0*}}14 .Ltext2_start
68+
69+
# RELAX: <.Ltext_start>:
70+
# RELAX-NEXT: break 1
71+
# RELAX-NEXT: break 2
72+
# RELAX-NEXT: nop
73+
# RELAX-NEXT: nop
74+
# RELAX-NEXT: break 3
75+
# RELAX-NEXT: break 4
76+
# RELAX-NEXT: nop
77+
# RELAX-NEXT: nop
78+
# RELAX-NEXT: pcaddi $a0, -8
79+
# RELAX-NEXT: pcaddi $a0, 2
80+
# RELAX-NEXT: pcaddi $a0, 2
81+
# RELAX-EMPTY:
82+
# RELAX-NEXT: <.L1>:
83+
# RELAX-NEXT: nop
84+
# RELAX-EMPTY:
85+
# RELAX-NEXT: <.L2>:
86+
# RELAX-NEXT: break 5
87+
88+
# RELAX: <.Ltext2_start>:
89+
# RELAX-NEXT: pcaddi $a0, 0
90+
# RELAX-NEXT: nop
91+
# RELAX-NEXT: nop
92+
# RELAX-NEXT: nop
93+
# RELAX-NEXT: break 6
5994

6095
# CHECKR: <.Ltext2_start>:
6196
# CHECKR-NEXT: pcalau12i $a0, 0

lld/test/ELF/loongarch-relax-emit-relocs.s

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,40 @@
55
# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s -o %t.64.o
66
# RUN: ld.lld -Ttext=0x10000 --emit-relocs %t.32.o -o %t.32
77
# RUN: ld.lld -Ttext=0x10000 --emit-relocs %t.64.o -o %t.64
8-
# RUN: llvm-objdump -dr %t.32 | FileCheck %s
9-
# RUN: llvm-objdump -dr %t.64 | FileCheck %s
8+
# RUN: llvm-objdump -dr %t.32 | FileCheck %s --check-prefix=RELAX
9+
# RUN: llvm-objdump -dr %t.64 | FileCheck %s --check-prefix=RELAX
1010

1111
## -r should keep original relocations.
1212
# RUN: ld.lld -r %t.64.o -o %t.64.r
1313
# RUN: llvm-objdump -dr %t.64.r | FileCheck %s --check-prefix=CHECKR
1414

1515
## --no-relax should keep original relocations.
16-
## TODO Due to R_LARCH_RELAX is not relaxed, it plays same as --relax now.
1716
# RUN: ld.lld -Ttext=0x10000 --emit-relocs --no-relax %t.64.o -o %t.64.norelax
18-
# RUN: llvm-objdump -dr %t.64.norelax | FileCheck %s
17+
# RUN: llvm-objdump -dr %t.64.norelax | FileCheck %s --check-prefix=NORELAX
1918

20-
# CHECK: 00010000 <_start>:
21-
# CHECK-NEXT: pcalau12i $a0, 0
22-
# CHECK-NEXT: R_LARCH_PCALA_HI20 _start
23-
# CHECK-NEXT: R_LARCH_RELAX *ABS*
24-
# CHECK-NEXT: addi.{{[dw]}} $a0, $a0, 0
25-
# CHECK-NEXT: R_LARCH_PCALA_LO12 _start
26-
# CHECK-NEXT: R_LARCH_RELAX *ABS*
27-
# CHECK-NEXT: nop
28-
# CHECK-NEXT: R_LARCH_ALIGN *ABS*+0xc
29-
# CHECK-NEXT: nop
30-
# CHECK-NEXT: ret
19+
# RELAX: 00010000 <_start>:
20+
# RELAX-NEXT: pcaddi $a0, 0
21+
# RELAX-NEXT: R_LARCH_RELAX _start
22+
# RELAX-NEXT: R_LARCH_RELAX *ABS*
23+
# RELAX-NEXT: R_LARCH_PCREL20_S2 _start
24+
# RELAX-NEXT: R_LARCH_RELAX *ABS*
25+
# RELAX-NEXT: nop
26+
# RELAX-NEXT: R_LARCH_ALIGN *ABS*+0xc
27+
# RELAX-NEXT: nop
28+
# RELAX-NEXT: nop
29+
# RELAX-NEXT: ret
30+
31+
# NORELAX: <_start>:
32+
# NORELAX-NEXT: pcalau12i $a0, 0
33+
# NORELAX-NEXT: R_LARCH_PCALA_HI20 _start
34+
# NORELAX-NEXT: R_LARCH_RELAX *ABS*
35+
# NORELAX-NEXT: addi.d $a0, $a0, 0
36+
# NORELAX-NEXT: R_LARCH_PCALA_LO12 _start
37+
# NORELAX-NEXT: R_LARCH_RELAX *ABS*
38+
# NORELAX-NEXT: nop
39+
# NORELAX-NEXT: R_LARCH_ALIGN *ABS*+0xc
40+
# NORELAX-NEXT: nop
41+
# NORELAX-NEXT: ret
3142

3243
# CHECKR: <_start>:
3344
# CHECKR-NEXT: pcalau12i $a0, 0

0 commit comments

Comments
 (0)