diff options
author | Paul Semel <semelpaul@gmail.com> | 2018-05-02 20:19:22 +0000 |
---|---|---|
committer | Paul Semel <semelpaul@gmail.com> | 2018-05-02 20:19:22 +0000 |
commit | 41695f8e7397dfa1bc1691a7f3198dbf65adb3f1 (patch) | |
tree | 37c59efca37732a5129f792ba0f597730e9579a1 /llvm/tools/llvm-objcopy/Object.cpp | |
parent | b374bca7eb48b5a4d37d416fd805cbd133c4bba2 (diff) | |
download | bcm5719-llvm-41695f8e7397dfa1bc1691a7f3198dbf65adb3f1.tar.gz bcm5719-llvm-41695f8e7397dfa1bc1691a7f3198dbf65adb3f1.zip |
[llvm-objcopy] Add --discard-all (-x) option
llvm-svn: 331400
Diffstat (limited to 'llvm/tools/llvm-objcopy/Object.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/Object.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/llvm/tools/llvm-objcopy/Object.cpp b/llvm/tools/llvm-objcopy/Object.cpp index 07b60367b9e..93487dc5bf6 100644 --- a/llvm/tools/llvm-objcopy/Object.cpp +++ b/llvm/tools/llvm-objcopy/Object.cpp @@ -194,12 +194,7 @@ void SymbolTableSection::removeSectionReferences(const SectionBase *Sec) { " cannot be removed because it is referenced by the symbol table " + this->Name); } - auto Iter = - std::remove_if(std::begin(Symbols), std::end(Symbols), - [=](const SymPtr &Sym) { return Sym->DefinedIn == Sec; }); - Size -= (std::end(Symbols) - Iter) * this->EntrySize; - Symbols.erase(Iter, std::end(Symbols)); - assignIndices(); + removeSymbols([Sec](const Symbol &Sym) { return Sym.DefinedIn == Sec; }); } void SymbolTableSection::updateSymbols(function_ref<void(Symbol &)> Callable) { @@ -211,6 +206,15 @@ void SymbolTableSection::updateSymbols(function_ref<void(Symbol &)> Callable) { assignIndices(); } +void SymbolTableSection::removeSymbols(function_ref<bool(Symbol &)> ToRemove) { + Symbols.erase( + std::remove_if(std::begin(Symbols), std::end(Symbols), + [ToRemove](const SymPtr &Sym) { return ToRemove(*Sym); }), + std::end(Symbols)); + Size = Symbols.size() * EntrySize; + assignIndices(); +} + void SymbolTableSection::initialize(SectionTableRef SecTable) { Size = 0; setStrTab(SecTable.getSectionOfType<StringTableSection>( |