[WebAssembly] Add first claass symbol table to wasm objects
This is combination of two patches by Nicholas Wilson:
1. https://reviews.llvm.org/D41954
2. https://reviews.llvm.org/D42495
Along with a few local modifications:
- One change I made was to add the UNDEFINED bit to the binary format
to avoid the extra byte used when writing data symbols. Although this
bit is redundant for other symbols types (i.e. undefined can be
implied if a function or global is a wasm import)
- I prefer to be explicit and consistent and not have derived flags.
- Some field renaming.
- Some reverting of unrelated minor changes.
- No test output differences.
Differential Revision: https://reviews.llvm.org/D43147
llvm-svn: 325860
diff --git a/llvm/test/MC/WebAssembly/array-fill.ll b/llvm/test/MC/WebAssembly/array-fill.ll
index 7f392c4..e510fbe 100644
--- a/llvm/test/MC/WebAssembly/array-fill.ll
+++ b/llvm/test/MC/WebAssembly/array-fill.ll
@@ -15,9 +15,13 @@
; CHECK: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 2
-; CHECK-NEXT: SymbolInfo:
-; CHECK-NEXT: - Name: gBd
+; CHECK-NEXT: SymbolTable:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: gBd
; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
+; CHECK-NEXT: Segment: 0
+; CHECK-NEXT: Size: 2
; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .data
diff --git a/llvm/test/MC/WebAssembly/bss.ll b/llvm/test/MC/WebAssembly/bss.ll
index ce1ae5a..a1d7def 100644
--- a/llvm/test/MC/WebAssembly/bss.ll
+++ b/llvm/test/MC/WebAssembly/bss.ll
@@ -9,75 +9,60 @@
@foo = global %union.u1 zeroinitializer, align 1
@bar = global %union.u1 zeroinitializer, align 1
-; CHECK: - Type: GLOBAL
-; CHECK-NEXT: Globals:
-; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 0
-; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 4
-; CHECK-NEXT: - Index: 2
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 8
-; CHECK-NEXT: - Index: 3
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 9
-; CHECK-NEXT: - Type: EXPORT
-; CHECK-NEXT: Exports:
-; CHECK-NEXT: - Name: g0
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 0
-; CHECK-NEXT: - Name: g1
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 1
-; CHECK-NEXT: - Name: foo
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 2
-; CHECK-NEXT: - Name: bar
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 3
-; CHECK-NEXT: - Type: DATA
-; CHECK-NEXT: Segments:
+; CHECK: - Type: DATA
+; CHECK-NEXT: Segments:
; CHECK-NEXT: - SectionOffset: 6
; CHECK-NEXT: MemoryIndex: 0
-; CHECK-NEXT: Offset:
+; CHECK-NEXT: Offset:
; CHECK-NEXT: Opcode: I32_CONST
; CHECK-NEXT: Value: 0
; CHECK-NEXT: Content: '00000000'
; CHECK-NEXT: - SectionOffset: 15
; CHECK-NEXT: MemoryIndex: 0
-; CHECK-NEXT: Offset:
+; CHECK-NEXT: Offset:
; CHECK-NEXT: Opcode: I32_CONST
; CHECK-NEXT: Value: 4
; CHECK-NEXT: Content: '00000000'
; CHECK-NEXT: - SectionOffset: 24
; CHECK-NEXT: MemoryIndex: 0
-; CHECK-NEXT: Offset:
+; CHECK-NEXT: Offset:
; CHECK-NEXT: Opcode: I32_CONST
; CHECK-NEXT: Value: 8
-; CHECK-NEXT: Content: '00'
-; CHECK-NEXT: - SectionOffset: 30
+; CHECK-NEXT: Content: ''
+; CHECK-NEXT: - SectionOffset: 29
; CHECK-NEXT: MemoryIndex: 0
-; CHECK-NEXT: Offset:
+; CHECK-NEXT: Offset:
; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 9
-; CHECK-NEXT: Content: '00'
+; CHECK-NEXT: Value: 8
+; CHECK-NEXT: Content: ''
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
-; CHECK-NEXT: DataSize: 10
+; CHECK-NEXT: DataSize: 8
+; CHECK-NEXT: SymbolTable:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: g0
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 0
+; CHECK-NEXT: Size: 4
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: g1
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 1
+; CHECK-NEXT: Size: 4
+; CHECK-NEXT: - Index: 2
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: foo
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 2
+; CHECK-NEXT: Size: 0
+; CHECK-NEXT: - Index: 3
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: bar
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 3
+; CHECK-NEXT: Size: 0
; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .bss.g0
diff --git a/llvm/test/MC/WebAssembly/comdat.ll b/llvm/test/MC/WebAssembly/comdat.ll
index db30aea..02fc802 100644
--- a/llvm/test/MC/WebAssembly/comdat.ll
+++ b/llvm/test/MC/WebAssembly/comdat.ll
@@ -50,28 +50,6 @@
; CHECK-NEXT: SigIndex: 0
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 0, 0 ]
-; CHECK-NEXT: - Type: GLOBAL
-; CHECK-NEXT: Globals:
-; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 0
-; CHECK-NEXT: - Type: EXPORT
-; CHECK-NEXT: Exports:
-; CHECK-NEXT: - Name: callImport
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 1
-; CHECK-NEXT: - Name: basicInlineFn
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 2
-; CHECK-NEXT: - Name: sharedFn
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 3
-; CHECK-NEXT: - Name: constantData
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 0
; CHECK-NEXT: - Type: CODE
; CHECK-NEXT: Relocations:
; CHECK-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
@@ -98,24 +76,44 @@
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 3
-; CHECK-NEXT: SymbolInfo:
-; CHECK-NEXT: - Name: basicInlineFn
-; CHECK-NEXT: Flags: [ BINDING_WEAK ]
-; CHECK-NEXT: - Name: sharedFn
-; CHECK-NEXT: Flags: [ BINDING_WEAK ]
-; CHECK-NEXT: - Name: constantData
-; CHECK-NEXT: Flags: [ BINDING_WEAK ]
+; CHECK-NEXT: SymbolTable:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: funcImport
+; CHECK-NEXT: Flags: [ UNDEFINED ]
+; CHECK-NEXT: Function: 0
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: callImport
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Function: 1
+; CHECK-NEXT: - Index: 2
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: basicInlineFn
+; CHECK-NEXT: Flags: [ BINDING_WEAK ]
+; CHECK-NEXT: Function: 2
+; CHECK-NEXT: - Index: 3
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: sharedFn
+; CHECK-NEXT: Flags: [ BINDING_WEAK ]
+; CHECK-NEXT: Function: 3
+; CHECK-NEXT: - Index: 4
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: constantData
+; CHECK-NEXT: Flags: [ BINDING_WEAK ]
+; CHECK-NEXT: Segment: 0
+; CHECK-NEXT: Size: 3
; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .rodata.constantData
; CHECK-NEXT: Alignment: 1
; CHECK-NEXT: Flags: [ ]
; CHECK-NEXT: Comdats:
-; CHECK-NEXT: - Name: basicInlineFn
+; CHECK-NEXT: Name: basicInlineFn
; CHECK-NEXT: Entries:
; CHECK-NEXT: - Kind: FUNCTION
; CHECK-NEXT: Index: 2
-; CHECK-NEXT: - Name: sharedComdat
+; CHECK-NEXT: Name: sharedComdat
; CHECK-NEXT: Entries:
; CHECK-NEXT: - Kind: FUNCTION
; CHECK-NEXT: Index: 3
diff --git a/llvm/test/MC/WebAssembly/explicit-sections.ll b/llvm/test/MC/WebAssembly/explicit-sections.ll
index b190c1f..19a904b 100644
--- a/llvm/test/MC/WebAssembly/explicit-sections.ll
+++ b/llvm/test/MC/WebAssembly/explicit-sections.ll
@@ -9,47 +9,8 @@
@global2 = global i64 7, align 8, section ".sec1"
@global3 = global i32 8, align 8, section ".sec2"
-; CHECK: - Type: GLOBAL
-; CHECK-NEXT: Globals:
-; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 0
-; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 8
-; CHECK-NEXT: - Index: 2
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 16
-; CHECK-NEXT: - Index: 3
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 24
-; CHECK-NEXT: - Type: EXPORT
-; CHECK-NEXT: Exports:
-; CHECK-NEXT: - Name: global0
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 0
-; CHECK-NEXT: - Name: global1
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 1
-; CHECK-NEXT: - Name: global2
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 2
-; CHECK-NEXT: - Name: global3
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 3
-; CHECK-NEXT: - Type: DATA
+
+; CHECK: - Type: DATA
; CHECK-NEXT: Segments:
; CHECK-NEXT: - SectionOffset: 6
; CHECK-NEXT: MemoryIndex: 0
@@ -69,10 +30,35 @@
; CHECK-NEXT: Opcode: I32_CONST
; CHECK-NEXT: Value: 24
; CHECK-NEXT: Content: '08000000'
-
-; CHECK: - Type: CUSTOM
+; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 28
+; CHECK-NEXT: SymbolTable:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: global0
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 0
+; CHECK-NEXT: Size: 4
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: global1
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 1
+; CHECK-NEXT: Size: 8
+; CHECK-NEXT: - Index: 2
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: global2
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 1
+; CHECK-NEXT: Offset: 8
+; CHECK-NEXT: Size: 8
+; CHECK-NEXT: - Index: 3
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: global3
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 2
+; CHECK-NEXT: Size: 4
; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .data.global0
diff --git a/llvm/test/MC/WebAssembly/func-address.ll b/llvm/test/MC/WebAssembly/func-address.ll
index 4c0cc28..04c0612 100644
--- a/llvm/test/MC/WebAssembly/func-address.ll
+++ b/llvm/test/MC/WebAssembly/func-address.ll
@@ -30,7 +30,7 @@
; CHECK: }
; CHECK: Relocations [
-; CHECK: Section (6) CODE {
+; CHECK: Section (5) CODE {
; CHECK: Relocation {
; CHECK: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
; CHECK: Offset: 0x4
@@ -44,6 +44,6 @@
; CHECK: Relocation {
; CHECK: Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB (1)
; CHECK: Offset: 0x1E
-; CHECK: Index: 0x2
+; CHECK: Index: 0x3
; CHECK: }
; CHECK: }
diff --git a/llvm/test/MC/WebAssembly/global-ctor-dtor.ll b/llvm/test/MC/WebAssembly/global-ctor-dtor.ll
index 6724911..ed7f977 100644
--- a/llvm/test/MC/WebAssembly/global-ctor-dtor.ll
+++ b/llvm/test/MC/WebAssembly/global-ctor-dtor.ll
@@ -38,11 +38,6 @@
; CHECK-NEXT: Kind: FUNCTION
; CHECK-NEXT: SigIndex: 1
; CHECK-NEXT: - Module: env
-; CHECK-NEXT: Field: __dso_handle
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: GlobalType: I32
-; CHECK-NEXT: GlobalMutable: false
-; CHECK-NEXT: - Module: env
; CHECK-NEXT: Field: __cxa_atexit
; CHECK-NEXT: Kind: FUNCTION
; CHECK-NEXT: SigIndex: 2
@@ -60,31 +55,6 @@
; CHECK-NEXT: SigIndex: 1
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 1 ]
-; CHECK-NEXT: - Type: GLOBAL
-; CHECK-NEXT: Globals:
-; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 0
-; CHECK-NEXT: - Type: EXPORT
-; CHECK-NEXT: Exports:
-; CHECK-NEXT: - Name: .Lcall_dtors.42
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 5
-; CHECK-NEXT: - Name: .Lregister_call_dtors.42
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 6
-; CHECK-NEXT: - Name: .Lcall_dtors
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 7
-; CHECK-NEXT: - Name: .Lregister_call_dtors
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 8
-; CHECK-NEXT: - Name: global1
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 1
; CHECK-NEXT: - Type: ELEM
; CHECK-NEXT: Segments:
; CHECK-NEXT: - Offset:
@@ -97,25 +67,25 @@
; CHECK-NEXT: Index: 0
; CHECK-NEXT: Offset: 0x00000004
; CHECK-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB
-; CHECK-NEXT: Index: 5
+; CHECK-NEXT: Index: 6
; CHECK-NEXT: Offset: 0x0000000F
; CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_SLEB
-; CHECK-NEXT: Index: 0
+; CHECK-NEXT: Index: 1
; CHECK-NEXT: Offset: 0x00000017
; CHECK-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
-; CHECK-NEXT: Index: 1
+; CHECK-NEXT: Index: 2
; CHECK-NEXT: Offset: 0x0000001D
; CHECK-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
-; CHECK-NEXT: Index: 2
+; CHECK-NEXT: Index: 3
; CHECK-NEXT: Offset: 0x0000002C
; CHECK-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB
-; CHECK-NEXT: Index: 7
+; CHECK-NEXT: Index: 8
; CHECK-NEXT: Offset: 0x00000037
; CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_SLEB
-; CHECK-NEXT: Index: 0
+; CHECK-NEXT: Index: 1
; CHECK-NEXT: Offset: 0x0000003F
; CHECK-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
-; CHECK-NEXT: Index: 1
+; CHECK-NEXT: Index: 2
; CHECK-NEXT: Offset: 0x00000045
; CHECK-NEXT: Functions:
; CHECK-NEXT: - Index: 5
@@ -141,17 +111,62 @@
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 4
-; CHECK-NEXT: SymbolInfo:
-; CHECK-NEXT: - Name: __dso_handle
-; CHECK-NEXT: Flags: [ BINDING_WEAK, VISIBILITY_HIDDEN ]
-; CHECK-NEXT: - Name: .Lcall_dtors.42
+; CHECK-NEXT: SymbolTable:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: func3
+; CHECK-NEXT: Flags: [ UNDEFINED ]
+; CHECK-NEXT: Function: 0
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: __dso_handle
+; CHECK-NEXT: Flags: [ BINDING_WEAK, VISIBILITY_HIDDEN, UNDEFINED ]
+; CHECK-NEXT: - Index: 2
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: __cxa_atexit
+; CHECK-NEXT: Flags: [ UNDEFINED ]
+; CHECK-NEXT: Function: 1
+; CHECK-NEXT: - Index: 3
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: func2
+; CHECK-NEXT: Flags: [ UNDEFINED ]
+; CHECK-NEXT: Function: 2
+; CHECK-NEXT: - Index: 4
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: func1
+; CHECK-NEXT: Flags: [ UNDEFINED ]
+; CHECK-NEXT: Function: 3
+; CHECK-NEXT: - Index: 5
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: func0
+; CHECK-NEXT: Flags: [ UNDEFINED ]
+; CHECK-NEXT: Function: 4
+; CHECK-NEXT: - Index: 6
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: .Lcall_dtors.42
; CHECK-NEXT: Flags: [ BINDING_LOCAL ]
-; CHECK-NEXT: - Name: .Lregister_call_dtors.42
+; CHECK-NEXT: Function: 5
+; CHECK-NEXT: - Index: 7
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: .Lregister_call_dtors.42
; CHECK-NEXT: Flags: [ BINDING_LOCAL ]
-; CHECK-NEXT: - Name: .Lcall_dtors
+; CHECK-NEXT: Function: 6
+; CHECK-NEXT: - Index: 8
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: .Lcall_dtors
; CHECK-NEXT: Flags: [ BINDING_LOCAL ]
-; CHECK-NEXT: - Name: .Lregister_call_dtors
+; CHECK-NEXT: Function: 7
+; CHECK-NEXT: - Index: 9
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: .Lregister_call_dtors
; CHECK-NEXT: Flags: [ BINDING_LOCAL ]
+; CHECK-NEXT: Function: 8
+; CHECK-NEXT: - Index: 10
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: global1
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 0
+; CHECK-NEXT: Size: 4
; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .data.global1
@@ -159,11 +174,11 @@
; CHECK-NEXT: Flags: [ ]
; CHECK-NEXT: InitFunctions:
; CHECK-NEXT: - Priority: 42
-; CHECK-NEXT: FunctionIndex: 3
+; CHECK-NEXT: Symbol: 4
; CHECK-NEXT: - Priority: 42
-; CHECK-NEXT: FunctionIndex: 6
+; CHECK-NEXT: Symbol: 7
; CHECK-NEXT: - Priority: 65535
-; CHECK-NEXT: FunctionIndex: 4
+; CHECK-NEXT: Symbol: 5
; CHECK-NEXT: - Priority: 65535
-; CHECK-NEXT: FunctionIndex: 8
+; CHECK-NEXT: Symbol: 9
; CHECK-NEXT: ...
diff --git a/llvm/test/MC/WebAssembly/reloc-code.ll b/llvm/test/MC/WebAssembly/reloc-code.ll
index 757a733..bbb9213 100644
--- a/llvm/test/MC/WebAssembly/reloc-code.ll
+++ b/llvm/test/MC/WebAssembly/reloc-code.ll
@@ -24,17 +24,17 @@
; CHECK: Format: WASM
; CHECK: Relocations [
-; CHECK-NEXT: Section (6) CODE {
+; CHECK-NEXT: Section (4) CODE {
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_LEB (3)
; CHECK-NEXT: Offset: 0x9
-; CHECK-NEXT: Index: 0x0
+; CHECK-NEXT: Index: 0x3
; CHECK-NEXT: Addend: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_LEB (3)
; CHECK-NEXT: Offset: 0x14
-; CHECK-NEXT: Index: 0x1
+; CHECK-NEXT: Index: 0x4
; CHECK-NEXT: Addend: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
diff --git a/llvm/test/MC/WebAssembly/reloc-data.ll b/llvm/test/MC/WebAssembly/reloc-data.ll
index 4debf09..bd17cc8 100644
--- a/llvm/test/MC/WebAssembly/reloc-data.ll
+++ b/llvm/test/MC/WebAssembly/reloc-data.ll
@@ -13,7 +13,7 @@
; CHECK: Format: WASM
; CHECK: Relocations [
-; CHECK-NEXT: Section (4) DATA {
+; CHECK-NEXT: Section (2) DATA {
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_I32 (5)
; CHECK-NEXT: Offset: 0x13
diff --git a/llvm/test/MC/WebAssembly/sections.ll b/llvm/test/MC/WebAssembly/sections.ll
index fa38555..a4ccec2 100644
--- a/llvm/test/MC/WebAssembly/sections.ll
+++ b/llvm/test/MC/WebAssembly/sections.ll
@@ -29,12 +29,6 @@
; CHECK: Type: FUNCTION (0x3)
; CHECK: }
; CHECK: Section {
-; CHECK: Type: GLOBAL (0x6)
-; CHECK: }
-; CHECK: Section {
-; CHECK: Type: EXPORT (0x7)
-; CHECK: }
-; CHECK: Section {
; CHECK: Type: CODE (0xA)
; CHECK: }
; CHECK: Section {
diff --git a/llvm/test/MC/WebAssembly/unnamed-data.ll b/llvm/test/MC/WebAssembly/unnamed-data.ll
index cc92464..fe66543 100644
--- a/llvm/test/MC/WebAssembly/unnamed-data.ll
+++ b/llvm/test/MC/WebAssembly/unnamed-data.ll
@@ -9,47 +9,7 @@
@b = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str2, i32 0, i32 0), align 8
-; CHECK: - Type: GLOBAL
-; CHECK-NEXT: Globals:
-; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 0
-; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 6
-; CHECK-NEXT: - Index: 2
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 16
-; CHECK-NEXT: - Index: 3
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 24
-; CHECK-NEXT: - Type: EXPORT
-; CHECK-NEXT: Exports:
-; CHECK-NEXT: - Name: .L.str1
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 0
-; CHECK-NEXT: - Name: .L.str2
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 1
-; CHECK-NEXT: - Name: a
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 2
-; CHECK-NEXT: - Name: b
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 3
-; CHECK-NEXT: - Type: DATA
+; CHECK: - Type: DATA
; CHECK-NEXT: Relocations:
; CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
; CHECK-NEXT: Index: 0
@@ -85,11 +45,31 @@
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 28
-; CHECK-NEXT: SymbolInfo:
-; CHECK-NEXT: - Name: .L.str1
+; CHECK-NEXT: SymbolTable:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: .L.str1
; CHECK-NEXT: Flags: [ BINDING_LOCAL ]
-; CHECK-NEXT: - Name: .L.str2
+; CHECK-NEXT: Segment: 0
+; CHECK-NEXT: Size: 6
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: .L.str2
; CHECK-NEXT: Flags: [ BINDING_LOCAL ]
+; CHECK-NEXT: Segment: 1
+; CHECK-NEXT: Size: 6
+; CHECK-NEXT: - Index: 2
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: a
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 2
+; CHECK-NEXT: Size: 4
+; CHECK-NEXT: - Index: 3
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: b
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 3
+; CHECK-NEXT: Size: 4
; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .rodata..L.str1
diff --git a/llvm/test/MC/WebAssembly/visibility.ll b/llvm/test/MC/WebAssembly/visibility.ll
index 8c26ef0..6a024c5 100644
--- a/llvm/test/MC/WebAssembly/visibility.ll
+++ b/llvm/test/MC/WebAssembly/visibility.ll
@@ -17,7 +17,15 @@
; CHECK: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 0
-; CHECK-NEXT: SymbolInfo:
-; CHECK-NEXT: - Name: hiddenVis
+; CHECK-NEXT: SymbolTable:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: defaultVis
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Function: 0
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: hiddenVis
; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
+; CHECK-NEXT: Function: 1
; CHECK-NEXT: ...
diff --git a/llvm/test/MC/WebAssembly/weak-alias.ll b/llvm/test/MC/WebAssembly/weak-alias.ll
index 6036159..c8a907b 100644
--- a/llvm/test/MC/WebAssembly/weak-alias.ll
+++ b/llvm/test/MC/WebAssembly/weak-alias.ll
@@ -65,118 +65,57 @@
; CHECK-NEXT: ElemType: ANYFUNC
; CHECK-NEXT: Limits:
; CHECK-NEXT: Initial: 0x00000001
-; CHECK-NEXT: - Module: env
-; CHECK-NEXT: Field: foo_alias
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: SigIndex: 0
-; CHECK-NEXT: - Module: env
-; CHECK-NEXT: Field: bar_alias
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: GlobalType: I32
-; CHECK-NEXT: GlobalMutable: false
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 0, 0, 0, 0 ]
-; CHECK-NEXT: - Type: GLOBAL
-; CHECK-NEXT: Globals:
-; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 8
-; CHECK-NEXT: - Index: 2
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 16
-; CHECK-NEXT: - Index: 3
-; CHECK-NEXT: Type: I32
-; CHECK-NEXT: Mutable: false
-; CHECK-NEXT: InitExpr:
-; CHECK-NEXT: Opcode: I32_CONST
-; CHECK-NEXT: Value: 0
-; CHECK-NEXT: - Type: EXPORT
-; CHECK-NEXT: Exports:
-; CHECK-NEXT: - Name: foo
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 1
-; CHECK-NEXT: - Name: call_direct
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 2
-; CHECK-NEXT: - Name: call_alias
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 3
-; CHECK-NEXT: - Name: call_direct_ptr
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 4
-; CHECK-NEXT: - Name: direct_address
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 1
-; CHECK-NEXT: - Name: call_alias_ptr
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 5
-; CHECK-NEXT: - Name: alias_address
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 2
-; CHECK-NEXT: - Name: bar
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 3
-; CHECK-NEXT: - Name: foo_alias
-; CHECK-NEXT: Kind: FUNCTION
-; CHECK-NEXT: Index: 1
-; CHECK-NEXT: - Name: bar_alias
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: Index: 3
; CHECK-NEXT: - Type: ELEM
; CHECK-NEXT: Segments:
; CHECK-NEXT: - Offset:
; CHECK-NEXT: Opcode: I32_CONST
; CHECK-NEXT: Value: 1
-; CHECK-NEXT: Functions: [ 1 ]
+; CHECK-NEXT: Functions: [ 0 ]
; CHECK-NEXT: - Type: CODE
; CHECK-NEXT: Relocations:
; CHECK-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
-; CHECK-NEXT: Index: 1
+; CHECK-NEXT: Index: 0
; CHECK-NEXT: Offset: 0x00000009
; CHECK-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
-; CHECK-NEXT: Index: 0
+; CHECK-NEXT: Index: 8
; CHECK-NEXT: Offset: 0x00000012
; CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_LEB
-; CHECK-NEXT: Index: 1
+; CHECK-NEXT: Index: 4
; CHECK-NEXT: Offset: 0x0000001E
; CHECK-NEXT: - Type: R_WEBASSEMBLY_TYPE_INDEX_LEB
; CHECK-NEXT: Index: 0
; CHECK-NEXT: Offset: 0x00000024
; CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_LEB
-; CHECK-NEXT: Index: 2
+; CHECK-NEXT: Index: 6
; CHECK-NEXT: Offset: 0x00000031
; CHECK-NEXT: - Type: R_WEBASSEMBLY_TYPE_INDEX_LEB
; CHECK-NEXT: Index: 0
; CHECK-NEXT: Offset: 0x00000037
; CHECK-NEXT: Functions:
-; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Locals:
; CHECK-NEXT: Body: 41000B
-; CHECK-NEXT: - Index: 2
-; CHECK-NEXT: Locals:
-; CHECK-NEXT: Body: 1081808080000B
-; CHECK-NEXT: - Index: 3
+; CHECK-NEXT: - Index: 1
; CHECK-NEXT: Locals:
; CHECK-NEXT: Body: 1080808080000B
-; CHECK-NEXT: - Index: 4
+; CHECK-NEXT: - Index: 2
+; CHECK-NEXT: Locals:
+; CHECK-NEXT: Body: 1080808080000B
+; CHECK-NEXT: - Index: 3
; CHECK-NEXT: Locals:
; CHECK-NEXT: Body: 410028028880808000118080808000000B
-; CHECK-NEXT: - Index: 5
+; CHECK-NEXT: - Index: 4
; CHECK-NEXT: Locals:
; CHECK-NEXT: Body: 410028029080808000118080808000000B
; CHECK-NEXT: - Type: DATA
; CHECK-NEXT: Relocations:
; CHECK-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_I32
-; CHECK-NEXT: Index: 1
+; CHECK-NEXT: Index: 0
; CHECK-NEXT: Offset: 0x0000000F
; CHECK-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_I32
-; CHECK-NEXT: Index: 0
+; CHECK-NEXT: Index: 8
; CHECK-NEXT: Offset: 0x00000018
; CHECK-NEXT: Segments:
; CHECK-NEXT: - SectionOffset: 6
@@ -200,21 +139,61 @@
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 20
-; CHECK-NEXT: SymbolInfo:
-; CHECK-NEXT: - Name: foo_alias
+; CHECK-NEXT: SymbolTable:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: foo
+; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
+; CHECK-NEXT: Function: 0
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: call_direct
+; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
+; CHECK-NEXT: Function: 1
+; CHECK-NEXT: - Index: 2
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: call_alias
+; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
+; CHECK-NEXT: Function: 2
+; CHECK-NEXT: - Index: 3
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: call_direct_ptr
+; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
+; CHECK-NEXT: Function: 3
+; CHECK-NEXT: - Index: 4
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: direct_address
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 1
+; CHECK-NEXT: Size: 4
+; CHECK-NEXT: - Index: 5
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: call_alias_ptr
+; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
+; CHECK-NEXT: Function: 4
+; CHECK-NEXT: - Index: 6
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: alias_address
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 2
+; CHECK-NEXT: Size: 4
+; CHECK-NEXT: - Index: 7
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: bar
+; CHECK-NEXT: Flags: [ ]
+; CHECK-NEXT: Segment: 0
+; CHECK-NEXT: Size: 4
+; CHECK-NEXT: - Index: 8
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: foo_alias
; CHECK-NEXT: Flags: [ BINDING_WEAK, VISIBILITY_HIDDEN ]
-; CHECK-NEXT: - Name: bar_alias
+; CHECK-NEXT: Function: 0
+; CHECK-NEXT: - Index: 9
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: bar_alias
; CHECK-NEXT: Flags: [ BINDING_WEAK, VISIBILITY_HIDDEN ]
-; CHECK-NEXT: - Name: foo
-; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
-; CHECK-NEXT: - Name: call_direct
-; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
-; CHECK-NEXT: - Name: call_alias
-; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
-; CHECK-NEXT: - Name: call_direct_ptr
-; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
-; CHECK-NEXT: - Name: call_alias_ptr
-; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
+; CHECK-NEXT: Segment: 0
+; CHECK-NEXT: Size: 4
; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .data.bar
@@ -231,13 +210,13 @@
; CHECK-NEXT: ...
; CHECK-SYMS: SYMBOL TABLE:
-; CHECK-SYMS-NEXT: 00000001 gw F CODE .hidden foo_alias
-; CHECK-SYMS-NEXT: 00000000 gw DATA .hidden bar_alias
-; CHECK-SYMS-NEXT: 00000001 g F CODE .hidden foo
-; CHECK-SYMS-NEXT: 00000002 g F CODE .hidden call_direct
-; CHECK-SYMS-NEXT: 00000003 g F CODE .hidden call_alias
-; CHECK-SYMS-NEXT: 00000004 g F CODE .hidden call_direct_ptr
+; CHECK-SYMS-NEXT: 00000000 g F CODE .hidden foo
+; CHECK-SYMS-NEXT: 00000001 g F CODE .hidden call_direct
+; CHECK-SYMS-NEXT: 00000002 g F CODE .hidden call_alias
+; CHECK-SYMS-NEXT: 00000003 g F CODE .hidden call_direct_ptr
; CHECK-SYMS-NEXT: 00000008 g DATA direct_address
-; CHECK-SYMS-NEXT: 00000005 g F CODE .hidden call_alias_ptr
+; CHECK-SYMS-NEXT: 00000004 g F CODE .hidden call_alias_ptr
; CHECK-SYMS-NEXT: 00000010 g DATA alias_address
; CHECK-SYMS-NEXT: 00000000 g DATA bar
+; CHECK-SYMS-NEXT: 00000000 gw F CODE .hidden foo_alias
+; CHECK-SYMS-NEXT: 00000000 gw DATA .hidden bar_alias
diff --git a/llvm/test/MC/WebAssembly/weak.ll b/llvm/test/MC/WebAssembly/weak.ll
index e23f3cc..5d8369f 100644
--- a/llvm/test/MC/WebAssembly/weak.ll
+++ b/llvm/test/MC/WebAssembly/weak.ll
@@ -18,19 +18,19 @@
; CHECK-NEXT: Field: __linear_memory
; CHECK: - Module: env
; CHECK-NEXT: Field: __indirect_function_table
-; CHECK: - Module: env
-; CHECK-NEXT: Field: weak_external_data
-; CHECK-NEXT: Kind: GLOBAL
-; CHECK-NEXT: GlobalType: I32
-; CHECK-NEXT: GlobalMutable: false
; CHECK: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 0
-; CHECK-NEXT: SymbolInfo:
-; CHECK-NEXT: - Name: weak_external_data
-; CHECK-NEXT: Flags: [ BINDING_WEAK ]
-; CHECK-NEXT: - Name: weak_function
+; CHECK-NEXT: SymbolTable:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Kind: DATA
+; CHECK-NEXT: Name: weak_external_data
+; CHECK-NEXT: Flags: [ BINDING_WEAK, UNDEFINED ]
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Kind: FUNCTION
+; CHECK-NEXT: Name: weak_function
; CHECK-NEXT: Flags: [ BINDING_WEAK, VISIBILITY_HIDDEN ]
+; CHECK-NEXT: Function: 0
; CHECK-NEXT: ...
diff --git a/llvm/test/Object/Inputs/trivial-object-test.wasm b/llvm/test/Object/Inputs/trivial-object-test.wasm
index 1f3947a..9aba700 100644
--- a/llvm/test/Object/Inputs/trivial-object-test.wasm
+++ b/llvm/test/Object/Inputs/trivial-object-test.wasm
Binary files differ
diff --git a/llvm/test/Object/nm-trivial-object.test b/llvm/test/Object/nm-trivial-object.test
index 0be998e..621a177 100644
--- a/llvm/test/Object/nm-trivial-object.test
+++ b/llvm/test/Object/nm-trivial-object.test
@@ -59,11 +59,14 @@
COFF32-NEXT: 00000000 T _main
COFF32-NEXT: U _puts
-WASM: U SomeOtherFunction
+
+WASM: 00000000 d .L.str
+WASM-NEXT: U SomeOtherFunction
WASM-NEXT: 00000002 T main
WASM-NEXT: U puts
WASM-NEXT: 00000010 D var
+
COFF64: 00000000 d .data
COFF64-NEXT: 00000000 t .text
COFF64-NEXT: 00000000 r ??__Ex@@YAXXZ
diff --git a/llvm/test/Object/obj2yaml.test b/llvm/test/Object/obj2yaml.test
index 7b274b3..c872940 100644
--- a/llvm/test/Object/obj2yaml.test
+++ b/llvm/test/Object/obj2yaml.test
@@ -645,17 +645,39 @@
ELF-AVR-NEXT: Section: .data
ELF-AVR-NEXT: Value: 0x0000000000800060
+
WASM: --- !WASM
WASM-NEXT: FileHeader:
WASM-NEXT: Version: 0x00000001
-WASM: - Type: EXPORT
-WASM-NEXT: Exports:
-WASM-NEXT: - Name: main
-WASM-NEXT: Kind: FUNCTION
-WASM-NEXT: Index: 2
-WASM-NEXT: - Name: var
-WASM-NEXT: Kind: GLOBAL
-WASM-NEXT: Index: 1
+WASM: - Type: CUSTOM
+WASM-NEXT: Name: linking
+WASM-NEXT: DataSize: 20
+WASM-NEXT: SymbolTable:
+WASM-NEXT: - Index: 0
+WASM-NEXT: Kind: FUNCTION
+WASM-NEXT: Name: puts
+WASM-NEXT: Flags: [ UNDEFINED ]
+WASM-NEXT: Function: 0
+WASM-NEXT: - Index: 1
+WASM: Name: SomeOtherFunction
+WASM: - Index: 2
+WASM: Name: main
+WASM: - Index: 3
+WASM-NEXT: Kind: DATA
+WASM-NEXT: Name: .L.str
+WASM-NEXT: Flags: [ BINDING_LOCAL ]
+WASM-NEXT: Segment: 0
+WASM-NEXT: Size: 13
+WASM-NEXT: - Index: 4
+WASM: Name: var
+WASM: SegmentInfo:
+WASM-NEXT: - Index: 0
+WASM-NEXT: Name: .rodata..L.str
+WASM-NEXT: Alignment: 1
+WASM-NEXT: Flags: [ ]
+WASM-NEXT: - Index: 1
+WASM: ...
+
ELF-X86-64-UNWIND: - Name: .eh_frame
ELF-X86-64-UNWIND-NEXT: Type: SHT_X86_64_UNWIND
diff --git a/llvm/test/Object/objdump-relocations.test b/llvm/test/Object/objdump-relocations.test
index b461f56..4044a29 100644
--- a/llvm/test/Object/objdump-relocations.test
+++ b/llvm/test/Object/objdump-relocations.test
@@ -60,7 +60,7 @@
ELF-MIPSEL: R_MIPS_CALL16 SomeOtherFunction
WASM: CODE
-WASM-NEXT: R_WEBASSEMBLY_MEMORY_ADDR_SLEB 0+0
+WASM-NEXT: R_WEBASSEMBLY_MEMORY_ADDR_SLEB 3+0
WASM-NEXT: R_WEBASSEMBLY_FUNCTION_INDEX_LEB 0+0
WASM-NEXT: R_WEBASSEMBLY_FUNCTION_INDEX_LEB 1+0
diff --git a/llvm/test/ObjectYAML/wasm/linking_section.yaml b/llvm/test/ObjectYAML/wasm/linking_section.yaml
index fdb6d25..818d703 100644
--- a/llvm/test/ObjectYAML/wasm/linking_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/linking_section.yaml
@@ -30,9 +30,12 @@
- Type: CUSTOM
Name: linking
DataSize: 999
- SymbolInfo:
- - Name: bar
- Flags: [ BINDING_WEAK ]
+ SymbolTable:
+ - Index: 0
+ Kind: FUNCTION
+ Name: bar
+ Flags: [ BINDING_WEAK, UNDEFINED ]
+ Function: 0
SegmentInfo:
- Index: 0
Alignment: 4
@@ -44,14 +47,17 @@
Name: moredata
InitFunctions:
- Priority: 1
- FunctionIndex: 0
+ Symbol: 0
...
# CHECK: - Type: CUSTOM
# CHECK-NEXT: Name: linking
# CHECK-NEXT: DataSize: 999
-# CHECK-NEXT: SymbolInfo:
-# CHECK-NEXT: - Name: bar
-# CHECK-NEXT: Flags: [ BINDING_WEAK ]
+# CHECK-NEXT: SymbolTable:
+# CHECK-NEXT: - Index: 0
+# CHECK-NEXT: Kind: FUNCTION
+# CHECK-NEXT: Name: bar
+# CHECK-NEXT: Flags: [ BINDING_WEAK, UNDEFINED ]
+# CHECK-NEXT: Function: 0
# CHECK-NEXT: SegmentInfo:
# CHECK-NEXT: - Index: 0
# CHECK-NEXT: Name: mydata
@@ -63,5 +69,5 @@
# CHECK-NEXT: Flags: [ ]
# CHECK-NEXT: InitFunctions:
# CHECK-NEXT: - Priority: 1
-# CHECK-NEXT: FunctionIndex: 0
+# CHECK-NEXT: Symbol: 0
# CHECK-NEXT: ...
diff --git a/llvm/test/ObjectYAML/wasm/weak_symbols.yaml b/llvm/test/ObjectYAML/wasm/weak_symbols.yaml
index 341146c..696b14b 100644
--- a/llvm/test/ObjectYAML/wasm/weak_symbols.yaml
+++ b/llvm/test/ObjectYAML/wasm/weak_symbols.yaml
@@ -37,11 +37,17 @@
- Type: CUSTOM
Name: linking
DataSize: 10
- SymbolInfo:
- - Name: function_export
+ SymbolTable:
+ - Index: 0
+ Kind: FUNCTION
+ Name: function_export
Flags: [ BINDING_WEAK ]
- - Name: global_export
+ Function: 0
+ - Index: 1
+ Kind: GLOBAL
+ Name: global_export
Flags: [ BINDING_WEAK ]
+ Global: 0
...
# CHECK: --- !WASM
# CHECK: FileHeader:
@@ -58,8 +64,14 @@
# CHECK: - Type: CUSTOM
# CHECK: Name: linking
# CHECK: DataSize: 10
-# CHECK: SymbolInfo:
-# CHECK: - Name: function_export
-# CHECK: Flags: [ BINDING_WEAK ]
-# CHECK: - Name: global_export
-# CHECK: Flags: [ BINDING_WEAK ]
+# CHECK: SymbolTable:
+# CHECK: - Index: 0
+# CHECK: Kind: FUNCTION
+# CHECK: Name: function_export
+# CHECK: Flags: [ BINDING_WEAK ]
+# CHECK: Function: 0
+# CHECK: - Index: 1
+# CHECK: Kind: GLOBAL
+# CHECK: Name: global_export
+# CHECK: Flags: [ BINDING_WEAK ]
+# CHECK: Global: 0
diff --git a/llvm/test/tools/llvm-nm/wasm/exports.yaml b/llvm/test/tools/llvm-nm/wasm/exports.yaml
index 06799c4..982adc4 100644
--- a/llvm/test/tools/llvm-nm/wasm/exports.yaml
+++ b/llvm/test/tools/llvm-nm/wasm/exports.yaml
@@ -1,7 +1,6 @@
# RUN: yaml2obj < %s | llvm-nm - | FileCheck -strict-whitespace %s
-# That wasm exports of functions and globals are displayed as global data and
-# code symbols.
+# Check that wasm exports of functions/globals/data are displayed correctly
--- !WASM
FileHeader:
@@ -13,69 +12,55 @@
ReturnType: I32
ParamTypes:
- I32
- - Type: IMPORT
- Imports:
- - Module: env
- Field: fimport
- Kind: FUNCTION
- SigIndex: 0
- - Module: env
- Field: gimport
- Kind: GLOBAL
- GlobalType: I32
- GlobalMutable: false
- Type: FUNCTION
- FunctionTypes: [ 0, 0, 0, 0, 0 ]
+ FunctionTypes: [ 0 ]
- Type: GLOBAL
Globals:
- - Index: 1
+ - Index: 0
Type: I32
Mutable: false
InitExpr:
Opcode: I64_CONST
Value: 32
- - Index: 2
- Type: I32
- Mutable: false
- InitExpr:
- Opcode: I32_CONST
- Value: 64
- - Index: 3
- Type: I32
- Mutable: false
- InitExpr:
- Opcode: I32_CONST
- Value: 1024
- - Type: EXPORT
- Exports:
- - Name: foo
- Kind: FUNCTION
- Index: 0x00000004
- - Name: bar
- Kind: GLOBAL
- Index: 0x00000003
- Type: CODE
Functions:
- - Index: 1
+ - Index: 0
Locals:
Body: 00
- - Index: 2
- Locals:
- Body: 00
- - Index: 3
- Locals:
- Body: 00
- - Index: 4
- Locals:
- Body: 00
- - Index: 5
- Locals:
- Body: 00
+ - Type: DATA
+ Segments:
+ - SectionOffset: 6
+ MemoryIndex: 0
+ Offset:
+ Opcode: I32_CONST
+ Value: 0
+ Content: '616263'
- Type: CUSTOM
- Name: "linking"
- DataSize: 0
+ Name: linking
+ DataSize: 3
+ SymbolTable:
+ - Index: 0
+ Kind: FUNCTION
+ Name: fexport
+ Flags: [ ]
+ Function: 0
+ - Index: 1
+ Kind: GLOBAL
+ Name: gexport
+ Flags: [ ]
+ Global: 0
+ - Index: 2
+ Kind: DATA
+ Name: dexport
+ Flags: [ ]
+ Segment: 0
+ Size: 3
+ SegmentInfo:
+ - Index: 0
+ Name: .rodata.constantData
+ Alignment: 1
+ Flags: [ ]
-# CHECK: 00000400 D bar
-# CHECK-NEXT: U fimport
-# CHECK-NEXT: 00000004 T foo
-# CHECK-NEXT: U gimport
+# CHECK: 00000000 D dexport
+# CHECK-NEXT: 00000000 T fexport
+# CHECK-NEXT: 00000000 D gexport
diff --git a/llvm/test/tools/llvm-nm/wasm/imports.yaml b/llvm/test/tools/llvm-nm/wasm/imports.yaml
index 2f25d7f..dc47327 100644
--- a/llvm/test/tools/llvm-nm/wasm/imports.yaml
+++ b/llvm/test/tools/llvm-nm/wasm/imports.yaml
@@ -1,5 +1,7 @@
# RUN: yaml2obj < %s | llvm-nm - | FileCheck -strict-whitespace %s
+# Check that wasm import of functions/globals/data are displayed correctly
+
--- !WASM
FileHeader:
Version: 0x00000001
@@ -13,17 +15,33 @@
- Type: IMPORT
Imports:
- Module: env
- Field: foo
+ Field: fimport
Kind: FUNCTION
SigIndex: 0
- Module: env
- Field: bar
+ Field: gimport
Kind: GLOBAL
GlobalType: I32
GlobalMutable: false
- Type: CUSTOM
- Name: "linking"
- DataSize: 0
+ Name: linking
+ DataSize: 3
+ SymbolTable:
+ - Index: 0
+ Kind: FUNCTION
+ Name: fimport
+ Flags: [ UNDEFINED ]
+ Function: 0
+ - Index: 1
+ Kind: GLOBAL
+ Name: gimport
+ Flags: [ UNDEFINED ]
+ Global: 0
+ - Index: 2
+ Kind: DATA
+ Name: dimport
+ Flags: [ UNDEFINED ]
-# CHECK: U bar
-# CHECK: U foo
+# CHECK: U dimport
+# CHECK-NEXT: U fimport
+# CHECK-NEXT: U gimport
diff --git a/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml b/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml
index 5206065..02d5f0b 100644
--- a/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml
+++ b/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml
@@ -1,7 +1,6 @@
# RUN: yaml2obj < %s | llvm-nm - | FileCheck -strict-whitespace %s
-# That wasm exports of functions and globals are displayed as global data and
-# code symbols.
+# Check that wasm weak function/global/data symbols are displayed correctly
--- !WASM
FileHeader:
@@ -20,12 +19,12 @@
Kind: FUNCTION
SigIndex: 0
- Module: env
- Field: weak_import_data
+ Field: weak_import_global
Kind: GLOBAL
GlobalType: I32
GlobalMutable: false
- Type: FUNCTION
- FunctionTypes: [ 0, 0, 0, 0 ]
+ FunctionTypes: [ 0 ]
- Type: GLOBAL
Globals:
- Index: 1
@@ -34,54 +33,63 @@
InitExpr:
Opcode: I64_CONST
Value: 32
- - Index: 2
- Type: I32
- Mutable: false
- InitExpr:
- Opcode: I32_CONST
- Value: 64
- - Index: 3
- Type: I32
- Mutable: false
- InitExpr:
- Opcode: I32_CONST
- Value: 1024
- - Type: EXPORT
- Exports:
- - Name: weak_global_func
- Kind: FUNCTION
- Index: 0x00000004
- - Name: weak_global_data
- Kind: GLOBAL
- Index: 0x00000003
- Type: CODE
Functions:
- Index: 1
Locals:
Body: 00
- - Index: 2
- Locals:
- Body: 00
- - Index: 3
- Locals:
- Body: 00
- - Index: 4
- Locals:
- Body: 00
+ - Type: DATA
+ Segments:
+ - SectionOffset: 6
+ MemoryIndex: 0
+ Offset:
+ Opcode: I32_CONST
+ Value: 0
+ Content: '616263'
- Type: CUSTOM
Name: linking
- DataSize: 0
- SymbolInfo:
- - Name: weak_global_func
- Flags: [ BINDING_WEAK ]
- - Name: weak_global_data
- Flags: [ BINDING_WEAK ]
- - Name: weak_import_func
- Flags: [ BINDING_WEAK ]
- - Name: weak_import_data
- Flags: [ BINDING_WEAK ]
+ DataSize: 3
+ SymbolTable:
+ - Index: 0
+ Kind: DATA
+ Name: weak_defined_data
+ Flags: [ BINDING_WEAK ]
+ Segment: 0
+ Size: 3
+ - Index: 1
+ Kind: FUNCTION
+ Name: weak_defined_func
+ Flags: [ BINDING_WEAK ]
+ Function: 1
+ - Index: 2
+ Kind: GLOBAL
+ Name: weak_defined_global
+ Flags: [ BINDING_WEAK ]
+ Global: 1
+ - Index: 3
+ Kind: DATA
+ Name: weak_import_data
+ Flags: [ BINDING_WEAK, UNDEFINED ]
+ - Index: 4
+ Kind: FUNCTION
+ Name: weak_import_func
+ Flags: [ BINDING_WEAK, UNDEFINED ]
+ Function: 0
+ - Index: 5
+ Kind: GLOBAL
+ Name: weak_import_global
+ Flags: [ BINDING_WEAK, UNDEFINED ]
+ Global: 0
+ SegmentInfo:
+ - Index: 0
+ Name: .rodata.constantData
+ Alignment: 1
+ Flags: [ ]
-# CHECK: 00000400 W weak_global_data
-# CHECK: 00000004 W weak_global_func
-# CHECK: w weak_import_data
-# CHECK: w weak_import_func
+
+# CHECK: 00000000 W weak_defined_data
+# CHECK-NEXT: 00000001 W weak_defined_func
+# CHECK-NEXT: 00000001 W weak_defined_global
+# CHECK-NEXT: w weak_import_data
+# CHECK-NEXT: w weak_import_func
+# CHECK-NEXT: w weak_import_global
diff --git a/llvm/test/tools/llvm-objdump/Inputs/trivial.obj.wasm b/llvm/test/tools/llvm-objdump/Inputs/trivial.obj.wasm
index 1f3947a..9aba700 100644
--- a/llvm/test/tools/llvm-objdump/Inputs/trivial.obj.wasm
+++ b/llvm/test/tools/llvm-objdump/Inputs/trivial.obj.wasm
Binary files differ
diff --git a/llvm/test/tools/llvm-objdump/WebAssembly/symbol-table.test b/llvm/test/tools/llvm-objdump/WebAssembly/symbol-table.test
index a24fd1e..0dc31e1 100644
--- a/llvm/test/tools/llvm-objdump/WebAssembly/symbol-table.test
+++ b/llvm/test/tools/llvm-objdump/WebAssembly/symbol-table.test
@@ -4,5 +4,5 @@
CHECK-NEXT: 00000000 g F *UND* puts
CHECK-NEXT: 00000000 g F *UND* SomeOtherFunction
CHECK-NEXT: 00000002 g F CODE main
+CHECK-NEXT: 00000000 l DATA .L.str
CHECK-NEXT: 00000010 g DATA var
-
diff --git a/llvm/test/tools/llvm-objdump/wasm.txt b/llvm/test/tools/llvm-objdump/wasm.txt
index 828fa34..e31e637 100644
--- a/llvm/test/tools/llvm-objdump/wasm.txt
+++ b/llvm/test/tools/llvm-objdump/wasm.txt
@@ -2,18 +2,13 @@
# CHECK: Sections:
# CHECK-NEXT: Idx Name Size Address Type
-# CHECK-NEXT: 0 TYPE 0000000e 0000000000000000
-# CHECK-NEXT: 1 IMPORT 00000024 0000000000000000
-# CHECK-NEXT: 2 FUNCTION 00000002 0000000000000000
-# CHECK-NEXT: 3 TABLE 00000004 0000000000000000
-# CHECK-NEXT: 4 MEMORY 00000003 0000000000000000
-# CHECK-NEXT: 5 GLOBAL 0000000b 0000000000000000
-# CHECK-NEXT: 6 EXPORT 0000000e 0000000000000000
-# CHECK-NEXT: 7 CODE 00000019 0000000000000000 TEXT
-# CHECK-NEXT: 8 DATA 0000001a 0000000000000000 DATA
-# CHECK-NEXT: 9 name 0000002b 0000000000000000
-# CHECK-NEXT: 10 reloc.CODE 00000017 0000000000000000
-# CHECK-NEXT: 11 linking 00000016 0000000000000000
+# CHECK-NEXT: 0 TYPE 0000000e 0000000000000000
+# CHECK-NEXT: 1 IMPORT 0000005d 0000000000000000
+# CHECK-NEXT: 2 FUNCTION 00000002 0000000000000000
+# CHECK-NEXT: 3 CODE 00000019 0000000000000000 TEXT
+# CHECK-NEXT: 4 DATA 0000001c 0000000000000000 DATA
+# CHECK-NEXT: 5 reloc.CODE 00000017 0000000000000000
+# CHECK-NEXT: 6 linking 0000005c 0000000000000000
# RUN: llvm-objdump -p %p/Inputs/trivial.obj.wasm | FileCheck %s -check-prefix CHECK-HEADER
diff --git a/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.wasm b/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.wasm
index caa702f..b9038c3 100644
--- a/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.wasm
+++ b/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.wasm
Binary files differ
diff --git a/llvm/test/tools/llvm-readobj/relocations.test b/llvm/test/tools/llvm-readobj/relocations.test
index 400aeea..9d92c2f 100644
--- a/llvm/test/tools/llvm-readobj/relocations.test
+++ b/llvm/test/tools/llvm-readobj/relocations.test
@@ -287,11 +287,11 @@
MACHO-ARM-NEXT: ]
WASM: Relocations [
-WASM-NEXT: Section (8) CODE {
+WASM-NEXT: Section (4) CODE {
WASM-NEXT: Relocation {
WASM-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_SLEB (4)
WASM-NEXT: Offset: 0x4
-WASM-NEXT: Index: 0x0
+WASM-NEXT: Index: 0x3
WASM-NEXT: Addend: 0
WASM-NEXT: }
WASM-NEXT: Relocation {
diff --git a/llvm/test/tools/llvm-readobj/sections.test b/llvm/test/tools/llvm-readobj/sections.test
index 015c950..86ae5ac 100644
--- a/llvm/test/tools/llvm-readobj/sections.test
+++ b/llvm/test/tools/llvm-readobj/sections.test
@@ -501,50 +501,26 @@
WASM-NEXT: }
WASM-NEXT: Section {
WASM-NEXT: Type: IMPORT (0x2)
-WASM-NEXT: Size: 36
+WASM-NEXT: Size: 93
WASM-NEXT: Offset: 28
WASM-NEXT: }
WASM-NEXT: Section {
WASM-NEXT: Type: FUNCTION (0x3)
WASM-NEXT: Size: 2
-WASM-NEXT: Offset: 70
-WASM-NEXT: }
-WASM-NEXT: Section {
-WASM-NEXT: Type: TABLE (0x4)
-WASM-NEXT: Size: 4
-WASM-NEXT: Offset: 78
-WASM-NEXT: }
-WASM-NEXT: Section {
-WASM-NEXT: Type: MEMORY (0x5)
-WASM-NEXT: Size: 3
-WASM-NEXT: Offset: 88
-WASM-NEXT: Memories [
-WASM-NEXT: Memory {
-WASM-NEXT: InitialPages: 1
-WASM-NEXT: }
-WASM-NEXT: ]
-WASM-NEXT: }
-WASM-NEXT: Section {
-WASM-NEXT: Type: GLOBAL (0x6)
-WASM-NEXT: Size: 6
-WASM-NEXT: Offset: 97
-WASM-NEXT: }
-WASM-NEXT: Section {
-WASM-NEXT: Type: EXPORT (0x7)
-WASM-NEXT: Size: 8
-WASM-NEXT: Offset: 109
+WASM-NEXT: Offset: 127
WASM-NEXT: }
WASM-NEXT: Section {
WASM-NEXT: Type: CODE (0xA)
WASM-NEXT: Size: 25
-WASM-NEXT: Offset: 123
+WASM-NEXT: Offset: 135
WASM-NEXT: }
WASM-NEXT: Section {
WASM-NEXT: Type: DATA (0xB)
WASM-NEXT: Size: 19
-WASM-NEXT: Offset: 154
+WASM-NEXT: Offset: 166
WASM-NEXT: Segments [
WASM-NEXT: Segment {
+WASM-NEXT: Name: .rodata..L.str
WASM-NEXT: Size: 13
WASM-NEXT: Offset: 0
WASM-NEXT: }
@@ -552,20 +528,14 @@
WASM-NEXT: }
WASM-NEXT: Section {
WASM-NEXT: Type: CUSTOM (0x0)
-WASM-NEXT: Size: 43
-WASM-NEXT: Offset: 179
-WASM-NEXT: Name: name
-WASM-NEXT: }
-WASM-NEXT: Section {
-WASM-NEXT: Type: CUSTOM (0x0)
WASM-NEXT: Size: 23
-WASM-NEXT: Offset: 228
+WASM-NEXT: Offset: 191
WASM-NEXT: Name: reloc.CODE
WASM-NEXT: }
WASM-NEXT: Section {
WASM-NEXT: Type: CUSTOM (0x0)
-WASM-NEXT: Size: 22
-WASM-NEXT: Offset: 257
+WASM-NEXT: Size: 72
+WASM-NEXT: Offset: 220
WASM-NEXT: Name: linking
WASM-NEXT: DataSize: 13
WASM-NEXT: }
diff --git a/llvm/test/tools/llvm-readobj/symbols.test b/llvm/test/tools/llvm-readobj/symbols.test
index 9f1e29f..47b04c9 100644
--- a/llvm/test/tools/llvm-readobj/symbols.test
+++ b/llvm/test/tools/llvm-readobj/symbols.test
@@ -74,17 +74,22 @@
WASM: Symbols [
WASM-NEXT: Symbol {
WASM-NEXT: Name: puts
-WASM-NEXT: Type: FUNCTION_IMPORT (0x0)
-WASM-NEXT: Flags: 0x0
+WASM-NEXT: Type: FUNCTION (0x0)
+WASM-NEXT: Flags: 0x10
WASM-NEXT: }
WASM-NEXT: Symbol {
WASM-NEXT: Name: SomeOtherFunction
-WASM-NEXT: Type: FUNCTION_IMPORT (0x0)
-WASM-NEXT: Flags: 0x0
+WASM-NEXT: Type: FUNCTION (0x0)
+WASM-NEXT: Flags: 0x10
WASM-NEXT: }
WASM-NEXT: Symbol {
WASM-NEXT: Name: main
-WASM-NEXT: Type: FUNCTION_EXPORT (0x1)
+WASM-NEXT: Type: FUNCTION (0x0)
WASM-NEXT: Flags: 0x0
WASM-NEXT: }
+WASM-NEXT: Symbol {
+WASM-NEXT: Name: .L.str
+WASM-NEXT: Type: DATA (0x1)
+WASM-NEXT: Flags: 0x2
+WASM-NEXT: }
WASM-NEXT: ]