|
2 | 2 | ## Test that we can handle --emit-relocs while relaxing. |
3 | 3 |
|
4 | 4 | # RUN: llvm-mc --filetype=obj --triple=loongarch32 --mattr=+relax %s -o %t.32.o |
5 | | -# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax --defsym ELF64=1 %s -o %t.64.o |
| 5 | +# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s -o %t.64.o |
6 | 6 | # RUN: ld.lld -Ttext=0x10000 -section-start=.got=0x20000 --emit-relocs %t.32.o -o %t.32 |
7 | 7 | # RUN: ld.lld -Ttext=0x10000 -section-start=.got=0x20000 --emit-relocs %t.64.o -o %t.64 |
8 | | -# RUN: llvm-objdump -dr %t.32 | FileCheck %s --check-prefixes=RELAX,RELAX32 |
9 | | -# RUN: llvm-objdump -dr %t.64 | FileCheck %s --check-prefixes=RELAX,RELAX64 |
| 8 | +# RUN: llvm-objdump -dr %t.32 | FileCheck %s --check-prefix=RELAX |
| 9 | +# RUN: llvm-objdump -dr %t.64 | FileCheck %s --check-prefix=RELAX |
10 | 10 |
|
11 | 11 | ## -r should keep original relocations. |
12 | 12 | # RUN: ld.lld -r %t.64.o -o %t.64.r |
|
27 | 27 | # RELAX-NEXT: R_LARCH_RELAX *ABS* |
28 | 28 | # RELAX-NEXT: R_LARCH_PCREL20_S2 _start |
29 | 29 | # RELAX-NEXT: R_LARCH_RELAX *ABS* |
30 | | -# RELAX32-NEXT: nop |
31 | | -# RELAX32-NEXT: R_LARCH_ALIGN *ABS*+0xc |
32 | | -# RELAX32-NEXT: nop |
33 | | -# RELAX32-NEXT: ret |
34 | | - |
35 | | -# RELAX64-NEXT: bl -8 |
36 | | -# RELAX64-NEXT: R_LARCH_B26 _start |
37 | | -# RELAX64-NEXT: R_LARCH_RELAX *ABS* |
38 | | -# RELAX64-NEXT: b -12 |
39 | | -# RELAX64-NEXT: R_LARCH_B26 _start |
40 | | -# RELAX64-NEXT: R_LARCH_RELAX *ABS* |
41 | | -# RELAX64-NEXT: ret |
42 | | -# RELAX64-NEXT: R_LARCH_ALIGN *ABS*+0xc |
| 30 | +# RELAX-NEXT: nop |
| 31 | +# RELAX-NEXT: R_LARCH_ALIGN *ABS*+0xc |
| 32 | +# RELAX-NEXT: nop |
| 33 | +# RELAX-NEXT: ret |
43 | 34 |
|
44 | 35 | # NORELAX: <_start>: |
45 | 36 | # NORELAX-NEXT: pcalau12i $a0, 0 |
|
54 | 45 | # NORELAX-NEXT: ld.d $a0, $a0, 0 |
55 | 46 | # NORELAX-NEXT: R_LARCH_GOT_PC_LO12 _start |
56 | 47 | # NORELAX-NEXT: R_LARCH_RELAX *ABS* |
57 | | -# NORELAX-NEXT: pcaddu18i $ra, 0 |
58 | | -# NORELAX-NEXT: R_LARCH_CALL36 _start |
59 | | -# NORELAX-NEXT: R_LARCH_RELAX *ABS* |
60 | | -# NORELAX-NEXT: jirl $ra, $ra, -16 |
61 | | -# NORELAX-NEXT: pcaddu18i $a0, 0 |
62 | | -# NORELAX-NEXT: R_LARCH_CALL36 _start |
63 | | -# NORELAX-NEXT: R_LARCH_RELAX *ABS* |
64 | | -# NORELAX-NEXT: jirl $zero, $a0, -24 |
65 | 48 | # NORELAX-NEXT: ret |
66 | 49 | # NORELAX-NEXT: R_LARCH_ALIGN *ABS*+0xc |
67 | 50 |
|
|
78 | 61 | # CHECKR-NEXT: ld.d $a0, $a0, 0 |
79 | 62 | # CHECKR-NEXT: R_LARCH_GOT_PC_LO12 _start |
80 | 63 | # CHECKR-NEXT: R_LARCH_RELAX *ABS* |
81 | | -# CHECKR-NEXT: pcaddu18i $ra, 0 |
82 | | -# CHECKR-NEXT: R_LARCH_CALL36 _start |
83 | | -# CHECKR-NEXT: R_LARCH_RELAX *ABS* |
84 | | -# CHECKR-NEXT: jirl $ra, $ra, 0 |
85 | | -# CHECKR-NEXT: pcaddu18i $a0, 0 |
86 | | -# CHECKR-NEXT: R_LARCH_CALL36 _start |
87 | | -# CHECKR-NEXT: R_LARCH_RELAX *ABS* |
88 | | -# CHECKR-NEXT: jr $a0 |
89 | 64 | # CHECKR-NEXT: nop |
90 | 65 | # CHECKR-NEXT: R_LARCH_ALIGN *ABS*+0xc |
91 | 66 | # CHECKR-NEXT: nop |
|
96 | 71 | _start: |
97 | 72 | la.pcrel $a0, _start |
98 | 73 | la.got $a0, _start |
99 | | - |
100 | | -.ifdef ELF64 |
101 | | - call36 _start |
102 | | - tail36 $a0, _start |
103 | | -.endif |
104 | 74 | .p2align 4 |
105 | 75 | ret |
0 commit comments