blob: c4f69241badb44dc5c089a1f2a7a939d3d3e233a [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
4target triple = "wasm32-unknown-unknown-wasm"
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
Rui Ueyamaf05124e2018-02-16 22:58:02 +000016; RUN: wasm-ld -no-gc-sections --check-signatures --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
Sam Cleggc94d3932017-11-17 18:14:09 +000019; CHECK: - Type: GLOBAL
Rui Ueyamab9b1a522018-01-24 00:22:53 +000020; CHECK-NEXT: Globals:
Sam Cleggf50534b2018-01-09 21:47:36 +000021; CHECK-NEXT: - Index: 0
22; CHECK-NEXT: Type: I32
Sam Cleggc94d3932017-11-17 18:14:09 +000023; CHECK-NEXT: Mutable: true
Rui Ueyamab9b1a522018-01-24 00:22:53 +000024; CHECK-NEXT: InitExpr:
Sam Cleggc94d3932017-11-17 18:14:09 +000025; CHECK-NEXT: Opcode: I32_CONST
26; CHECK-NEXT: Value: 66608
Sam Cleggf50534b2018-01-09 21:47:36 +000027; CHECK-NEXT: - Index: 1
28; CHECK-NEXT: Type: I32
Sam Cleggc94d3932017-11-17 18:14:09 +000029; CHECK-NEXT: Mutable: false
Rui Ueyamab9b1a522018-01-24 00:22:53 +000030; CHECK-NEXT: InitExpr:
Sam Cleggc94d3932017-11-17 18:14:09 +000031; CHECK-NEXT: Opcode: I32_CONST
Sam Clegg51bcdc22018-01-17 01:34:31 +000032; CHECK-NEXT: Value: 66608
Sam Cleggc94d3932017-11-17 18:14:09 +000033
Sam Cleggff2b1222018-01-22 21:55:43 +000034; CHECK: - Type: DATA
Rui Ueyamab9b1a522018-01-24 00:22:53 +000035; CHECK-NEXT: Segments:
Sam Cleggc94d3932017-11-17 18:14:09 +000036; CHECK-NEXT: - SectionOffset: 7
37; CHECK-NEXT: MemoryIndex: 0
Rui Ueyamab9b1a522018-01-24 00:22:53 +000038; CHECK-NEXT: Offset:
Sam Cleggc94d3932017-11-17 18:14:09 +000039; CHECK-NEXT: Opcode: I32_CONST
40; CHECK-NEXT: Value: 1024
Sam Clegg37fbfc62018-03-14 00:53:34 +000041; CHECK-NEXT: Content: '0100000000000000000000000000000003000000000000002804000024040000'
42; CHECK-NEXT: - SectionOffset: 45
Sam Cleggc94d3932017-11-17 18:14:09 +000043; CHECK-NEXT: MemoryIndex: 0
Rui Ueyamab9b1a522018-01-24 00:22:53 +000044; CHECK-NEXT: Offset:
Sam Cleggc94d3932017-11-17 18:14:09 +000045; CHECK-NEXT: Opcode: I32_CONST
Sam Clegg37fbfc62018-03-14 00:53:34 +000046; CHECK-NEXT: Value: 1056
47; CHECK-NEXT: Content: '0000000000000000'
48; CHECK-NEXT: - SectionOffset: 59
49; CHECK-NEXT: MemoryIndex: 0
50; CHECK-NEXT: Offset:
51; CHECK-NEXT: Opcode: I32_CONST
52; CHECK-NEXT: Value: 1064
Sam Cleggc94d3932017-11-17 18:14:09 +000053; CHECK-NEXT: Content: 68656C6C6F0A00
Sam Clegg37fbfc62018-03-14 00:53:34 +000054; CHECK-NEXT: - Type: CUSTOM
Sam Cleggc94d3932017-11-17 18:14:09 +000055
Sam Cleggff2b1222018-01-22 21:55:43 +000056
Rui Ueyamaf05124e2018-02-16 22:58:02 +000057; RUN: wasm-ld --check-signatures --relocatable -o %t_reloc.wasm %t.o %t.hello.o
Sam Cleggff2b1222018-01-22 21:55:43 +000058; RUN: obj2yaml %t_reloc.wasm | FileCheck %s -check-prefix=RELOC
59
Sam Cleggff2b1222018-01-22 21:55:43 +000060; RELOC: - Type: DATA
61; RELOC-NEXT: Relocations:
62; RELOC-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
Sam Clegg37fbfc62018-03-14 00:53:34 +000063; RELOC-NEXT: Index: 6
Sam Cleggff2b1222018-01-22 21:55:43 +000064; RELOC-NEXT: Offset: 0x00000018
Sam Clegg37fbfc62018-03-14 00:53:34 +000065; RELOC-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
66; RELOC-NEXT: Index: 3
67; RELOC-NEXT: Offset: 0x0000002E
68; RELOC-NEXT: Addend: 4
Sam Cleggff2b1222018-01-22 21:55:43 +000069; RELOC-NEXT: Segments:
70; RELOC-NEXT: - SectionOffset: 6
71; RELOC-NEXT: MemoryIndex: 0
72; RELOC-NEXT: Offset:
73; RELOC-NEXT: Opcode: I32_CONST
74; RELOC-NEXT: Value: 0
75; RELOC-NEXT: Content: '01000000'
76; RELOC-NEXT: - SectionOffset: 15
77; RELOC-NEXT: MemoryIndex: 0
78; RELOC-NEXT: Offset:
79; RELOC-NEXT: Opcode: I32_CONST
80; RELOC-NEXT: Value: 16
81; RELOC-NEXT: Content: '03000000'
82; RELOC-NEXT: - SectionOffset: 24
83; RELOC-NEXT: MemoryIndex: 0
84; RELOC-NEXT: Offset:
85; RELOC-NEXT: Opcode: I32_CONST
86; RELOC-NEXT: Value: 24
Sam Clegg37fbfc62018-03-14 00:53:34 +000087; RELOC-NEXT: Content: '28000000'
Sam Cleggff2b1222018-01-22 21:55:43 +000088; RELOC-NEXT: - SectionOffset: 33
89; RELOC-NEXT: MemoryIndex: 0
Sam Clegg37fbfc62018-03-14 00:53:34 +000090; RELOC-NEXT: Offset:
91; RELOC-NEXT: Opcode: I32_CONST
92; RELOC-NEXT: Value: 28
93; RELOC-NEXT: Content: '0000000000000000'
94; RELOC-NEXT: - SectionOffset: 46
95; RELOC-NEXT: MemoryIndex: 0
96; RELOC-NEXT: Offset:
97; RELOC-NEXT: Opcode: I32_CONST
98; RELOC-NEXT: Value: 36
99; RELOC-NEXT: Content: '20000000'
100; RELOC-NEXT: - SectionOffset: 55
101; RELOC-NEXT: MemoryIndex: 0
Sam Cleggff2b1222018-01-22 21:55:43 +0000102; RELOC-NEXT: Offset:
103; RELOC-NEXT: Opcode: I32_CONST
Sam Clegg37fbfc62018-03-14 00:53:34 +0000104; RELOC-NEXT: Value: 40
Sam Cleggff2b1222018-01-22 21:55:43 +0000105; RELOC-NEXT: Content: 68656C6C6F0A00
106
Sam Clegg93102972018-02-23 05:08:53 +0000107; RELOC: - Type: CUSTOM
Sam Cleggff2b1222018-01-22 21:55:43 +0000108; RELOC-NEXT: Name: linking
Sam Clegg93102972018-02-23 05:08:53 +0000109; RELOC-NEXT: SymbolTable:
110; RELOC-NEXT: - Index: 0
111; RELOC-NEXT: Kind: DATA
112; RELOC-NEXT: Name: foo
113; RELOC-NEXT: Flags: [ VISIBILITY_HIDDEN ]
114; RELOC-NEXT: Segment: 0
115; RELOC-NEXT: Size: 4
116; RELOC-NEXT: - Index: 1
117; RELOC-NEXT: Kind: DATA
118; RELOC-NEXT: Name: aligned_bar
119; RELOC-NEXT: Flags: [ VISIBILITY_HIDDEN ]
120; RELOC-NEXT: Segment: 1
121; RELOC-NEXT: Size: 4
122; RELOC-NEXT: - Index: 2
123; RELOC-NEXT: Kind: DATA
124; RELOC-NEXT: Name: external_ref
125; RELOC-NEXT: Flags: [ ]
126; RELOC-NEXT: Segment: 2
127; RELOC-NEXT: Size: 4
Sam Clegg37fbfc62018-03-14 00:53:34 +0000128; RELOC: - Index: 6
Sam Clegg93102972018-02-23 05:08:53 +0000129; RELOC-NEXT: Kind: DATA
130; RELOC-NEXT: Name: hello_str
131; RELOC-NEXT: Flags: [ ]
Sam Clegg37fbfc62018-03-14 00:53:34 +0000132; RELOC-NEXT: Segment: 5
Sam Clegg93102972018-02-23 05:08:53 +0000133; RELOC-NEXT: Size: 7