xref: /llvm-project/lld/test/wasm/global-base.test (revision 6912ed7b8fe6db32850b71dce209a287fc4253f6)
1RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %p/Inputs/start.s -o %t.o
2
3# Check for error on `--global-base` with `-shared` and `-pie`
4RUN: not wasm-ld --global-base=2048 --experimental-pic -shared -o %t.wasm %t.o 2>&1 | FileCheck %s -check-prefix=SHARED-ERROR
5RUN: not wasm-ld --global-base=2048 --experimental-pic -pie -o %t.wasm %t.o 2>&1 | FileCheck %s -check-prefix=SHARED-ERROR
6SHARED-ERROR: error: --global-base may not be used with -shared/-pie
7
8# Check for error on `--global-base` which is lower than that end of the stack
9# when `--stack-first` is used.
10RUN: not wasm-ld --global-base=2048 --stack-first -o %t.wasm %t.o 2>&1 | FileCheck %s -check-prefix=STACK-ERROR
11STACK-ERROR: error: --global-base cannot be less than stack size when --stack-first is used
12
13RUN: wasm-ld --export=__global_base --export=__data_end --allow-undefined -o %t.wasm %t.o
14RUN: obj2yaml %t.wasm | FileCheck %s  -check-prefix=CHECK-1024
15CHECK-1024:       - Type:            GLOBAL
16CHECK-1024-NEXT:    Globals:
17CHECK-1024-NEXT:      - Index:           0
18CHECK-1024-NEXT:        Type:            I32
19CHECK-1024-NEXT:        Mutable:         true
20CHECK-1024-NEXT:        InitExpr:
21CHECK-1024-NEXT:          Opcode:          I32_CONST
22CHECK-1024-NEXT:          Value:           66560
23CHECK-1024-NEXT:      - Index:           1
24CHECK-1024-NEXT:        Type:            I32
25CHECK-1024-NEXT:        Mutable:         false
26CHECK-1024-NEXT:        InitExpr:
27CHECK-1024-NEXT:          Opcode:          I32_CONST
28CHECK-1024-NEXT:          Value:           1024
29CHECK-1024-NEXT:      - Index:           2
30CHECK-1024-NEXT:        Type:            I32
31CHECK-1024-NEXT:        Mutable:         false
32CHECK-1024-NEXT:        InitExpr:
33CHECK-1024-NEXT:          Opcode:          I32_CONST
34CHECK-1024-NEXT:          Value:           1024
35
36CHECK-1024:       - Type:            EXPORT
37CHECK-1024:           - Name:            __data_end
38CHECK-1024-NEXT:        Kind:            GLOBAL
39CHECK-1024-NEXT:        Index:           1
40CHECK-1024-NEXT:      - Name:            __global_base
41CHECK-1024-NEXT:        Kind:            GLOBAL
42CHECK-1024-NEXT:        Index:           2
43
44RUN: wasm-ld --export=__global_base --export=__data_end --allow-undefined --global-base=16777216 -o %t.wasm %t.o
45RUN: obj2yaml %t.wasm | FileCheck %s  -check-prefix=CHECK-16777216
46CHECK-16777216:       - Type:            GLOBAL
47CHECK-16777216-NEXT:    Globals:
48CHECK-16777216-NEXT:      - Index:           0
49CHECK-16777216-NEXT:        Type:            I32
50CHECK-16777216-NEXT:        Mutable:         true
51CHECK-16777216-NEXT:        InitExpr:
52CHECK-16777216-NEXT:          Opcode:          I32_CONST
53CHECK-16777216-NEXT:          Value:           16842752
54CHECK-16777216-NEXT:      - Index:           1
55CHECK-16777216-NEXT:        Type:            I32
56CHECK-16777216-NEXT:        Mutable:         false
57CHECK-16777216-NEXT:        InitExpr:
58CHECK-16777216-NEXT:          Opcode:          I32_CONST
59CHECK-16777216-NEXT:          Value:           16777216
60CHECK-16777216-NEXT:      - Index:           2
61CHECK-16777216-NEXT:        Type:            I32
62CHECK-16777216-NEXT:        Mutable:         false
63CHECK-16777216-NEXT:        InitExpr:
64CHECK-16777216-NEXT:          Opcode:          I32_CONST
65CHECK-16777216-NEXT:          Value:           16777216
66
67CHECK-16777216:       - Type:            EXPORT
68CHECK-16777216:           - Name:            __data_end
69CHECK-16777216-NEXT:        Kind:            GLOBAL
70CHECK-16777216-NEXT:        Index:           1
71CHECK-16777216-NEXT:      - Name:            __global_base
72CHECK-16777216-NEXT:        Kind:            GLOBAL
73CHECK-16777216-NEXT:        Index:           2
74