|
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