|
1 | 1 | # RUN: llvm-mc -triple riscv64-unknown-linux-gnu -filetype obj -o - %s \
|
2 | 2 | # RUN: | llvm-readobj -r - | FileCheck %s
|
3 | 3 | # RUN: not llvm-mc -triple riscv64-unknown-linux-gnu -filetype obj --defsym ERR=1 -o /dev/null %s 2>&1 \
|
4 |
| -# RUN: | FileCheck %s --check-prefix CHECK-ERROR |
| 4 | +# RUN: | FileCheck %s --check-prefix=ERROR |
5 | 5 |
|
6 |
| -# CHECK: Relocations [ |
7 |
| -# CHECK: .relasx { |
8 |
| -# CHECK-NEXT: 0x0 R_RISCV_ADD64 y 0x0 |
9 |
| -# CHECK-NEXT: 0x0 R_RISCV_SUB64 x 0x0 |
10 |
| -# CHECK: } |
11 |
| -# CHECK: .relasy { |
12 |
| -# CHECK-NEXT: 0x0 R_RISCV_ADD64 x 0x0 |
13 |
| -# CHECK-NEXT: 0x0 R_RISCV_SUB64 y 0x0 |
14 |
| -# CHECK: } |
15 |
| -# CHECK: .relasa { |
16 |
| -# CHECK-NEXT: 0x0 R_RISCV_ADD64 a 0x0 |
17 |
| -# CHECK-NEXT: 0x0 R_RISCV_SUB64 z 0x0 |
18 |
| -# CHECK: } |
| 6 | +# CHECK: Relocations [ |
| 7 | +# CHECK-NEXT: Section ({{.*}}) .rela.alloc_w { |
| 8 | +# CHECK-NEXT: 0x0 R_RISCV_ADD64 extern 0x0 |
| 9 | +# CHECK-NEXT: 0x0 R_RISCV_SUB64 w 0x0 |
| 10 | +# CHECK-NEXT: 0x8 R_RISCV_ADD64 w 0x0 |
| 11 | +# CHECK-NEXT: 0x8 R_RISCV_SUB64 extern 0x0 |
| 12 | +# CHECK-NEXT: } |
| 13 | +# CHECK-NEXT: Section ({{.*}}) .rela.alloc_x { |
| 14 | +# CHECK-NEXT: 0x0 R_RISCV_ADD64 y 0x0 |
| 15 | +# CHECK-NEXT: 0x0 R_RISCV_SUB64 x 0x0 |
| 16 | +# CHECK-NEXT: } |
| 17 | +# CHECK-NEXT: Section ({{.*}}) .rela.alloc_y { |
| 18 | +# CHECK-NEXT: 0x0 R_RISCV_ADD64 x 0x0 |
| 19 | +# CHECK-NEXT: 0x0 R_RISCV_SUB64 y 0x0 |
| 20 | +# CHECK-NEXT: } |
| 21 | +# CHECK-NEXT: Section ({{.*}}) .rela.nonalloc_y { |
| 22 | +# CHECK-NEXT: 0x0 R_RISCV_ADD64 nx 0x0 |
| 23 | +# CHECK-NEXT: 0x0 R_RISCV_SUB64 ny 0x0 |
| 24 | +# CHECK-NEXT: } |
19 | 25 | # CHECK-NEXT: ]
|
20 | 26 |
|
21 |
| - .section sx,"aw",@progbits |
22 |
| -x: |
23 |
| - .quad y-x |
| 27 | +.section .alloc_w,"aw",@progbits; w: |
| 28 | +.quad extern-w |
| 29 | +.quad w-extern |
| 30 | +.section .alloc_x,"aw",@progbits; x: |
| 31 | +.quad y-x |
| 32 | +.section .alloc_y,"aw",@progbits; y: |
| 33 | +.quad x-y |
24 | 34 |
|
25 |
| - .section sy,"aw",@progbits |
26 |
| -y: |
27 |
| - .quad x-y |
28 |
| - |
29 |
| - .section sz |
30 |
| -z: |
| 35 | +.section .nonalloc_w; nw: |
31 | 36 | .ifdef ERR
|
32 |
| - .quad z-a |
33 |
| - |
34 |
| -# CHECK-ERROR: Cannot represent a difference across sections |
35 |
| -# CHECK-ERROR: .quad z-a |
36 |
| -# CHECK-ERROR: ^ |
37 |
| -.else |
38 |
| - .quad 0 |
| 37 | +# ERROR: :[[#@LINE+1]]:7: error: unsupported relocation type |
| 38 | +.quad extern-nw |
| 39 | +# ERROR: :[[#@LINE+1]]:7: error: symbol 'extern' can not be undefined in a subtraction expression |
| 40 | +.quad nw-extern |
39 | 41 | .endif
|
40 |
| - |
41 |
| - .section sa |
42 |
| -a: |
43 |
| - .quad a-z |
| 42 | +.section .nonalloc_x; nx: |
| 43 | +.ifdef ERR |
| 44 | +# ERROR: :[[#@LINE+1]]:7: error: unsupported relocation type |
| 45 | +.quad ny-nx |
| 46 | +.endif |
| 47 | +.section .nonalloc_y; ny: |
| 48 | +.quad nx-ny |
44 | 49 |
|
45 | 50 | ## .apple_names/.apple_types are fixed-size and do not need fixups.
|
46 | 51 | ## llvm-dwarfdump --apple-names does not process R_RISCV_{ADD,SUB}32 in them.
|
|
0 commit comments