|
1 | | -# RUN: llvm-mc --filetype=obj --triple=loongarch64 %s -o %t |
2 | | -# RUN: llvm-readobj -r %t | FileCheck %s |
| 1 | +# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=-relax %s \ |
| 2 | +# RUN: | llvm-readobj -r - | FileCheck %s |
| 3 | +# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s \ |
| 4 | +# RUN: | llvm-readobj -r - | FileCheck %s --check-prefix=RELAX |
3 | 5 |
|
4 | 6 | ## Check that subtraction expressions emit R_LARCH_32_PCREL and R_LARCH_64_PCREL relocations. |
5 | 7 |
|
6 | 8 | ## TODO: 1- or 2-byte data relocations are not supported for now. |
7 | 9 |
|
8 | 10 | # CHECK: Relocations [ |
9 | | -# CHECK-NEXT: Section ({{.*}}) .rela.data { |
10 | | -# CHECK-NEXT: 0x0 R_LARCH_64_PCREL sx 0x0 |
11 | | -# CHECK-NEXT: 0x8 R_LARCH_64_PCREL sy 0x0 |
12 | | -# CHECK-NEXT: 0x10 R_LARCH_32_PCREL sx 0x0 |
13 | | -# CHECK-NEXT: 0x14 R_LARCH_32_PCREL sy 0x0 |
14 | | -# CHECK-NEXT: } |
| 11 | +# CHECK-NEXT: Section ({{.*}}) .rela.sx { |
| 12 | +# CHECK-NEXT: 0x4 R_LARCH_PCALA_HI20 z 0x0 |
| 13 | +# CHECK-NEXT: 0x8 R_LARCH_PCALA_LO12 z 0x0 |
| 14 | +# CHECK-NEXT: 0xC R_LARCH_32_PCREL .sy 0xC |
| 15 | +# CHECK-NEXT: } |
| 16 | +# CHECK-NEXT: Section ({{.*}}) .rela.data { |
| 17 | +# CHECK-NEXT: 0x0 R_LARCH_64_PCREL .sx 0x4 |
| 18 | +# CHECK-NEXT: 0x8 R_LARCH_64_PCREL .sy 0x4 |
| 19 | +# CHECK-NEXT: 0x10 R_LARCH_32_PCREL .sx 0x4 |
| 20 | +# CHECK-NEXT: 0x14 R_LARCH_32_PCREL .sy 0x4 |
| 21 | +# CHECK-NEXT: 0x18 R_LARCH_ADD64 .sx 0x4 |
| 22 | +# CHECK-NEXT: 0x18 R_LARCH_SUB64 .sy 0x4 |
| 23 | +# CHECK-NEXT: 0x20 R_LARCH_ADD64 .sy 0x4 |
| 24 | +# CHECK-NEXT: 0x20 R_LARCH_SUB64 .sx 0x4 |
| 25 | +# CHECK-NEXT: 0x28 R_LARCH_ADD32 .sx 0x4 |
| 26 | +# CHECK-NEXT: 0x28 R_LARCH_SUB32 .sy 0x4 |
| 27 | +# CHECK-NEXT: 0x2C R_LARCH_ADD32 .sy 0x4 |
| 28 | +# CHECK-NEXT: 0x2C R_LARCH_SUB32 .sx 0x4 |
| 29 | +# CHECK-NEXT: 0x30 R_LARCH_ADD64 .data 0x30 |
| 30 | +# CHECK-NEXT: 0x30 R_LARCH_SUB64 .sx 0x4 |
| 31 | +# CHECK-NEXT: 0x38 R_LARCH_ADD32 .data 0x38 |
| 32 | +# CHECK-NEXT: 0x38 R_LARCH_SUB32 .sy 0x4 |
| 33 | +# CHECK-NEXT: } |
| 34 | +# CHECK-NEXT: Section ({{.*}}) .rela.sy { |
| 35 | +# CHECK-NEXT: 0x10 R_LARCH_32_PCREL .sx 0x10 |
| 36 | +# CHECK-NEXT: } |
| 37 | +# CHECK-NEXT: ] |
15 | 38 |
|
16 | | -.section sx,"a" |
17 | | -x: |
| 39 | +# RELAX: Relocations [ |
| 40 | +# RELAX-NEXT: Section ({{.*}}) .rela.sx { |
| 41 | +# RELAX-NEXT: 0x4 R_LARCH_PCALA_HI20 z 0x0 |
| 42 | +# RELAX-NEXT: 0x4 R_LARCH_RELAX - 0x0 |
| 43 | +# RELAX-NEXT: 0x8 R_LARCH_PCALA_LO12 z 0x0 |
| 44 | +# RELAX-NEXT: 0x8 R_LARCH_RELAX - 0x0 |
| 45 | +# RELAX-NEXT: 0xC R_LARCH_ADD32 y 0x0 |
| 46 | +# RELAX-NEXT: 0xC R_LARCH_SUB32 x 0x0 |
| 47 | +# RELAX-NEXT: } |
| 48 | +# RELAX-NEXT: Section ({{.*}}) .rela.data { |
| 49 | +# RELAX-NEXT: 0x0 R_LARCH_64_PCREL x 0x0 |
| 50 | +# RELAX-NEXT: 0x8 R_LARCH_64_PCREL y 0x0 |
| 51 | +# RELAX-NEXT: 0x10 R_LARCH_32_PCREL x 0x0 |
| 52 | +# RELAX-NEXT: 0x14 R_LARCH_32_PCREL y 0x0 |
| 53 | +# RELAX-NEXT: 0x18 R_LARCH_ADD64 x 0x0 |
| 54 | +# RELAX-NEXT: 0x18 R_LARCH_SUB64 y 0x0 |
| 55 | +# RELAX-NEXT: 0x20 R_LARCH_ADD64 y 0x0 |
| 56 | +# RELAX-NEXT: 0x20 R_LARCH_SUB64 x 0x0 |
| 57 | +# RELAX-NEXT: 0x28 R_LARCH_ADD32 x 0x0 |
| 58 | +# RELAX-NEXT: 0x28 R_LARCH_SUB32 y 0x0 |
| 59 | +# RELAX-NEXT: 0x2C R_LARCH_ADD32 y 0x0 |
| 60 | +# RELAX-NEXT: 0x2C R_LARCH_SUB32 x 0x0 |
| 61 | +# RELAX-NEXT: 0x30 R_LARCH_ADD64 {{.*}} 0x0 |
| 62 | +# RELAX-NEXT: 0x30 R_LARCH_SUB64 x 0x0 |
| 63 | +# RELAX-NEXT: 0x38 R_LARCH_ADD32 {{.*}} 0x0 |
| 64 | +# RELAX-NEXT: 0x38 R_LARCH_SUB32 y 0x0 |
| 65 | +# RELAX-NEXT: } |
| 66 | +# RELAX-NEXT: Section ({{.*}}) .rela.sy { |
| 67 | +# RELAX-NEXT: 0x4 R_LARCH_ALIGN - 0xC |
| 68 | +# RELAX-NEXT: 0x10 R_LARCH_ADD32 x 0x0 |
| 69 | +# RELAX-NEXT: 0x10 R_LARCH_SUB32 y 0x0 |
| 70 | +# RELAX-NEXT: } |
| 71 | +# RELAX-NEXT: ] |
| 72 | + |
| 73 | +.section .sx,"ax" |
18 | 74 | nop |
| 75 | +x: |
| 76 | +la.pcrel $a0, z |
| 77 | +.4byte y-x |
19 | 78 |
|
20 | 79 | .data |
21 | 80 | .8byte x-. |
22 | 81 | .8byte y-. |
23 | 82 | .4byte x-. |
24 | 83 | .4byte y-. |
| 84 | +.8byte x-y |
| 85 | +.8byte y-x |
| 86 | +.4byte x-y |
| 87 | +.4byte y-x |
| 88 | +.8byte .-x |
| 89 | +.4byte .-y |
25 | 90 |
|
26 | | -.section sy,"a" |
27 | | -y: |
| 91 | +.section .sy,"ax" |
28 | 92 | nop |
| 93 | +y: |
| 94 | +.p2align 4 |
| 95 | +.4byte x-y |
0 commit comments