blob: 7c215efb0d8f4c465446edddf88be1e76436f610 [file] [log] [blame]
Sam Clegg70683b22018-01-24 03:29:47 +00001; RUN: llc -filetype=obj %p/Inputs/hello.ll -o %t.hello.o
2; RUN: llc -filetype=obj %s -o %t.o
3
Sam Clegg262e0902018-05-10 17:59:41 +00004target triple = "wasm32-unknown-unknown"
Sam Cleggc94d3932017-11-17 18:14:09 +00005
Sam Cleggc94d3932017-11-17 18:14:09 +00006@foo = hidden global i32 1, align 4
7@aligned_bar = hidden global i32 3, align 16
8
9@hello_str = external global i8*
10@external_ref = global i8** @hello_str, align 8
11
Sam Clegg37fbfc62018-03-14 00:53:34 +000012%struct.s = type { i32, i32 }
13@local_struct = hidden global %struct.s zeroinitializer, align 4
14@local_struct_internal_ptr = hidden local_unnamed_addr global i32* getelementptr inbounds (%struct.s, %struct.s* @local_struct, i32 0, i32 1), align 4
15
Sam Clegg65d63802018-05-14 23:01:16 +000016; RUN: wasm-ld -no-gc-sections --allow-undefined --no-entry -o %t.wasm %t.o %t.hello.o
Sam Cleggff2b1222018-01-22 21:55:43 +000017; RUN: obj2yaml %t.wasm | FileCheck %s
18
Nicholas Wilson2eb39c12018-03-14 13:53:58 +000019; CHECK: - Type: MEMORY
20; CHECK-NEXT: Memories:
21; CHECK-NEXT: - Initial: 0x00000002
22; CHECK-NEXT: - Type: GLOBAL
Rui Ueyamab9b1a522018-01-24 00:22:53 +000023; CHECK-NEXT: Globals:
Sam Cleggf50534b2018-01-09 21:47:36 +000024; CHECK-NEXT: - Index: 0
25; CHECK-NEXT: Type: I32
Sam Cleggc94d3932017-11-17 18:14:09 +000026; CHECK-NEXT: Mutable: true
Rui Ueyamab9b1a522018-01-24 00:22:53 +000027; CHECK-NEXT: InitExpr:
Sam Cleggc94d3932017-11-17 18:14:09 +000028; CHECK-NEXT: Opcode: I32_CONST
29; CHECK-NEXT: Value: 66608
Sam Cleggf50534b2018-01-09 21:47:36 +000030; CHECK-NEXT: - Index: 1
31; CHECK-NEXT: Type: I32
Sam Cleggc94d3932017-11-17 18:14:09 +000032; CHECK-NEXT: Mutable: false
Rui Ueyamab9b1a522018-01-24 00:22:53 +000033; CHECK-NEXT: InitExpr:
Sam Cleggc94d3932017-11-17 18:14:09 +000034; CHECK-NEXT: Opcode: I32_CONST
Sam Clegg51bcdc22018-01-17 01:34:31 +000035; CHECK-NEXT: Value: 66608
Sam Cleggc94d3932017-11-17 18:14:09 +000036
Sam Cleggff2b1222018-01-22 21:55:43 +000037; CHECK: - Type: DATA
Rui Ueyamab9b1a522018-01-24 00:22:53 +000038; CHECK-NEXT: Segments:
Sam Cleggc94d3932017-11-17 18:14:09 +000039; CHECK-NEXT: - SectionOffset: 7
40; CHECK-NEXT: MemoryIndex: 0
Rui Ueyamab9b1a522018-01-24 00:22:53 +000041; CHECK-NEXT: Offset:
Sam Cleggc94d3932017-11-17 18:14:09 +000042; CHECK-NEXT: Opcode: I32_CONST
43; CHECK-NEXT: Value: 1024
Sam Clegg37fbfc62018-03-14 00:53:34 +000044; CHECK-NEXT: Content: '0100000000000000000000000000000003000000000000002804000024040000'
45; CHECK-NEXT: - SectionOffset: 45
Sam Cleggc94d3932017-11-17 18:14:09 +000046; CHECK-NEXT: MemoryIndex: 0
Rui Ueyamab9b1a522018-01-24 00:22:53 +000047; CHECK-NEXT: Offset:
Sam Cleggc94d3932017-11-17 18:14:09 +000048; CHECK-NEXT: Opcode: I32_CONST
Sam Clegg37fbfc62018-03-14 00:53:34 +000049; CHECK-NEXT: Value: 1056
50; CHECK-NEXT: Content: '0000000000000000'
51; CHECK-NEXT: - SectionOffset: 59
52; CHECK-NEXT: MemoryIndex: 0
53; CHECK-NEXT: Offset:
54; CHECK-NEXT: Opcode: I32_CONST
55; CHECK-NEXT: Value: 1064
Sam Cleggc94d3932017-11-17 18:14:09 +000056; CHECK-NEXT: Content: 68656C6C6F0A00
Sam Clegg37fbfc62018-03-14 00:53:34 +000057; CHECK-NEXT: - Type: CUSTOM
Sam Cleggc94d3932017-11-17 18:14:09 +000058
Sam Cleggff2b1222018-01-22 21:55:43 +000059
Sam Clegg65d63802018-05-14 23:01:16 +000060; RUN: wasm-ld -no-gc-sections --allow-undefined --no-entry \
Nicholas Wilson2eb39c12018-03-14 13:53:58 +000061; RUN: --initial-memory=131072 --max-memory=131072 -o %t_max.wasm %t.o \
62; RUN: %t.hello.o
63; RUN: obj2yaml %t_max.wasm | FileCheck %s -check-prefix=CHECK-MAX
64
65; CHECK-MAX: - Type: MEMORY
66; CHECK-MAX-NEXT: Memories:
67; CHECK-MAX-NEXT: - Flags: [ HAS_MAX ]
68; CHECK-MAX-NEXT: Initial: 0x00000002
69; CHECK-MAX-NEXT: Maximum: 0x00000002
70
Derek Schuff3bea8bc2018-11-06 17:59:32 +000071; RUN: wasm-ld -no-gc-sections --allow-undefined --no-entry --shared-memory \
72; RUN: --initial-memory=131072 --max-memory=131072 -o %t_max.wasm %t.o \
73; RUN: %t.hello.o
74; RUN: obj2yaml %t_max.wasm | FileCheck %s -check-prefix=CHECK-SHARED
75
76; CHECK-SHARED: - Type: MEMORY
77; CHECK-SHARED-NEXT: Memories:
78; CHECK-SHARED-NEXT: - Flags: [ HAS_MAX, IS_SHARED ]
79; CHECK-SHARED-NEXT: Initial: 0x00000002
80; CHECK-SHARED-NEXT: Maximum: 0x00000002
Nicholas Wilson2eb39c12018-03-14 13:53:58 +000081
Sam Clegg752494b2018-05-05 01:23:07 +000082; RUN: wasm-ld --relocatable -o %t_reloc.wasm %t.o %t.hello.o
Sam Cleggff2b1222018-01-22 21:55:43 +000083; RUN: obj2yaml %t_reloc.wasm | FileCheck %s -check-prefix=RELOC
84
Sam Cleggff2b1222018-01-22 21:55:43 +000085; RELOC: - Type: DATA
86; RELOC-NEXT: Relocations:
87; RELOC-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
Sam Clegg89e4dcb2019-01-30 18:55:15 +000088; RELOC-NEXT: Index: 3
Sam Cleggff2b1222018-01-22 21:55:43 +000089; RELOC-NEXT: Offset: 0x00000018
Sam Clegg37fbfc62018-03-14 00:53:34 +000090; RELOC-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
Sam Clegg89e4dcb2019-01-30 18:55:15 +000091; RELOC-NEXT: Index: 4
Sam Clegg37fbfc62018-03-14 00:53:34 +000092; RELOC-NEXT: Offset: 0x0000002E
93; RELOC-NEXT: Addend: 4
Sam Cleggff2b1222018-01-22 21:55:43 +000094; RELOC-NEXT: Segments:
95; RELOC-NEXT: - SectionOffset: 6
96; RELOC-NEXT: MemoryIndex: 0
97; RELOC-NEXT: Offset:
98; RELOC-NEXT: Opcode: I32_CONST
99; RELOC-NEXT: Value: 0
100; RELOC-NEXT: Content: '01000000'
101; RELOC-NEXT: - SectionOffset: 15
102; RELOC-NEXT: MemoryIndex: 0
103; RELOC-NEXT: Offset:
104; RELOC-NEXT: Opcode: I32_CONST
105; RELOC-NEXT: Value: 16
106; RELOC-NEXT: Content: '03000000'
107; RELOC-NEXT: - SectionOffset: 24
108; RELOC-NEXT: MemoryIndex: 0
109; RELOC-NEXT: Offset:
110; RELOC-NEXT: Opcode: I32_CONST
111; RELOC-NEXT: Value: 24
Sam Clegg37fbfc62018-03-14 00:53:34 +0000112; RELOC-NEXT: Content: '28000000'
Sam Cleggff2b1222018-01-22 21:55:43 +0000113; RELOC-NEXT: - SectionOffset: 33
114; RELOC-NEXT: MemoryIndex: 0
Sam Clegg37fbfc62018-03-14 00:53:34 +0000115; RELOC-NEXT: Offset:
116; RELOC-NEXT: Opcode: I32_CONST
117; RELOC-NEXT: Value: 28
118; RELOC-NEXT: Content: '0000000000000000'
119; RELOC-NEXT: - SectionOffset: 46
120; RELOC-NEXT: MemoryIndex: 0
121; RELOC-NEXT: Offset:
122; RELOC-NEXT: Opcode: I32_CONST
123; RELOC-NEXT: Value: 36
124; RELOC-NEXT: Content: '20000000'
125; RELOC-NEXT: - SectionOffset: 55
126; RELOC-NEXT: MemoryIndex: 0
Sam Cleggff2b1222018-01-22 21:55:43 +0000127; RELOC-NEXT: Offset:
128; RELOC-NEXT: Opcode: I32_CONST
Sam Clegg37fbfc62018-03-14 00:53:34 +0000129; RELOC-NEXT: Value: 40
Sam Cleggff2b1222018-01-22 21:55:43 +0000130; RELOC-NEXT: Content: 68656C6C6F0A00
131
Sam Clegg2b8b1792018-04-26 18:17:21 +0000132; RELOC: SymbolTable:
Sam Clegg93102972018-02-23 05:08:53 +0000133; RELOC-NEXT: - Index: 0
134; RELOC-NEXT: Kind: DATA
135; RELOC-NEXT: Name: foo
136; RELOC-NEXT: Flags: [ VISIBILITY_HIDDEN ]
137; RELOC-NEXT: Segment: 0
138; RELOC-NEXT: Size: 4
139; RELOC-NEXT: - Index: 1
140; RELOC-NEXT: Kind: DATA
141; RELOC-NEXT: Name: aligned_bar
142; RELOC-NEXT: Flags: [ VISIBILITY_HIDDEN ]
143; RELOC-NEXT: Segment: 1
144; RELOC-NEXT: Size: 4
145; RELOC-NEXT: - Index: 2
146; RELOC-NEXT: Kind: DATA
147; RELOC-NEXT: Name: external_ref
148; RELOC-NEXT: Flags: [ ]
149; RELOC-NEXT: Segment: 2
150; RELOC-NEXT: Size: 4
Sam Clegg89e4dcb2019-01-30 18:55:15 +0000151; RELOC-NEXT: - Index: 3
Sam Clegg93102972018-02-23 05:08:53 +0000152; RELOC-NEXT: Kind: DATA
153; RELOC-NEXT: Name: hello_str
154; RELOC-NEXT: Flags: [ ]
Sam Clegg37fbfc62018-03-14 00:53:34 +0000155; RELOC-NEXT: Segment: 5
Sam Clegg93102972018-02-23 05:08:53 +0000156; RELOC-NEXT: Size: 7