|
3 | 3 |
|
4 | 4 | # RUN: llvm-mc --filetype=obj --triple=loongarch32 --mattr=+relax %s -o %t.32.o
|
5 | 5 | # RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s -o %t.64.o
|
6 |
| -# RUN: ld.lld -Ttext=0x10000 --emit-relocs %t.32.o -o %t.32 |
7 |
| -# RUN: ld.lld -Ttext=0x10000 --emit-relocs %t.64.o -o %t.64 |
| 6 | +# RUN: ld.lld -Ttext=0x10000 -section-start=.got=0x20000 --emit-relocs %t.32.o -o %t.32 |
| 7 | +# RUN: ld.lld -Ttext=0x10000 -section-start=.got=0x20000 --emit-relocs %t.64.o -o %t.64 |
8 | 8 | # RUN: llvm-objdump -dr %t.32 | FileCheck %s --check-prefix=RELAX
|
9 | 9 | # RUN: llvm-objdump -dr %t.64 | FileCheck %s --check-prefix=RELAX
|
10 | 10 |
|
|
13 | 13 | # RUN: llvm-objdump -dr %t.64.r | FileCheck %s --check-prefix=CHECKR
|
14 | 14 |
|
15 | 15 | ## --no-relax should keep original relocations.
|
16 |
| -# RUN: ld.lld -Ttext=0x10000 --emit-relocs --no-relax %t.64.o -o %t.64.norelax |
| 16 | +# RUN: ld.lld -Ttext=0x10000 -section-start=.got=0x20000 --emit-relocs --no-relax %t.64.o -o %t.64.norelax |
17 | 17 | # RUN: llvm-objdump -dr %t.64.norelax | FileCheck %s --check-prefix=NORELAX
|
18 | 18 |
|
19 | 19 | # RELAX: 00010000 <_start>:
|
|
22 | 22 | # RELAX-NEXT: R_LARCH_RELAX *ABS*
|
23 | 23 | # RELAX-NEXT: R_LARCH_PCREL20_S2 _start
|
24 | 24 | # RELAX-NEXT: R_LARCH_RELAX *ABS*
|
| 25 | +# RELAX-NEXT: pcaddi $a0, -1 |
| 26 | +# RELAX-NEXT: R_LARCH_RELAX _start |
| 27 | +# RELAX-NEXT: R_LARCH_RELAX *ABS* |
| 28 | +# RELAX-NEXT: R_LARCH_PCREL20_S2 _start |
| 29 | +# RELAX-NEXT: R_LARCH_RELAX *ABS* |
25 | 30 | # RELAX-NEXT: nop
|
26 | 31 | # RELAX-NEXT: R_LARCH_ALIGN *ABS*+0xc
|
27 | 32 | # RELAX-NEXT: nop
|
28 |
| -# RELAX-NEXT: nop |
29 | 33 | # RELAX-NEXT: ret
|
30 | 34 |
|
31 | 35 | # NORELAX: <_start>:
|
32 | 36 | # NORELAX-NEXT: pcalau12i $a0, 0
|
33 | 37 | # NORELAX-NEXT: R_LARCH_PCALA_HI20 _start
|
34 | 38 | # NORELAX-NEXT: R_LARCH_RELAX *ABS*
|
35 |
| -# NORELAX-NEXT: addi.d $a0, $a0, 0 |
| 39 | +# NORELAX-NEXT: addi.d $a0, $a0, 0 |
36 | 40 | # NORELAX-NEXT: R_LARCH_PCALA_LO12 _start
|
37 | 41 | # NORELAX-NEXT: R_LARCH_RELAX *ABS*
|
38 |
| -# NORELAX-NEXT: nop |
39 |
| -# NORELAX-NEXT: R_LARCH_ALIGN *ABS*+0xc |
40 |
| -# NORELAX-NEXT: nop |
| 42 | +# NORELAX-NEXT: pcalau12i $a0, 16 |
| 43 | +# NORELAX-NEXT: R_LARCH_GOT_PC_HI20 _start |
| 44 | +# NORELAX-NEXT: R_LARCH_RELAX *ABS* |
| 45 | +# NORELAX-NEXT: ld.d $a0, $a0, 0 |
| 46 | +# NORELAX-NEXT: R_LARCH_GOT_PC_LO12 _start |
| 47 | +# NORELAX-NEXT: R_LARCH_RELAX *ABS* |
41 | 48 | # NORELAX-NEXT: ret
|
| 49 | +# NORELAX-NEXT: R_LARCH_ALIGN *ABS*+0xc |
42 | 50 |
|
43 | 51 | # CHECKR: <_start>:
|
44 | 52 | # CHECKR-NEXT: pcalau12i $a0, 0
|
45 | 53 | # CHECKR-NEXT: R_LARCH_PCALA_HI20 _start
|
46 | 54 | # CHECKR-NEXT: R_LARCH_RELAX *ABS*
|
47 |
| -# CHECKR-NEXT: addi.d $a0, $a0, 0 |
| 55 | +# CHECKR-NEXT: addi.d $a0, $a0, 0 |
48 | 56 | # CHECKR-NEXT: R_LARCH_PCALA_LO12 _start
|
49 | 57 | # CHECKR-NEXT: R_LARCH_RELAX *ABS*
|
| 58 | +# CHECKR-NEXT: pcalau12i $a0, 0 |
| 59 | +# CHECKR-NEXT: R_LARCH_GOT_PC_HI20 _start |
| 60 | +# CHECKR-NEXT: R_LARCH_RELAX *ABS* |
| 61 | +# CHECKR-NEXT: ld.d $a0, $a0, 0 |
| 62 | +# CHECKR-NEXT: R_LARCH_GOT_PC_LO12 _start |
| 63 | +# CHECKR-NEXT: R_LARCH_RELAX *ABS* |
50 | 64 | # CHECKR-NEXT: nop
|
51 | 65 | # CHECKR-NEXT: R_LARCH_ALIGN *ABS*+0xc
|
52 | 66 | # CHECKR-NEXT: nop
|
|
56 | 70 | .global _start
|
57 | 71 | _start:
|
58 | 72 | la.pcrel $a0, _start
|
| 73 | + la.got $a0, _start |
59 | 74 | .p2align 4
|
60 | 75 | ret
|
0 commit comments