diff options
Diffstat (limited to 'view/elf/elfview.cpp')
| -rw-r--r-- | view/elf/elfview.cpp | 13 |
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)); + } } } |
