[llvm-objcopy] Implement --redefine-sym option
This diff implements --redefine-sym option
for changing the name of a symbol.
Test plan: make check-all
Differential revision: https://reviews.llvm.org/D46029
llvm-svn: 330973
diff --git a/llvm/tools/llvm-objcopy/Object.cpp b/llvm/tools/llvm-objcopy/Object.cpp
index c7ce230..07b6036 100644
--- a/llvm/tools/llvm-objcopy/Object.cpp
+++ b/llvm/tools/llvm-objcopy/Object.cpp
@@ -202,15 +202,9 @@
assignIndices();
}
-void SymbolTableSection::localize(
- std::function<bool(const Symbol &)> ToLocalize) {
- for (const auto &Sym : Symbols) {
- if (ToLocalize(*Sym))
- Sym->Binding = STB_LOCAL;
- }
-
- // Now that the local symbols aren't grouped at the start we have to reorder
- // the symbols to respect this property.
+void SymbolTableSection::updateSymbols(function_ref<void(Symbol &)> Callable) {
+ for (auto &Sym : Symbols)
+ Callable(*Sym);
std::stable_partition(
std::begin(Symbols), std::end(Symbols),
[](const SymPtr &Sym) { return Sym->Binding == STB_LOCAL; });