diff options
Diffstat (limited to 'lld/wasm')
| -rw-r--r-- | lld/wasm/Config.h | 1 | ||||
| -rw-r--r-- | lld/wasm/Driver.cpp | 2 | ||||
| -rw-r--r-- | lld/wasm/Options.td | 4 | ||||
| -rw-r--r-- | lld/wasm/Symbols.cpp | 3 |
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(); } |

