diff options
Diffstat (limited to 'lld/ELF/MarkLive.cpp')
-rw-r--r-- | lld/ELF/MarkLive.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lld/ELF/MarkLive.cpp b/lld/ELF/MarkLive.cpp index 4d0b08dc76d..ade0dceeb2c 100644 --- a/lld/ELF/MarkLive.cpp +++ b/lld/ELF/MarkLive.cpp @@ -99,12 +99,13 @@ template <class ELFT> void elf::markLive(SymbolTable<ELFT> *Symtab) { auto MarkSymbol = [&](SymbolBody *Sym) { if (Sym) - if (auto *D = dyn_cast<DefinedRegular<ELFT>>(&Sym->repl())) + if (auto *D = dyn_cast<DefinedRegular<ELFT>>(Sym)) Enqueue(D->Section); }; // Add GC root symbols. - MarkSymbol(Config->EntrySym); + if (Config->EntrySym) + MarkSymbol(Config->EntrySym->Body); MarkSymbol(Symtab->find(Config->Init)); MarkSymbol(Symtab->find(Config->Fini)); for (StringRef S : Config->Undefined) |