summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-objcopy/Object.cpp
diff options
context:
space:
mode:
authorPaul Semel <semelpaul@gmail.com>2018-05-22 01:04:36 +0000
committerPaul Semel <semelpaul@gmail.com>2018-05-22 01:04:36 +0000
commit31a212d6943c85f1cdccc84897aae46ec9546ba1 (patch)
tree61082f414bf0e797f0032b3530c5d14c6864f284 /llvm/tools/llvm-objcopy/Object.cpp
parentf6dda7cb44c6ee37108f8bb87e606f05563675fe (diff)
downloadbcm5719-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.cpp16
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);
}
}
OpenPOWER on IntegriCloud