|
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