summaryrefslogtreecommitdiff
path: root/view/elf/elfview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'view/elf/elfview.cpp')
-rw-r--r--view/elf/elfview.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/view/elf/elfview.cpp b/view/elf/elfview.cpp
index 94b3c37b..d1b2beef 100644
--- a/view/elf/elfview.cpp
+++ b/view/elf/elfview.cpp
@@ -1534,6 +1534,19 @@ bool ElfView::Init()
else
AddFunctionForAnalysis(platform, entry);
m_logger->LogDebug("Adding function start: %#" PRIx64 "\n", entry);
+
+ // name functions in .init_array, .fini_array, .ctors and .dtors
+ if (!GetSymbolByAddress(entry))
+ {
+ if (section->GetName() == ".init_array")
+ DefineAutoSymbol(new Symbol(FunctionSymbol, "_INIT_" + std::to_string(i), entry, GlobalBinding));
+ else if (section->GetName() == ".fini_array")
+ DefineAutoSymbol(new Symbol(FunctionSymbol, "_FINI_" + std::to_string(i), entry, GlobalBinding));
+ else if (section->GetName() == ".ctors")
+ DefineAutoSymbol(new Symbol(FunctionSymbol, "_CTOR_" + std::to_string(i), entry, GlobalBinding));
+ else if (section->GetName() == ".dtors")
+ DefineAutoSymbol(new Symbol(FunctionSymbol, "_DTOR_" + std::to_string(i), entry, GlobalBinding));
+ }
}
}