]> granicus.if.org Git - llvm/commitdiff
[WebAssembly] Object: Improve error messages on invalid section
authorSam Clegg <sbc@chromium.org>
Sat, 20 Apr 2019 00:11:46 +0000 (00:11 +0000)
committerSam Clegg <sbc@chromium.org>
Sat, 20 Apr 2019 00:11:46 +0000 (00:11 +0000)
Also add a test.

Differential Revision: https://reviews.llvm.org/D60836

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358801 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Object/WasmObjectFile.cpp
test/Object/wasm-invalid-file.yaml

index 167b8c25c2ba2ac8bda1d7c9e289d53323f51ad5..45e343f8f47c4ca2994267e9e7f7be00389d9c73 100644 (file)
@@ -319,8 +319,8 @@ Error WasmObjectFile::parseSection(WasmSection &Sec) {
   case wasm::WASM_SEC_DATACOUNT:
     return parseDataCountSection(Ctx);
   default:
-    return make_error<GenericBinaryError>("Bad section type",
-                                          object_error::parse_failed);
+    return make_error<GenericBinaryError>(
+        "Invalid section type: " + Twine(Sec.Type), object_error::parse_failed);
   }
 }
 
@@ -1607,7 +1607,7 @@ int WasmSectionOrderChecker::getSectionOrder(unsigned ID,
   case wasm::WASM_SEC_EVENT:
     return WASM_SEC_ORDER_EVENT;
   default:
-    llvm_unreachable("invalid section");
+    return WASM_SEC_ORDER_NONE;
   }
 }
 
index 309fbd46e6e66cf8678bf75d09fb49d412a0679c..e562dfaa815e822890687aba672746c552e73346 100644 (file)
@@ -14,3 +14,9 @@ FileHeader:
 # RUN: not llvm-objdump -h %t.wasm 2>&1 | FileCheck %s -check-prefix=CHECK-SECTION-SIZE
 
 # CHECK-SECTION-SIZE: '{{.*}}.wasm': Section too large
+
+# RUN: yaml2obj %s > %t.wasm
+# # Append an section with invalid type (type 0x20, size 0x1, content 0x0)
+# RUN: echo -e -n "\x20\x01\x00" >> %t.wasm
+# RUN: not llvm-objdump -h %t.wasm 2>&1 | FileCheck %s -check-prefix=CHECK-SECTION-TYPE
+# CHECK-SECTION-TYPE: '{{.*}}.wasm': Invalid section type: 32