summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Wilson <nicholas@nicholaswilson.me.uk>2018-03-13 13:12:03 +0000
committerNicholas Wilson <nicholas@nicholaswilson.me.uk>2018-03-13 13:12:03 +0000
commit08cff615723f7de637e04402e79bd19cf4fcfcf7 (patch)
tree1ce7e9b58e6ae20ea010b92193d570954c5a8836
parent844f22d3c3806f372c1bec258a4bc559f974081d (diff)
downloadbcm5719-llvm-08cff615723f7de637e04402e79bd19cf4fcfcf7.tar.gz
bcm5719-llvm-08cff615723f7de637e04402e79bd19cf4fcfcf7.zip
[WebAssembly] Add missing --demangle arg
Previously, Config->Demangle was uninitialised (not hooked up to commandline handling) Differential Revision: https://reviews.llvm.org/D44301 llvm-svn: 327390
-rw-r--r--lld/test/wasm/demangle.ll17
-rw-r--r--lld/wasm/Driver.cpp1
-rw-r--r--lld/wasm/Options.td9
3 files changed, 27 insertions, 0 deletions
diff --git a/lld/test/wasm/demangle.ll b/lld/test/wasm/demangle.ll
new file mode 100644
index 00000000000..07f99274556
--- /dev/null
+++ b/lld/test/wasm/demangle.ll
@@ -0,0 +1,17 @@
+; RUN: llc -filetype=obj %s -o %t.o
+; RUN: not wasm-ld --check-signatures --undefined _Z3fooi \
+; RUN: -o %t.wasm %t.o 2>&1 | FileCheck %s
+
+; CHECK: error: undefined symbol: foo(int)
+
+; RUN: not wasm-ld --check-signatures --no-demangle --undefined _Z3fooi \
+; RUN: -o %t.wasm %t.o 2>&1 | FileCheck -check-prefix=CHECK-NODEMANGLE %s
+
+; CHECK-NODEMANGLE: error: undefined symbol: _Z3fooi
+
+target triple = "wasm32-unknown-unknown-wasm"
+
+define hidden void @_start() local_unnamed_addr {
+entry:
+ ret void
+}
diff --git a/lld/wasm/Driver.cpp b/lld/wasm/Driver.cpp
index 0de180a2c94..443def7587d 100644
--- a/lld/wasm/Driver.cpp
+++ b/lld/wasm/Driver.cpp
@@ -280,6 +280,7 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {
Config->AllowUndefined = Args.hasArg(OPT_allow_undefined);
Config->CheckSignatures =
Args.hasFlag(OPT_check_signatures, OPT_no_check_signatures, false);
+ Config->Demangle = Args.hasFlag(OPT_demangle, OPT_no_demangle, true);
Config->Entry = getEntry(Args, Args.hasArg(OPT_relocatable) ? "" : "_start");
Config->ImportMemory = Args.hasArg(OPT_import_memory);
Config->OutputFile = Args.getLastArgValue(OPT_o);
diff --git a/lld/wasm/Options.td b/lld/wasm/Options.td
index 6260d4d9843..8c9baad2eec 100644
--- a/lld/wasm/Options.td
+++ b/lld/wasm/Options.td
@@ -11,6 +11,11 @@ multiclass Eq<string name> {
def _eq: Joined<["--", "-"], name # "=">, Alias<!cast<Separate>(NAME)>;
}
+multiclass B<string name, string help1, string help2> {
+ def NAME: Flag<["--", "-"], name>, HelpText<help1>;
+ def no_ # NAME: Flag<["--", "-"], "no-" # name>, HelpText<help2>;
+}
+
// The follow flags are shared with the ELF linker
def color_diagnostics: F<"color-diagnostics">,
HelpText<"Use colors in diagnostics">;
@@ -18,6 +23,10 @@ def color_diagnostics: F<"color-diagnostics">,
def color_diagnostics_eq: J<"color-diagnostics=">,
HelpText<"Use colors in diagnostics">;
+defm demangle: B<"demangle",
+ "Demangle symbol names",
+ "Do not demangle symbol names">;
+
def entry: S<"entry">, MetaVarName<"<entry>">,
HelpText<"Name of entry point symbol">;
OpenPOWER on IntegriCloud