diff options
author | Paul Semel <semelpaul@gmail.com> | 2018-05-22 01:04:36 +0000 |
---|---|---|
committer | Paul Semel <semelpaul@gmail.com> | 2018-05-22 01:04:36 +0000 |
commit | 31a212d6943c85f1cdccc84897aae46ec9546ba1 (patch) | |
tree | 61082f414bf0e797f0032b3530c5d14c6864f284 /llvm/tools/llvm-objcopy/Object.cpp | |
parent | f6dda7cb44c6ee37108f8bb87e606f05563675fe (diff) | |
download | bcm5719-llvm-31a212d6943c85f1cdccc84897aae46ec9546ba1.tar.gz bcm5719-llvm-31a212d6943c85f1cdccc84897aae46ec9546ba1.zip |
Revert "[llvm-objcopy] Add --strip-unneeded option"
There is a use after free I didn't see. Need to investigate.
This reverts commit f7624abeb1f0d012309baf2e78cf2499fbfe5e5f.
llvm-svn: 332925
Diffstat (limited to 'llvm/tools/llvm-objcopy/Object.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/Object.cpp | 16 |
1 files changed, 1 insertions, 15 deletions
diff --git a/llvm/tools/llvm-objcopy/Object.cpp b/llvm/tools/llvm-objcopy/Object.cpp index bd728270fb7..efb3207aa8d 100644 --- a/llvm/tools/llvm-objcopy/Object.cpp +++ b/llvm/tools/llvm-objcopy/Object.cpp @@ -185,7 +185,6 @@ void SymbolTableSection::addSymbol(StringRef Name, uint8_t Bind, uint8_t Type, Sym.Visibility = Visibility; Sym.Size = Sz; Sym.Index = Symbols.size(); - Sym.ReferenceCount = 0; Symbols.emplace_back(llvm::make_unique<Symbol>(Sym)); Size += this->EntrySize; } @@ -256,11 +255,6 @@ const Symbol *SymbolTableSection::getSymbolByIndex(uint32_t Index) const { return Symbols[Index].get(); } -Symbol *SymbolTableSection::getSymbolByIndex(uint32_t Index) { - return const_cast<Symbol *>( - static_cast<const SymbolTableSection *>(this)->getSymbolByIndex(Index)); -} - template <class ELFT> void ELFSectionWriter<ELFT>::visit(const SymbolTableSection &Sec) { uint8_t *Buf = Out.getBufferStart(); @@ -350,12 +344,6 @@ void RelocationSection::accept(SectionVisitor &Visitor) const { Visitor.visit(*this); } -RelocationSection::~RelocationSection() { - for (auto &Rel : Relocations) { - --Rel.RelocSymbol->ReferenceCount; - } -} - void RelocationSection::removeSymbols( function_ref<bool(const Symbol &)> ToRemove) { for (const Relocation &Reloc : Relocations) @@ -659,9 +647,7 @@ void initRelocations(RelocationSection *Relocs, SymbolTableSection *SymbolTable, ToAdd.Offset = Rel.r_offset; getAddend(ToAdd.Addend, Rel); ToAdd.Type = Rel.getType(false); - Symbol *Sym = SymbolTable->getSymbolByIndex(Rel.getSymbol(false)); - ++Sym->ReferenceCount; - ToAdd.RelocSymbol = Sym; + ToAdd.RelocSymbol = SymbolTable->getSymbolByIndex(Rel.getSymbol(false)); Relocs->addRelocation(ToAdd); } } |