xref: /llvm-project/lld/test/wasm/reloc-relative.s (revision aa0c571a5fa9130ccd932f9b6970440a1bae177f)
1# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %p/Inputs/hello.s -o %t.hello32.o
2# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %s -o %t.o
3# RUN: wasm-ld --no-entry --no-gc-sections --allow-undefined -fatal-warnings -o %t.wasm %t.o %t.hello32.o
4# RUN: obj2yaml %t.wasm | FileCheck %s
5
6.section .x_sec,"",@
7internal_x_seg_pad:
8  # padding for provisioning value assertion
9  .int32 0
10  .size internal_x_seg_pad, 4
11internal_x_seg:
12  .int32 42
13  .size internal_x_seg, 4
14
15# internal cross segment subtraction
16.section .foo,"",@
17.globl  foo
18foo:
19  .int32 internal_x_seg - foo
20  .size foo, 4
21foo_addend:
22  .int32 internal_x_seg - foo
23  .size foo_addend, 4
24
25# external cross segment subtraction
26.section .bar,"",@
27.globl  bar
28bar:
29  .int32 hello_str - bar
30  .size bar, 4
31bar_addend:
32  .int32 hello_str - bar
33  .size bar_addend, 4
34
35# positive calc result
36.section .fizz,"",@
37.globl  fizz
38fizz:
39  .int32 far - fizz
40  .size fizz, 4
41fizz_addend:
42  .int32 far - fizz
43  .size fizz_addend, 4
44
45.section .far,"",@
46.globl  far
47far:
48  .int32 21
49  .size far, 4
50
51# CHECK:      - Type:            DATA
52# CHECK-NEXT:    Segments:
53# CHECK-NEXT:      - SectionOffset:   7
54# CHECK-NEXT:        InitFlags:       0
55# CHECK-NEXT:        Offset:
56# CHECK-NEXT:          Opcode:          I32_CONST
57# CHECK-NEXT:          Value:           1024
58# CHECK-NEXT:        Content:         68656C6C6F0A00
59# CHECK-NEXT:      - SectionOffset:   20
60# CHECK-NEXT:        InitFlags:       0
61# CHECK-NEXT:        Offset:
62# CHECK-NEXT:          Opcode:          I32_CONST
63# CHECK-NEXT:          Value:           1031
64# CHECK-NEXT:        Content:         000000002A000000
65# CHECK-NEXT:      - SectionOffset:   34
66# CHECK-NEXT:        InitFlags:       0
67# CHECK-NEXT:        Offset:
68# CHECK-NEXT:          Opcode:          I32_CONST
69# CHECK-NEXT:          Value:           1039
70# CHECK-NEXT:        Content:         FCFFFFFFFCFFFFFF
71# CHECK-NEXT:      - SectionOffset:   48
72# CHECK-NEXT:        InitFlags:       0
73# CHECK-NEXT:        Offset:
74# CHECK-NEXT:          Opcode:          I32_CONST
75# CHECK-NEXT:          Value:           1047
76# CHECK-NEXT:        Content:         E9FFFFFFE9FFFFFF
77# CHECK-NEXT:      - SectionOffset:   62
78# CHECK-NEXT:        InitFlags:       0
79# CHECK-NEXT:        Offset:
80# CHECK-NEXT:          Opcode:          I32_CONST
81# CHECK-NEXT:          Value:           1055
82# CHECK-NEXT:        Content:         '0800000008000000'
83# CHECK-NEXT:      - SectionOffset:   76
84# CHECK-NEXT:        InitFlags:       0
85# CHECK-NEXT:        Offset:
86# CHECK-NEXT:          Opcode:          I32_CONST
87# CHECK-NEXT:          Value:           1063
88# CHECK-NEXT:        Content:         '15000000'
89
90