diff options
| -rw-r--r-- | lld/wasm/Driver.cpp | 13 | ||||
| -rw-r--r-- | lld/wasm/Symbols.cpp | 1 |
2 files changed, 2 insertions, 12 deletions
diff --git a/lld/wasm/Driver.cpp b/lld/wasm/Driver.cpp index 2858f68397b..475682b87df 100644 --- a/lld/wasm/Driver.cpp +++ b/lld/wasm/Driver.cpp @@ -134,17 +134,6 @@ static Optional<std::string> findFile(StringRef Path1, const Twine &Path2) { return None; } -// Inject a new wasm global into the output binary with the given value. -// Wasm global are used in relocatable object files to model symbol imports -// and exports. In the final executable the only use of wasm globals is -// for the exlicit stack pointer (__stack_pointer). -static Symbol* addSyntheticGlobal(StringRef Name, int32_t Value) { - log("injecting global: " + Name); - Symbol *S = Symtab->addDefinedGlobal(Name); - S->setVirtualAddress(Value); - return S; -} - // Inject a new undefined symbol into the link. This will cause the link to // fail unless this symbol can be found. static void addSyntheticUndefinedFunction(StringRef Name, @@ -285,7 +274,7 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) { for (StringRef S : args::getStrings(Args, OPT_undefined)) addSyntheticUndefinedFunction(S, nullptr); - Config->StackPointerSymbol = addSyntheticGlobal("__stack_pointer", 0); + Config->StackPointerSymbol = Symtab->addDefinedGlobal("__stack_pointer"); } createFiles(Args); diff --git a/lld/wasm/Symbols.cpp b/lld/wasm/Symbols.cpp index 2be2ef91d2d..764e00e37cd 100644 --- a/lld/wasm/Symbols.cpp +++ b/lld/wasm/Symbols.cpp @@ -61,6 +61,7 @@ uint32_t Symbol::getOutputIndex() const { void Symbol::setVirtualAddress(uint32_t Value) { DEBUG(dbgs() << "setVirtualAddress " << Name << " -> " << Value << "\n"); + assert(!VirtualAddress.hasValue()); VirtualAddress = Value; } |

