diff options
-rw-r--r-- | lld/ELF/SymbolTable.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index 289ffbbfe8f..bfd70bca5ae 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -188,10 +188,11 @@ DefinedRegular<ELFT> *SymbolTable<ELFT>::addIgnored(StringRef Name, // Rename SYM as __wrap_SYM. The original symbol is preserved as __real_SYM. // Used to implement --wrap. template <class ELFT> void SymbolTable<ELFT>::wrap(StringRef Name) { - if (Symtab.count(Name) == 0) + SymbolBody *B = find(Name); + if (!B) return; StringSaver Saver(Alloc); - Symbol *Sym = addUndefined(Name)->Backref; + Symbol *Sym = B->Backref; Symbol *Real = addUndefined(Saver.save("__real_" + Name))->Backref; Symbol *Wrap = addUndefined(Saver.save("__wrap_" + Name))->Backref; Real->Body = Sym->Body; |