33
44# RUN: llvm-mc --triple=loongarch64 %s \
55# RUN: | FileCheck %s --check-prefix=NORMAL
6+ # RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=-relax %s -o %t
7+ # RUN: llvm-readobj -r %t | FileCheck %s --check-prefix=RELOC
8+ # RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s -o %t.relax
9+ # RUN: llvm-readobj -r %t.relax | FileCheck %s --check-prefixes=RELOC,RELAX
610# RUN: llvm-mc --triple=loongarch64 --mattr=+la-global-with-pcrel < %s \
711# RUN: | FileCheck %s --check-prefix=GTOPCR
12+ # RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+la-global-with-pcrel \
13+ # RUN: --mattr=-relax %s -o %t
14+ # RUN: llvm-readobj -r %t | FileCheck %s --check-prefix=GTOPCR-RELOC
15+ # RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+la-global-with-pcrel \
16+ # RUN: --mattr=+relax %s -o %t.relax
17+ # RUN: llvm-readobj -r %t.relax | FileCheck %s --check-prefixes=GTOPCR-RELOC,GTOPCR-RELAX
818# RUN: llvm-mc --triple=loongarch64 --mattr=+la-global-with-abs < %s \
919# RUN: | FileCheck %s --check-prefix=GTOABS
1020# RUN: llvm-mc --triple=loongarch64 --mattr=+la-local-with-abs < %s \
1121# RUN: | FileCheck %s --check-prefix=LTOABS
1222
23+ # RELOC: Relocations [
24+ # RELOC-NEXT: Section ({{.*}}) .rela.text {
25+
1326la $a0, sym
1427# NORMAL: pcalau12i $a0, %got_pc_hi20(sym)
1528# NORMAL-NEXT: ld.d $a0, $a0, %got_pc_lo12(sym)
@@ -22,6 +35,16 @@ la $a0, sym
2235# GTOABS-NEXT: lu32i.d $a0, %abs64_lo20(sym)
2336# GTOABS-NEXT: lu52i.d $a0, $a0, %abs64_hi12(sym)
2437
38+ # RELOC-NEXT: R_LARCH_GOT_PC_HI20 sym 0x0
39+ # RELAX-NEXT: R_LARCH_RELAX - 0x0
40+ # RELOC-NEXT: R_LARCH_GOT_PC_LO12 sym 0x0
41+ # RELAX-NEXT: R_LARCH_RELAX - 0x0
42+
43+ # GTOPCR-RELOC: R_LARCH_PCALA_HI20 sym 0x0
44+ # GTOPCR-RELAX: R_LARCH_RELAX - 0x0
45+ # GTOPCR-RELOC-NEXT: R_LARCH_PCALA_LO12 sym 0x0
46+ # GTOPCR-RELAX-NEXT: R_LARCH_RELAX - 0x0
47+
2548la.global $a0, sym_global
2649# NORMAL: pcalau12i $a0, %got_pc_hi20(sym_global)
2750# NORMAL-NEXT: ld.d $a0, $a0, %got_pc_lo12(sym_global)
@@ -34,6 +57,16 @@ la.global $a0, sym_global
3457# GTOABS-NEXT: lu32i.d $a0, %abs64_lo20(sym_global)
3558# GTOABS-NEXT: lu52i.d $a0, $a0, %abs64_hi12(sym_global)
3659
60+ # RELOC-NEXT: R_LARCH_GOT_PC_HI20 sym_global 0x0
61+ # RELAX-NEXT: R_LARCH_RELAX - 0x0
62+ # RELOC-NEXT: R_LARCH_GOT_PC_LO12 sym_global 0x0
63+ # RELAX-NEXT: R_LARCH_RELAX - 0x0
64+
65+ # GTOPCR-RELOC-NEXT: R_LARCH_PCALA_HI20 sym_global 0x0
66+ # GTOPCR-RELAX-NEXT: R_LARCH_RELAX - 0x0
67+ # GTOPCR-RELOC-NEXT: R_LARCH_PCALA_LO12 sym_global 0x0
68+ # GTOPCR-RELAX-NEXT: R_LARCH_RELAX - 0x0
69+
3770la.global $a0, $a1, sym_global_large
3871# NORMAL: pcalau12i $a0, %got_pc_hi20(sym_global_large)
3972# NORMAL-NEXT: addi.d $a1, $zero, %got_pc_lo12(sym_global_large)
@@ -52,6 +85,11 @@ la.global $a0, $a1, sym_global_large
5285# GTOABS-NEXT: lu32i.d $a0, %abs64_lo20(sym_global_large)
5386# GTOABS-NEXT: lu52i.d $a0, $a0, %abs64_hi12(sym_global_large)
5487
88+ # RELOC-NEXT: R_LARCH_GOT_PC_HI20 sym_global_large 0x0
89+ # RELOC-NEXT: R_LARCH_GOT_PC_LO12 sym_global_large 0x0
90+ # RELOC-NEXT: R_LARCH_GOT64_PC_LO20 sym_global_large 0x0
91+ # RELOC-NEXT: R_LARCH_GOT64_PC_HI12 sym_global_large 0x0
92+
5593la.local $a0, sym_local
5694# NORMAL: pcalau12i $a0, %pc_hi20(sym_local)
5795# NORMAL-NEXT: addi.d $a0, $a0, %pc_lo12(sym_local)
@@ -61,6 +99,11 @@ la.local $a0, sym_local
6199# LTOABS-NEXT: lu32i.d $a0, %abs64_lo20(sym_local)
62100# LTOABS-NEXT: lu52i.d $a0, $a0, %abs64_hi12(sym_local)
63101
102+ # RELOC-NEXT: R_LARCH_PCALA_HI20 sym_local 0x0
103+ # RELAX-NEXT: R_LARCH_RELAX - 0x0
104+ # RELOC-NEXT: R_LARCH_PCALA_LO12 sym_local 0x0
105+ # RELAX-NEXT: R_LARCH_RELAX - 0x0
106+
64107la.local $a0, $a1, sym_local_large
65108# NORMAL: pcalau12i $a0, %pc_hi20(sym_local_large)
66109# NORMAL-NEXT: addi.d $a1, $zero, %pc_lo12(sym_local_large)
@@ -72,3 +115,12 @@ la.local $a0, $a1, sym_local_large
72115# LTOABS-NEXT: ori $a0, $a0, %abs_lo12(sym_local_large)
73116# LTOABS-NEXT: lu32i.d $a0, %abs64_lo20(sym_local_large)
74117# LTOABS-NEXT: lu52i.d $a0, $a0, %abs64_hi12(sym_local_large)
118+
119+ # RELOC-NEXT: R_LARCH_PCALA_HI20 sym_local_large 0x0
120+ # RELOC-NEXT: R_LARCH_PCALA_LO12 sym_local_large 0x0
121+ # RELOC-NEXT: R_LARCH_PCALA64_LO20 sym_local_large 0x0
122+ # RELOC-NEXT: R_LARCH_PCALA64_HI12 sym_local_large 0x0
123+
124+
125+ # RELOC-NEXT: }
126+ # RELOC-NEXT: ]
0 commit comments