From 5f9a7ea15cecb3dc879a221abf4a05f1e748eb37 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Wed, 13 Mar 2024 13:14:22 +0800 Subject: name functions in .init_array/.fini_array/.ctors/.dtors sections --- view/elf/elfview.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'view/elf/elfview.cpp') 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)); + } } } -- cgit v1.3.1