summaryrefslogtreecommitdiffstats
path: root/lld/wasm/Driver.cpp
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2018-06-28 17:21:46 +0000
committerSam Clegg <sbc@chromium.org>2018-06-28 17:21:46 +0000
commit52b2456a95407bad5960352778b24417b4a3da29 (patch)
tree65d35d191c577e3ca6ef61a7eaf08bc7a9351e47 /lld/wasm/Driver.cpp
parent5ce0a08cf6cf7233b1a505957e3ad518b6e9f6e9 (diff)
downloadbcm5719-llvm-52b2456a95407bad5960352778b24417b4a3da29.tar.gz
bcm5719-llvm-52b2456a95407bad5960352778b24417b4a3da29.zip
[WebAssembly] Fix --export of LTO symbols
Differential Revision: https://reviews.llvm.org/D48697 llvm-svn: 335881
Diffstat (limited to 'lld/wasm/Driver.cpp')
-rw-r--r--lld/wasm/Driver.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/lld/wasm/Driver.cpp b/lld/wasm/Driver.cpp
index f77f20f4232..06aa437d869 100644
--- a/lld/wasm/Driver.cpp
+++ b/lld/wasm/Driver.cpp
@@ -439,6 +439,16 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {
if (!Config->Relocatable)
handleWeakUndefines();
+ // Handle --export.
+ for (auto *Arg : Args.filtered(OPT_export)) {
+ StringRef Name = Arg->getValue();
+ Symbol *Sym = Symtab->find(Name);
+ if (Sym && Sym->isDefined())
+ Sym->ForceExport = true;
+ else if (!Config->AllowUndefined)
+ error("symbol exported via --export not found: " + Name);
+ }
+
// Do link-time optimization if given files are LLVM bitcode files.
// This compiles bitcode files into real object files.
Symtab->addCombinedLTOObject();
@@ -466,16 +476,6 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {
if (errorCount())
return;
- // Handle --export.
- for (auto *Arg : Args.filtered(OPT_export)) {
- StringRef Name = Arg->getValue();
- Symbol *Sym = Symtab->find(Name);
- if (Sym && Sym->isDefined())
- Sym->setHidden(false);
- else if (!Config->AllowUndefined)
- error("symbol exported via --export not found: " + Name);
- }
-
if (EntrySym)
EntrySym->setHidden(false);
OpenPOWER on IntegriCloud