summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorDerek Schuff <dschuff@google.com>2017-03-30 19:44:09 +0000
committerDerek Schuff <dschuff@google.com>2017-03-30 19:44:09 +0000
commitd3d84fdda185356e8f2a9f660e064427566d9798 (patch)
tree33908ea553d83fa422b2f354b6d445dee6e7d9a0 /llvm/test
parentd3209f932f73087c33ccae4b7e7403ca4ad94d28 (diff)
downloadbcm5719-llvm-d3d84fdda185356e8f2a9f660e064427566d9798.tar.gz
bcm5719-llvm-d3d84fdda185356e8f2a9f660e064427566d9798.zip
[WebAssembly] Improve support for WebAssembly binary format
Mostly this change adds support converting to and from YAML which will allow us to write more test cases for the WebAssembly MC and lld ports. Better support for objdump, readelf, and nm will be in followup CLs. I had to update the two wasm test binaries because they used the old style 'name' section which is no longer supported. Differential Revision: https://reviews.llvm.org/D31099 Patch by Sam Clegg llvm-svn: 299101
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/ObjectYAML/wasm/code_section.yaml72
-rw-r--r--llvm/test/ObjectYAML/wasm/custom_section.yaml17
-rw-r--r--llvm/test/ObjectYAML/wasm/data_section.yaml28
-rw-r--r--llvm/test/ObjectYAML/wasm/elem_section.yaml42
-rw-r--r--llvm/test/ObjectYAML/wasm/export_section.yaml27
-rw-r--r--llvm/test/ObjectYAML/wasm/function_section.yaml19
-rw-r--r--llvm/test/ObjectYAML/wasm/global_section.yaml25
-rw-r--r--llvm/test/ObjectYAML/wasm/header.yaml9
-rw-r--r--llvm/test/ObjectYAML/wasm/header_invalid_version.yaml8
-rw-r--r--llvm/test/ObjectYAML/wasm/import_section.yaml41
-rw-r--r--llvm/test/ObjectYAML/wasm/memory_section.yaml23
-rw-r--r--llvm/test/ObjectYAML/wasm/start_section.yaml15
-rw-r--r--llvm/test/ObjectYAML/wasm/table_section.yaml25
-rw-r--r--llvm/test/ObjectYAML/wasm/type_section.yaml33
-rw-r--r--llvm/test/tools/llvm-objdump/Inputs/test.wasmbin165 -> 181 bytes
-rw-r--r--llvm/test/tools/llvm-objdump/wasm.txt2
-rw-r--r--llvm/test/tools/llvm-readobj/Inputs/trivial.obj.wasmbin165 -> 181 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/sections.test2
18 files changed, 386 insertions, 2 deletions
diff --git a/llvm/test/ObjectYAML/wasm/code_section.yaml b/llvm/test/ObjectYAML/wasm/code_section.yaml
new file mode 100644
index 00000000000..b75bf7e1cfd
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/code_section.yaml
@@ -0,0 +1,72 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: TYPE
+ Signatures:
+ - ReturnType: F32
+ ParamTypes:
+ - I32
+ - ReturnType: NORESULT
+ ParamTypes:
+ - I32
+ - I64
+ - Type: FUNCTION
+ FunctionTypes:
+ - 0
+ - 1
+ - Type: CODE
+ Relocations:
+ - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB
+ Index: 0
+ Offset: 0x00000006
+ Addend: 0x00000000
+ - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
+ Index: 1
+ Offset: 0x00000025
+ Addend: 0x00000000
+ Functions:
+ - Locals:
+ - Type: I32
+ Count: 3
+ Body: 418080808000210020002101200111808080800000210220020F0B
+ - Locals:
+ - Type: I32
+ Count: 1
+ Body: 108180808000210020000F0B
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: TYPE
+# CHECK: Signatures:
+# CHECK: - Index: 0
+# CHECK: ReturnType: F32
+# CHECK: ParamTypes:
+# CHECK: - I32
+# CHECK: - Index: 1
+# CHECK: ReturnType: NORESULT
+# CHECK: ParamTypes:
+# CHECK: - I32
+# CHECK: - I64
+# CHECK: - Type: CODE
+# CHECK: Relocations:
+# CHECK: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB
+# CHECK: Index: 0
+# CHECK: Offset: 0x00000006
+# CHECK: Addend: 0x00000000
+# CHECK: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
+# CHECK: Index: 1
+# CHECK: Offset: 0x00000025
+# CHECK: Addend: 0x00000000
+# CHECK: Functions:
+# CHECK: - Locals:
+# CHECK: - Type: I32
+# CHECK: Count: 3
+# CHECK: Body: 418080808000210020002101200111808080800000210220020F0B
+# CHECK: - Locals:
+# CHECK: - Type: I32
+# CHECK: Count: 1
+# CHECK: Body: 108180808000210020000F0B
diff --git a/llvm/test/ObjectYAML/wasm/custom_section.yaml b/llvm/test/ObjectYAML/wasm/custom_section.yaml
new file mode 100644
index 00000000000..c7b87cb4239
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/custom_section.yaml
@@ -0,0 +1,17 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: CUSTOM
+ Name: foo
+ Payload: 03666F6F0401020304
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: CUSTOM
+# CHECK: Name: foo
+# CHECK: Payload: 03666F6F0401020304
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/data_section.yaml b/llvm/test/ObjectYAML/wasm/data_section.yaml
new file mode 100644
index 00000000000..542d0efe42f
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/data_section.yaml
@@ -0,0 +1,28 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: MEMORY
+ Memories:
+ - Initial: 0x00000003
+ - Type: DATA
+ Segments:
+ - Index: 0
+ Offset:
+ Opcode: I32_CONST
+ Value: 4
+ Content: '10001000'
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: DATA
+# CHECK: Segments:
+# CHECK: - Index: 0
+# CHECK: Offset:
+# CHECK: Opcode: I32_CONST
+# CHECK: Value: 4
+# CHECK: Content: '10001000'
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/elem_section.yaml b/llvm/test/ObjectYAML/wasm/elem_section.yaml
new file mode 100644
index 00000000000..67de7095b5f
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/elem_section.yaml
@@ -0,0 +1,42 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: TABLE
+ Tables:
+ - ElemType: ANYFUNC
+ Limits:
+ Flags: 0x00000001
+ Initial: 0x00000010
+ Maximum: 0x00000011
+ - Type: ELEM
+ Segments:
+ - Offset:
+ Opcode: I32_CONST
+ Value: 3
+ Functions:
+ - 1
+ - Offset:
+ Opcode: I32_CONST
+ Value: 5
+ Functions:
+ - 4
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: ELEM
+# CHECK: Segments:
+# CHECK: - Offset:
+# CHECK: Opcode: I32_CONST
+# CHECK: Value: 3
+# CHECK: Functions:
+# CHECK: - 1
+# CHECK: - Offset:
+# CHECK: Opcode: I32_CONST
+# CHECK: Value: 5
+# CHECK: Functions:
+# CHECK: - 4
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/export_section.yaml b/llvm/test/ObjectYAML/wasm/export_section.yaml
new file mode 100644
index 00000000000..1d1a16fb833
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/export_section.yaml
@@ -0,0 +1,27 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: EXPORT
+ Exports:
+ - Name: foo
+ Kind: FUNCTION
+ Index: 0
+ - Name: bar
+ Kind: FUNCTION
+ Index: 1
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: EXPORT
+# CHECK: Exports:
+# CHECK: - Name: foo
+# CHECK: Kind: FUNCTION
+# CHECK: Index: 0
+# CHECK: - Name: bar
+# CHECK: Kind: FUNCTION
+# CHECK: Index: 1
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/function_section.yaml b/llvm/test/ObjectYAML/wasm/function_section.yaml
new file mode 100644
index 00000000000..6aaf9d4b513
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/function_section.yaml
@@ -0,0 +1,19 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: FUNCTION
+ FunctionTypes:
+ - 1
+ - 0
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: FUNCTION
+# CHECK: FunctionTypes:
+# CHECK: - 1
+# CHECK: - 0
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/global_section.yaml b/llvm/test/ObjectYAML/wasm/global_section.yaml
new file mode 100644
index 00000000000..3f17c6d88ba
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/global_section.yaml
@@ -0,0 +1,25 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: GLOBAL
+ Globals:
+ - Type: I32
+ Mutable: false
+ InitExpr:
+ Opcode: I64_CONST
+ Value: -5
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: GLOBAL
+# CHECK: Globals:
+# CHECK: - Type: I32
+# CHECK: Mutable: false
+# CHECK: InitExpr:
+# CHECK: Opcode: I64_CONST
+# CHECK: Value: -5
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/header.yaml b/llvm/test/ObjectYAML/wasm/header.yaml
new file mode 100644
index 00000000000..c4be4c8a4aa
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/header.yaml
@@ -0,0 +1,9 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/header_invalid_version.yaml b/llvm/test/ObjectYAML/wasm/header_invalid_version.yaml
new file mode 100644
index 00000000000..a4e1246b984
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/header_invalid_version.yaml
@@ -0,0 +1,8 @@
+# RUN: yaml2obj %s | not obj2yaml 2>&1 | FileCheck %s
+
+--- !WASM
+FileHeader:
+ Version: 0x00000002
+...
+
+# CHECK: Error: 'Invalid data was encountered while parsing the file'
diff --git a/llvm/test/ObjectYAML/wasm/import_section.yaml b/llvm/test/ObjectYAML/wasm/import_section.yaml
new file mode 100644
index 00000000000..52f466a00b6
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/import_section.yaml
@@ -0,0 +1,41 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: TYPE
+ Signatures:
+ - ReturnType: I32
+ ParamTypes:
+ - I32
+ - Type: IMPORT
+ Imports:
+ - Module: foo
+ Field: bar
+ Kind: FUNCTION
+ SigIndex: 0
+ - Module: fiz
+ Field: baz
+ Kind: GLOBAL
+ GlobalType: I32
+ GlobalMutable: false
+ - Type: FUNCTION
+ FunctionTypes:
+ - 0
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: IMPORT
+# CHECK: Imports:
+# CHECK: - Module: foo
+# CHECK: Field: bar
+# CHECK: Kind: FUNCTION
+# CHECK: SigIndex: 0
+# CHECK: - Module: fiz
+# CHECK: Field: baz
+# CHECK: Kind: GLOBAL
+# CHECK: GlobalType: I32
+# CHECK: GlobalMutable: false
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/memory_section.yaml b/llvm/test/ObjectYAML/wasm/memory_section.yaml
new file mode 100644
index 00000000000..83aae05871d
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/memory_section.yaml
@@ -0,0 +1,23 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: MEMORY
+ Memories:
+ - Flags: 0x00000001
+ Initial: 0x00000002
+ Maximum: 0x000000FF
+ - Initial: 0x00000003
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: MEMORY
+# CHECK: Memories:
+# CHECK: - Flags: 0x00000001
+# CHECK: Initial: 0x00000002
+# CHECK: Maximum: 0x000000FF
+# CHECK: - Initial: 0x00000003
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/start_section.yaml b/llvm/test/ObjectYAML/wasm/start_section.yaml
new file mode 100644
index 00000000000..41301a62003
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/start_section.yaml
@@ -0,0 +1,15 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: START
+ StartFunction: 1
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: START
+# CHECK: StartFunction: 1
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/table_section.yaml b/llvm/test/ObjectYAML/wasm/table_section.yaml
new file mode 100644
index 00000000000..d8b1df25e04
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/table_section.yaml
@@ -0,0 +1,25 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: TABLE
+ Tables:
+ - ElemType: ANYFUNC
+ Limits:
+ Flags: 0x00000001
+ Initial: 0x00000010
+ Maximum: 0x00000011
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: TABLE
+# CHECK: Tables:
+# CHECK: - ElemType: ANYFUNC
+# CHECK: Limits:
+# CHECK: Flags: 0x00000001
+# CHECK: Initial: 0x00000010
+# CHECK: Maximum: 0x00000011
+# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/type_section.yaml b/llvm/test/ObjectYAML/wasm/type_section.yaml
new file mode 100644
index 00000000000..d6602595a60
--- /dev/null
+++ b/llvm/test/ObjectYAML/wasm/type_section.yaml
@@ -0,0 +1,33 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: TYPE
+ Signatures:
+ - ReturnType: I32
+ ParamTypes:
+ - F32
+ - F32
+ - ReturnType: I64
+ ParamTypes:
+ - F64
+ - F64
+...
+# CHECK: --- !WASM
+# CHECK: FileHeader:
+# CHECK: Version: 0x00000001
+# CHECK: Sections:
+# CHECK: - Type: TYPE
+# CHECK: Signatures:
+# CHECK: - Index: 0
+# CHECK: ReturnType: I32
+# CHECK: ParamTypes:
+# CHECK: - F32
+# CHECK: - F32
+# CHECK: - Index: 1
+# CHECK: ReturnType: I64
+# CHECK: ParamTypes:
+# CHECK: - F64
+# CHECK: - F64
+# CHECK: ...
diff --git a/llvm/test/tools/llvm-objdump/Inputs/test.wasm b/llvm/test/tools/llvm-objdump/Inputs/test.wasm
index 7ba4fef2efd..d3906eeaf6f 100644
--- a/llvm/test/tools/llvm-objdump/Inputs/test.wasm
+++ b/llvm/test/tools/llvm-objdump/Inputs/test.wasm
Binary files differ
diff --git a/llvm/test/tools/llvm-objdump/wasm.txt b/llvm/test/tools/llvm-objdump/wasm.txt
index d4f85479d78..4aa40c6c9df 100644
--- a/llvm/test/tools/llvm-objdump/wasm.txt
+++ b/llvm/test/tools/llvm-objdump/wasm.txt
@@ -9,7 +9,7 @@
# CHECK: 4 EXPORT 0000000e 0000000000000000
# CHECK: 5 ELEM 00000007 0000000000000000
# CHECK: 6 CODE 0000002a 0000000000000000 TEXT
-# CHECK: 7 name 0000002c 0000000000000000
+# CHECK: 7 name 0000003c 0000000000000000
# RUN: llvm-objdump -p %p/Inputs/test.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 7ba4fef2efd..d3906eeaf6f 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/sections.test b/llvm/test/tools/llvm-readobj/sections.test
index 26a72d85e49..53705a7a696 100644
--- a/llvm/test/tools/llvm-readobj/sections.test
+++ b/llvm/test/tools/llvm-readobj/sections.test
@@ -531,7 +531,7 @@ WASM-NEXT: Offset: 75
WASM-NEXT: }
WASM-NEXT: Section {
WASM-NEXT: Type: CUSTOM (0x0)
-WASM-NEXT: Size: 44
+WASM-NEXT: Size: 60
WASM-NEXT: Offset: 119
WASM-NEXT: Name: name
WASM-NEXT: }
OpenPOWER on IntegriCloud