The check for valid start function was inverted. Added a new
test in test/Object to check this case and fixed the existing
tests in for ObjectYAML.
Differential Revision: https://reviews.llvm.org/D32986
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302560
91177308-0d34-0410-b5e6-
96231b3b80d8
Error WasmObjectFile::parseStartSection(const uint8_t *Ptr, const uint8_t *End) {
StartFunction = readVaruint32(Ptr);
- if (StartFunction < FunctionTypes.size())
+ if (StartFunction >= FunctionTypes.size())
return make_error<GenericBinaryError>("Invalid start function",
object_error::parse_failed);
return Error::success();
--- /dev/null
+# RUN: yaml2obj %s | not llvm-objdump -h - 2>&1 | FileCheck %s
+
+!WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: START
+ StartFunction: 0
+
+# CHECK: {{.*}}: Invalid start function
Version: 0x00000001
Sections:
- Type: FUNCTION
- FunctionTypes:
- - 1
- - 0
+ FunctionTypes: [ 1, 0 ]
...
# CHECK: --- !WASM
# CHECK: FileHeader:
# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+
--- !WASM
FileHeader:
Version: 0x00000001
Sections:
+ - Type: TYPE
+ Signatures:
+ - ReturnType: I32
+ ParamTypes:
+ - F32
+ - F32
+ - Type: FUNCTION
+ FunctionTypes: [ 0, 0, 0 ]
- Type: START
StartFunction: 1
...