Author: Fangrui Song Date: 2022-02-05T23:40:36-08:00 New Revision: c7bca45103e360ed9cb695d3db519f0639c898d3
URL: https://github.com/llvm/llvm-project/commit/c7bca45103e360ed9cb695d3db519f0639c898d3 DIFF: https://github.com/llvm/llvm-project/commit/c7bca45103e360ed9cb695d3db519f0639c898d3.diff LOG: [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. (cherry picked from commit bad1b7fbb0fec532f097ac59805562020f895962) Added: Modified: lld/ELF/InputFiles.cpp lld/test/ELF/incompatible-ar-first.s Removed: ################################################################################ diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp index b5510b3b27362..775999a5f534c 100644 --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -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; } diff --git a/lld/test/ELF/incompatible-ar-first.s b/lld/test/ELF/incompatible-ar-first.s index e49171939513c..a82a55a39ed80 100644 --- a/lld/test/ELF/incompatible-ar-first.s +++ b/lld/test/ELF/incompatible-ar-first.s @@ -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{{$}} _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits