[lld] r355878 - lld-link: Only print demangled symbol names by default

Galina Kistanova via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 12 11:29:35 PDT 2019


Hello Nico,

This commit broke tests to couple of our win builders:

http://lab.llvm.org:8011/builders/lld-x86_64-win7/builds/33438
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast
. . .
Failing Tests (1):
    lld :: COFF/conflict-mangled.test

Please have a look ASAP?

Thanks

Galina

On Mon, Mar 11, 2019 at 4:01 PM Nico Weber via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: nico
> Date: Mon Mar 11 16:02:18 2019
> New Revision: 355878
>
> URL: http://llvm.org/viewvc/llvm-project?rev=355878&view=rev
> Log:
> lld-link: Only print demangled symbol names by default
>
> This makes lld-link's output a bit more concise. Since most developers
> can't
> read mangled names, this should make the output a bit easier to understand
> as
> well. It also makes lld-link's output consistent with ld.lld's output.
>
> (link.exe prints both demangled and mangled names; lld-link used to match
> link.exe output but now no longer does.)
>
> For people working on toolchains, add a `/demangle:no` flag that makes
> lld-link
> print the mangled name instead of the demangled name. (If desired, people
> could
> pipe that through `demumble -b` to get the old behavior of both demangled
> and
> mangled output.)
>
> Differential Revision: https://reviews.llvm.org/D58132
>
> Modified:
>     lld/trunk/COFF/Config.h
>     lld/trunk/COFF/Driver.cpp
>     lld/trunk/COFF/Options.td
>     lld/trunk/COFF/Symbols.cpp
>     lld/trunk/test/COFF/undefined-symbol-cv.s
>     lld/trunk/test/COFF/undefined-symbol.s
>
> Modified: lld/trunk/COFF/Config.h
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Config.h?rev=355878&r1=355877&r2=355878&view=diff
>
> ==============================================================================
> --- lld/trunk/COFF/Config.h (original)
> +++ lld/trunk/COFF/Config.h Mon Mar 11 16:02:18 2019
> @@ -90,6 +90,7 @@ struct Configuration {
>    bool NoEntry = false;
>    std::string OutputFile;
>    std::string ImportName;
> +  bool Demangle = true;
>    bool DoGC = true;
>    bool DoICF = true;
>    bool TailMerge;
>
> Modified: lld/trunk/COFF/Driver.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.cpp?rev=355878&r1=355877&r2=355878&view=diff
>
> ==============================================================================
> --- lld/trunk/COFF/Driver.cpp (original)
> +++ lld/trunk/COFF/Driver.cpp Mon Mar 11 16:02:18 2019
> @@ -1081,6 +1081,9 @@ void LinkerDriver::link(ArrayRef<const c
>      Config->Incremental = true;
>    }
>
> +  // Handle /demangle
> +  Config->Demangle = Args.hasFlag(OPT_demangle, OPT_demangle_no);
> +
>    // Handle /debugtype
>    Config->DebugTypes = parseDebugTypes(Args);
>
>
> Modified: lld/trunk/COFF/Options.td
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Options.td?rev=355878&r1=355877&r2=355878&view=diff
>
> ==============================================================================
> --- lld/trunk/COFF/Options.td (original)
> +++ lld/trunk/COFF/Options.td Mon Mar 11 16:02:18 2019
> @@ -154,6 +154,9 @@ def help_q : Flag<["/?", "-?"], "">, Ali
>  // LLD extensions
>  def exclude_all_symbols : F<"exclude-all-symbols">;
>  def export_all_symbols : F<"export-all-symbols">;
> +defm demangle : B<"demangle",
> +    "Demangle symbols in output (default)",
> +    "Do not demangle symbols in output">;
>  def kill_at : F<"kill-at">;
>  def lldmingw : F<"lldmingw">;
>  def output_def : Joined<["/", "-"], "output-def:">;
> @@ -178,11 +181,6 @@ def show_timing : F<"time">;
>
>  class QF<string name> : Joined<["/", "-", "-?"], name#":">;
>
> -multiclass QB<string name> {
> -  def "" : F<name>;
> -  def _no : F<name#":no">;
> -}
> -
>  def ignoreidl : F<"ignoreidl">;
>  def nologo : F<"nologo">;
>  def throwingnew : F<"throwingnew">;
>
> Modified: lld/trunk/COFF/Symbols.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Symbols.cpp?rev=355878&r1=355877&r2=355878&view=diff
>
> ==============================================================================
> --- lld/trunk/COFF/Symbols.cpp (original)
> +++ lld/trunk/COFF/Symbols.cpp Mon Mar 11 16:02:18 2019
> @@ -18,10 +18,13 @@
>  using namespace llvm;
>  using namespace llvm::object;
>
> +using namespace lld::coff;
> +
>  // Returns a symbol name for an error message.
>  std::string lld::toString(coff::Symbol &B) {
> -  if (Optional<std::string> S = lld::demangleMSVC(B.getName()))
> -    return ("\"" + *S + "\" (" + B.getName() + ")").str();
> +  if (Config->Demangle)
> +    if (Optional<std::string> S = lld::demangleMSVC(B.getName()))
> +      return *S;
>    return B.getName();
>  }
>
>
> Modified: lld/trunk/test/COFF/undefined-symbol-cv.s
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/undefined-symbol-cv.s?rev=355878&r1=355877&r2=355878&view=diff
>
> ==============================================================================
> --- lld/trunk/test/COFF/undefined-symbol-cv.s (original)
> +++ lld/trunk/test/COFF/undefined-symbol-cv.s Mon Mar 11 16:02:18 2019
> @@ -2,19 +2,19 @@
>  # RUN: llvm-mc -triple=x86_64-windows-msvc -filetype=obj -o %t.obj %s
>  # RUN: not lld-link /out:%t.exe %t.obj 2>&1 | FileCheck %s
>
> -# CHECK: error: undefined symbol: "int __cdecl foo(void)" (?foo@@YAHXZ)
> +# CHECK: error: undefined symbol: int __cdecl foo(void)
>  # CHECK-NEXT: >>> referenced by file1.cpp:1
>  # CHECK-NEXT: >>>               {{.*}}.obj:(main)
>  # CHECK-NEXT: >>> referenced by file1.cpp:2
>  # CHECK-NEXT: >>>               {{.*}}.obj:(main)
>  # CHECK-EMPTY:
> -# CHECK-NEXT: error: undefined symbol: "int __cdecl bar(void)" (?bar@
> @YAHXZ)
> +# CHECK-NEXT: error: undefined symbol: int __cdecl bar(void)
>  # CHECK-NEXT: >>> referenced by file2.cpp:3
>  # CHECK-NEXT: >>>               {{.*}}.obj:(main)
>  # CHECK-NEXT: >>> referenced by file1.cpp:4
>  # CHECK-NEXT: >>>               {{.*}}.obj:(f1)
>  # CHECK-EMPTY:
> -# CHECK-NEXT: error: undefined symbol: "int __cdecl baz(void)" (?baz@
> @YAHXZ)
> +# CHECK-NEXT: error: undefined symbol: int __cdecl baz(void)
>  # CHECK-NEXT: >>> referenced by file1.cpp:5
>  # CHECK-NEXT: >>>               {{.*}}.obj:(f2)
>
>
> Modified: lld/trunk/test/COFF/undefined-symbol.s
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/undefined-symbol.s?rev=355878&r1=355877&r2=355878&view=diff
>
> ==============================================================================
> --- lld/trunk/test/COFF/undefined-symbol.s (original)
> +++ lld/trunk/test/COFF/undefined-symbol.s Mon Mar 11 16:02:18 2019
> @@ -1,16 +1,22 @@
>  # REQUIRES: x86
>  # RUN: llvm-mc -triple=x86_64-windows-msvc -filetype=obj -o %t.obj %s
>  # RUN: not lld-link /out:%t.exe %t.obj 2>&1 | FileCheck %s
> +# RUN: not lld-link /out:%t.exe /demangle %t.obj 2>&1 | FileCheck %s
> +# RUN: not lld-link /out:%t.exe /demangle:no %t.obj 2>&1 | FileCheck
> --check-prefix=NODEMANGLE %s
>
> -# CHECK: error: undefined symbol: "int __cdecl foo(void)" (?foo@@YAHXZ)
> +# NODEMANGLE: error: undefined symbol: ?foo@@YAHXZ
> +# NODEMANGLE: error: undefined symbol: ?bar@@YAHXZ
> +# NODEMANGLE: error: undefined symbol: __imp_?baz@@YAHXZ
> +
> +# CHECK: error: undefined symbol: int __cdecl foo(void)
>  # CHECK-NEXT: >>> referenced by {{.*}}.obj:(main)
>  # CHECK-NEXT: >>> referenced by {{.*}}.obj:(main)
>  # CHECK-EMPTY:
> -# CHECK-NEXT: error: undefined symbol: "int __cdecl bar(void)" (?bar@
> @YAHXZ)
> +# CHECK-NEXT: error: undefined symbol: int __cdecl bar(void)
>  # CHECK-NEXT: >>> referenced by {{.*}}.obj:(main)
>  # CHECK-NEXT: >>> referenced by {{.*}}.obj:(f1)
>  # CHECK-EMPTY:
> -# CHECK-NEXT: error: undefined symbol: "__declspec(dllimport) int __cdecl
> baz(void)" (__imp_?baz@@YAHXZ)
> +# CHECK-NEXT: error: undefined symbol: __declspec(dllimport) int __cdecl
> baz(void)
>  # CHECK-NEXT: >>> referenced by {{.*}}.obj:(f2)
>
>          .section        .text,"xr",one_only,main
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190312/0c3f1ec3/attachment.html>


More information about the llvm-commits mailing list