blob: 77cf5e0fa737aa94c31a0c7befded981a04b1e40 [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 Clegg752494b2018-05-05 01:23:07 +000016; RUN: wasm-ld -no-gc-sections --allow-undefined -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 Clegg752494b2018-05-05 01:23:07 +000060; RUN: wasm-ld -no-gc-sections --allow-undefined \
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
71
Sam Clegg752494b2018-05-05 01:23:07 +000072; RUN: wasm-ld --relocatable -o %t_reloc.wasm %t.o %t.hello.o
Sam Cleggff2b1222018-01-22 21:55:43 +000073; RUN: obj2yaml %t_reloc.wasm | FileCheck %s -check-prefix=RELOC
74
Sam Cleggff2b1222018-01-22 21:55:43 +000075; RELOC: - Type: DATA
76; RELOC-NEXT: Relocations:
77; RELOC-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
Sam Clegg37fbfc62018-03-14 00:53:34 +000078; RELOC-NEXT: Index: 6
Sam Cleggff2b1222018-01-22 21:55:43 +000079; RELOC-NEXT: Offset: 0x00000018
Sam Clegg37fbfc62018-03-14 00:53:34 +000080; RELOC-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
81; RELOC-NEXT: Index: 3
82; RELOC-NEXT: Offset: 0x0000002E
83; RELOC-NEXT: Addend: 4
Sam Cleggff2b1222018-01-22 21:55:43 +000084; RELOC-NEXT: Segments:
85; RELOC-NEXT: - SectionOffset: 6
86; RELOC-NEXT: MemoryIndex: 0
87; RELOC-NEXT: Offset:
88; RELOC-NEXT: Opcode: I32_CONST
89; RELOC-NEXT: Value: 0
90; RELOC-NEXT: Content: '01000000'
91; RELOC-NEXT: - SectionOffset: 15
92; RELOC-NEXT: MemoryIndex: 0
93; RELOC-NEXT: Offset:
94; RELOC-NEXT: Opcode: I32_CONST
95; RELOC-NEXT: Value: 16
96; RELOC-NEXT: Content: '03000000'
97; RELOC-NEXT: - SectionOffset: 24
98; RELOC-NEXT: MemoryIndex: 0
99; RELOC-NEXT: Offset:
100; RELOC-NEXT: Opcode: I32_CONST
101; RELOC-NEXT: Value: 24
Sam Clegg37fbfc62018-03-14 00:53:34 +0000102; RELOC-NEXT: Content: '28000000'
Sam Cleggff2b1222018-01-22 21:55:43 +0000103; RELOC-NEXT: - SectionOffset: 33
104; RELOC-NEXT: MemoryIndex: 0
Sam Clegg37fbfc62018-03-14 00:53:34 +0000105; RELOC-NEXT: Offset:
106; RELOC-NEXT: Opcode: I32_CONST
107; RELOC-NEXT: Value: 28
108; RELOC-NEXT: Content: '0000000000000000'
109; RELOC-NEXT: - SectionOffset: 46
110; RELOC-NEXT: MemoryIndex: 0
111; RELOC-NEXT: Offset:
112; RELOC-NEXT: Opcode: I32_CONST
113; RELOC-NEXT: Value: 36
114; RELOC-NEXT: Content: '20000000'
115; RELOC-NEXT: - SectionOffset: 55
116; RELOC-NEXT: MemoryIndex: 0
Sam Cleggff2b1222018-01-22 21:55:43 +0000117; RELOC-NEXT: Offset:
118; RELOC-NEXT: Opcode: I32_CONST
Sam Clegg37fbfc62018-03-14 00:53:34 +0000119; RELOC-NEXT: Value: 40
Sam Cleggff2b1222018-01-22 21:55:43 +0000120; RELOC-NEXT: Content: 68656C6C6F0A00
121
Sam Clegg2b8b1792018-04-26 18:17:21 +0000122; RELOC: SymbolTable:
Sam Clegg93102972018-02-23 05:08:53 +0000123; RELOC-NEXT: - Index: 0
124; RELOC-NEXT: Kind: DATA
125; RELOC-NEXT: Name: foo
126; RELOC-NEXT: Flags: [ VISIBILITY_HIDDEN ]
127; RELOC-NEXT: Segment: 0
128; RELOC-NEXT: Size: 4
129; RELOC-NEXT: - Index: 1
130; RELOC-NEXT: Kind: DATA
131; RELOC-NEXT: Name: aligned_bar
132; RELOC-NEXT: Flags: [ VISIBILITY_HIDDEN ]
133; RELOC-NEXT: Segment: 1
134; RELOC-NEXT: Size: 4
135; RELOC-NEXT: - Index: 2
136; RELOC-NEXT: Kind: DATA
137; RELOC-NEXT: Name: external_ref
138; RELOC-NEXT: Flags: [ ]
139; RELOC-NEXT: Segment: 2
140; RELOC-NEXT: Size: 4
Sam Clegg37fbfc62018-03-14 00:53:34 +0000141; RELOC: - Index: 6
Sam Clegg93102972018-02-23 05:08:53 +0000142; RELOC-NEXT: Kind: DATA
143; RELOC-NEXT: Name: hello_str
144; RELOC-NEXT: Flags: [ ]
Sam Clegg37fbfc62018-03-14 00:53:34 +0000145; RELOC-NEXT: Segment: 5
Sam Clegg93102972018-02-23 05:08:53 +0000146; RELOC-NEXT: Size: 7