gold plugin: Fix handling of corrupted bitcode files.

We should still claim them and tell gold about the error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214214 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2014-07-29 20:46:19 +00:00
parent bcb3a41891
commit df7568e9f3
3 changed files with 10 additions and 2 deletions

Binary file not shown.

View File

@ -0,0 +1,7 @@
; RUN: not ld -plugin %llvmshlibdir/LLVMgold.so \
; RUN: %p/Inputs/invalid.bc -o %t2 2>&1 | FileCheck %s
; test that only one error gets printed
; CHECK: error: LLVM gold plugin has failed to create LTO module: Malformed block
; CHECK-NOT: error

View File

@ -291,6 +291,8 @@ static ld_plugin_status claim_file_hook(const ld_plugin_input_file *file,
if (!LTOModule::isBitcodeFile(view, file->filesize))
return LDPS_OK;
*claimed = 1;
std::string Error;
LTOModule *M =
LTOModule::createFromBuffer(view, file->filesize, TargetOpts, Error);
@ -298,10 +300,9 @@ static ld_plugin_status claim_file_hook(const ld_plugin_input_file *file,
(*message)(LDPL_ERROR,
"LLVM gold plugin has failed to create LTO module: %s",
Error.c_str());
return LDPS_OK;
return LDPS_ERR;
}
*claimed = 1;
Modules.resize(Modules.size() + 1);
claimed_file &cf = Modules.back();