diff options
author | Sam Clegg <sbc@chromium.org> | 2018-03-08 01:16:05 +0000 |
---|---|---|
committer | Sam Clegg <sbc@chromium.org> | 2018-03-08 01:16:05 +0000 |
commit | 335672e1580ff0ce23a11ee162dc391dc63b362b (patch) | |
tree | 50a32f63de083030e3e108bed3a605470509611d /lld/wasm/Driver.cpp | |
parent | 46c6cc556c5cf2ea72c7c018f34ac7a8ee634fed (diff) |
[WebAssembly] Honor --allow-undefined even for explicit exports
When a symbol is exported via --export=foo but --allow-undefined
is also specified, the symbol is now allowed to be undefined.
Previously we were special casing such symbols.
This combinations of behavior is exactly what emescripten
requires. Although we are trying hard not to allow emscripten
specific features in lld, this one makes sense.
Enforce this behavior by added this case to test/wasm/undefined.ll.
Differential Revision: https://reviews.llvm.org/D44237
Diffstat (limited to 'lld/wasm/Driver.cpp')
-rw-r--r-- | lld/wasm/Driver.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lld/wasm/Driver.cpp b/lld/wasm/Driver.cpp index ef0794c3073..a97026d4df8 100644 --- a/lld/wasm/Driver.cpp +++ b/lld/wasm/Driver.cpp @@ -346,7 +346,7 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) { Symbol *Sym = Symtab->find(Name); if (Sym && Sym->isDefined()) Sym->setHidden(false); - else + else if (!Config->AllowUndefined) error("symbol exported via --export not found: " + Name); } |