Index: llvm/trunk/lib/Object/WasmObjectFile.cpp =================================================================== --- llvm/trunk/lib/Object/WasmObjectFile.cpp +++ llvm/trunk/lib/Object/WasmObjectFile.cpp @@ -319,8 +319,8 @@ case wasm::WASM_SEC_DATACOUNT: return parseDataCountSection(Ctx); default: - return make_error("Bad section type", - object_error::parse_failed); + return make_error( + "Invalid section type: " + Twine(Sec.Type), object_error::parse_failed); } } @@ -1607,7 +1607,7 @@ case wasm::WASM_SEC_EVENT: return WASM_SEC_ORDER_EVENT; default: - llvm_unreachable("invalid section"); + return WASM_SEC_ORDER_NONE; } } Index: llvm/trunk/test/Object/wasm-invalid-file.yaml =================================================================== --- llvm/trunk/test/Object/wasm-invalid-file.yaml +++ llvm/trunk/test/Object/wasm-invalid-file.yaml @@ -14,3 +14,9 @@ # 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