[ELF] Fix crash when an input is incompatible with a lazy object file

The diagnostic is concise. It is ok because the case is rare.
This commit is contained in:
Fangrui Song 2022-02-05 23:34:14 -08:00
parent b4626f22de
commit bad1b7fbb0
2 changed files with 8 additions and 6 deletions

View File

@ -152,18 +152,17 @@ static bool isCompatible(InputFile *file) {
return false;
}
InputFile *existing;
InputFile *existing = nullptr;
if (!objectFiles.empty())
existing = objectFiles[0];
else if (!sharedFiles.empty())
existing = sharedFiles[0];
else if (!bitcodeFiles.empty())
existing = bitcodeFiles[0];
else
llvm_unreachable("Must have -m, OUTPUT_FORMAT or existing input file to "
"determine target emulation");
error(toString(file) + " is incompatible with " + toString(existing));
std::string with;
if (existing)
with = " with " + toString(existing);
error(toString(file) + " is incompatible" + with);
return false;
}

View File

@ -10,3 +10,6 @@
// * -m was not used.
// CHECK: .a({{.*}}a.o) is incompatible with {{.*}}b.o
// RUN: not ld.lld --start-lib %ta.o --end-lib %tb.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=CHECK2
// CHECK2: {{.*}}b.o is incompatible{{$}}