summaryrefslogtreecommitdiffstats
path: root/lld/wasm/SymbolTable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lld/wasm/SymbolTable.cpp')
-rw-r--r--lld/wasm/SymbolTable.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lld/wasm/SymbolTable.cpp b/lld/wasm/SymbolTable.cpp
index dec59cb98c7..d10952797d5 100644
--- a/lld/wasm/SymbolTable.cpp
+++ b/lld/wasm/SymbolTable.cpp
@@ -202,7 +202,10 @@ DefinedFunction *SymbolTable::addSyntheticFunction(StringRef Name,
DefinedData *SymbolTable::addOptionalDataSymbol(StringRef Name, uint32_t Value,
uint32_t Flags) {
Symbol *S = find(Name);
- if (!S || S->isDefined())
+ // Enable --export of optional symbols
+ if (!S && (Config->ExportAll || Config->ExportedSymbols.count(Name) != 0))
+ S = insertName(Name).first;
+ else if (!S || S->isDefined())
return nullptr;
LLVM_DEBUG(dbgs() << "addOptionalDataSymbol: " << Name << "\n");
auto *rtn = replaceSymbol<DefinedData>(S, Name, Flags);
OpenPOWER on IntegriCloud