From 83ff4d2b0d6133d48055a27fe25c5d241bca7e9b Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 27 Oct 2010 17:56:18 +0000 Subject: [PATCH] Produce an error for an invalid use of .symver. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117462 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/ELFObjectWriter.cpp | 5 +++++ test/MC/ELF/invalid-symver.s | 7 +++++++ 2 files changed, 12 insertions(+) create mode 100644 test/MC/ELF/invalid-symver.s diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp index 54d8123da02..1904397fe11 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 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 00000000000..3c4f8c084b9 --- /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 -- 2.34.1