diff options
-rw-r--r-- | lib/MC/ELFObjectWriter.cpp | 5 | ||||
-rw-r--r-- | test/MC/ELF/invalid-symver.s | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp index 54d8123da0..1904397fe1 100644 --- a/lib/MC/ELFObjectWriter.cpp +++ b/lib/MC/ELFObjectWriter.cpp @@ -468,6 +468,11 @@ void ELFObjectWriterImpl::ExecutePostLayoutBinding(MCAssembler &Asm) { if (!Symbol.isUndefined() && !Rest.startswith("@@@")) continue; + // FIXME: produce a better error message. + if (Symbol.isUndefined() && Rest.startswith("@@") && + !Rest.startswith("@@@")) + report_fatal_error("A @@ version cannot be undefined"); + std::pair<const MCSymbol *, const MCSymbol *> t(&Symbol, &Alias); Renames.insert(t); } diff --git a/test/MC/ELF/invalid-symver.s b/test/MC/ELF/invalid-symver.s new file mode 100644 index 0000000000..3c4f8c084b --- /dev/null +++ b/test/MC/ELF/invalid-symver.s @@ -0,0 +1,7 @@ +// RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o %t 2> %t.out +// RUN: FileCheck --input-file=%t.out %s + +// CHECK: A @@ version cannot be undefined + + .symver undefined, foo@@bar + .long undefined |