[llvm] r353907 - [MC] Make symbol version errors non-fatal
Hans Wennborg via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 18 02:39:03 PST 2019
Merged to release_80 in r354257.
On Wed, Feb 13, 2019 at 2:39 AM Reid Kleckner via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
>
> Author: rnk
> Date: Tue Feb 12 17:39:32 2019
> New Revision: 353907
>
> URL: http://llvm.org/viewvc/llvm-project?rev=353907&view=rev
> Log:
> [MC] Make symbol version errors non-fatal
>
> We stil don't have a source location, which is pretty lame, but at least
> we won't tell the user to file a clang bug report anymore.
>
> Fixes PR40712
>
> Modified:
> llvm/trunk/lib/MC/ELFObjectWriter.cpp
> llvm/trunk/test/MC/ELF/invalid-symver.s
> llvm/trunk/test/MC/ELF/multiple-different-symver.s
>
> Modified: llvm/trunk/lib/MC/ELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/ELFObjectWriter.cpp?rev=353907&r1=353906&r2=353907&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/ELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/MC/ELFObjectWriter.cpp Tue Feb 12 17:39:32 2019
> @@ -1274,14 +1274,20 @@ void ELFObjectWriter::executePostLayoutB
> if (!Symbol.isUndefined() && !Rest.startswith("@@@"))
> continue;
>
> - // FIXME: produce a better error message.
> + // FIXME: Get source locations for these errors or diagnose them earlier.
> if (Symbol.isUndefined() && Rest.startswith("@@") &&
> - !Rest.startswith("@@@"))
> - report_fatal_error("A @@ version cannot be undefined");
> + !Rest.startswith("@@@")) {
> + Asm.getContext().reportError(SMLoc(), "versioned symbol " + AliasName +
> + " must be defined");
> + continue;
> + }
>
> - if (Renames.count(&Symbol) && Renames[&Symbol] != Alias)
> - report_fatal_error(llvm::Twine("Multiple symbol versions defined for ") +
> - Symbol.getName());
> + if (Renames.count(&Symbol) && Renames[&Symbol] != Alias) {
> + Asm.getContext().reportError(
> + SMLoc(), llvm::Twine("multiple symbol versions defined for ") +
> + Symbol.getName());
> + continue;
> + }
>
> Renames.insert(std::make_pair(&Symbol, Alias));
> }
>
> Modified: llvm/trunk/test/MC/ELF/invalid-symver.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/invalid-symver.s?rev=353907&r1=353906&r2=353907&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/ELF/invalid-symver.s (original)
> +++ llvm/trunk/test/MC/ELF/invalid-symver.s Tue Feb 12 17:39:32 2019
> @@ -1,7 +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
> +// CHECK: error: versioned symbol foo@@bar must be defined
>
> .symver undefined, foo@@bar
> .long undefined
>
> Modified: llvm/trunk/test/MC/ELF/multiple-different-symver.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/multiple-different-symver.s?rev=353907&r1=353906&r2=353907&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/ELF/multiple-different-symver.s (original)
> +++ llvm/trunk/test/MC/ELF/multiple-different-symver.s Tue Feb 12 17:39:32 2019
> @@ -1,6 +1,6 @@
> // RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o %t 2>&1 | FileCheck %s
>
> -// CHECK: Multiple symbol versions defined for foo
> +// CHECK: error: multiple symbol versions defined for foo
>
> .symver foo, foo at 1
> .symver foo, foo at 2
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list