summaryrefslogtreecommitdiffstats
path: root/lld/wasm
diff options
context:
space:
mode:
Diffstat (limited to 'lld/wasm')
-rw-r--r--lld/wasm/Config.h1
-rw-r--r--lld/wasm/Driver.cpp2
-rw-r--r--lld/wasm/Options.td4
-rw-r--r--lld/wasm/Symbols.cpp3
4 files changed, 10 insertions, 0 deletions
diff --git a/lld/wasm/Config.h b/lld/wasm/Config.h
index 76a78056707..ae8989f15d7 100644
--- a/lld/wasm/Config.h
+++ b/lld/wasm/Config.h
@@ -24,6 +24,7 @@ struct Configuration {
bool Demangle;
bool DisableVerify;
bool ExportAll;
+ bool ExportDefault;
bool ExportTable;
bool GcSections;
bool ImportMemory;
diff --git a/lld/wasm/Driver.cpp b/lld/wasm/Driver.cpp
index f477ba3b235..789bda90b1a 100644
--- a/lld/wasm/Driver.cpp
+++ b/lld/wasm/Driver.cpp
@@ -373,6 +373,8 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {
Config->DisableVerify = Args.hasArg(OPT_disable_verify);
Config->Entry = getEntry(Args, Args.hasArg(OPT_relocatable) ? "" : "_start");
Config->ExportAll = Args.hasArg(OPT_export_all);
+ Config->ExportDefault = Args.hasFlag(OPT_export_default,
+ OPT_no_export_default, true);
Config->ExportTable = Args.hasArg(OPT_export_table);
errorHandler().FatalWarnings =
Args.hasFlag(OPT_fatal_warnings, OPT_no_fatal_warnings, false);
diff --git a/lld/wasm/Options.td b/lld/wasm/Options.td
index e2922c24c90..e98b1b9f89a 100644
--- a/lld/wasm/Options.td
+++ b/lld/wasm/Options.td
@@ -30,6 +30,10 @@ defm demangle: B<"demangle",
"Demangle symbol names",
"Do not demangle symbol names">;
+defm export_default: B<"export-default",
+ "Export symbols marked as 'default' visibility (default)",
+ "Do not export symbols marked as 'default' visibility">;
+
def entry: S<"entry">, MetaVarName<"<entry>">,
HelpText<"Name of entry point symbol">;
diff --git a/lld/wasm/Symbols.cpp b/lld/wasm/Symbols.cpp
index a11081cbcf7..68bcadbb9af 100644
--- a/lld/wasm/Symbols.cpp
+++ b/lld/wasm/Symbols.cpp
@@ -105,6 +105,9 @@ bool Symbol::isExported() const {
if (ForceExport || Config->ExportAll)
return true;
+ if (!Config->ExportDefault)
+ return false;
+
return !isHidden();
}
OpenPOWER on IntegriCloud