forked from OSchip/llvm-project
[ELF] - Check the input bitcode files for compatibility.
Previously BC files were not checked for the same platform etc, That lead to confusing error "Invalid section header entry size (e_shentsize) in ELF header" when mixing files for different architectures. Patch fixes PR28324. Differential revision: http://reviews.llvm.org/D21832 llvm-svn: 274113
This commit is contained in:
parent
fbbde548cf
commit
dbbf60e590
|
@ -33,9 +33,8 @@ using namespace lld::elf;
|
|||
// All input object files must be for the same architecture
|
||||
// (e.g. it does not make sense to link x86 object files with
|
||||
// MIPS object files.) This function checks for that error.
|
||||
template <class ELFT> static bool isCompatible(InputFile *FileP) {
|
||||
auto *F = dyn_cast<ELFFileBase<ELFT>>(FileP);
|
||||
if (!F)
|
||||
template <class ELFT> static bool isCompatible(InputFile *F) {
|
||||
if (!isa<ELFFileBase<ELFT>>(F) && !isa<BitcodeFile>(F))
|
||||
return true;
|
||||
if (F->EKind == Config->EKind && F->EMachine == Config->EMachine)
|
||||
return true;
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
; REQUIRES: x86
|
||||
; RUN: llvm-mc %p/Inputs/shared.s -o %t386.o -filetype=obj -triple=i386-pc-linux
|
||||
; RUN: ld.lld %t386.o -o %ti386.so -shared
|
||||
; RUN: llvm-as %s -o %tx64.o
|
||||
; RUN: not ld.lld %ti386.so %tx64.o -o %t 2>&1 | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
; CHECK: {{.*}}x64.o is incompatible with {{.*}}i386.so
|
Loading…
Reference in New Issue