diff --git a/lib/base/stacktrace.cpp b/lib/base/stacktrace.cpp index 04d0d6517..cea0768c5 100644 --- a/lib/base/stacktrace.cpp +++ b/lib/base/stacktrace.cpp @@ -133,7 +133,6 @@ void StackTrace::Print(std::ostream& fp, int ignoreFrames) const path = path.SubStr(slashp + 1); message = path + ": " + sym_demangled + " (" + String(sym_end); - message += " (" + Utility::GetSymbolSource(m_Frames[i]) + ")"; } } @@ -148,9 +147,7 @@ void StackTrace::Print(std::ostream& fp, int ignoreFrames) const # endif /* HAVE_BACKTRACE_SYMBOLS */ #else /* _WIN32 */ for (int i = ignoreFrames + 1; i < m_Count; i++) { - fp << "\t(" << i - ignoreFrames - 1 << ") " - << Utility::GetSymbolSource(m_Frames[i]) - << ": " + fp << "\t(" << i - ignoreFrames - 1 << "): " << Utility::GetSymbolName(m_Frames[i]) << std::endl; } diff --git a/lib/base/utility.cpp b/lib/base/utility.cpp index 5eac40d35..4d13444f0 100644 --- a/lib/base/utility.cpp +++ b/lib/base/utility.cpp @@ -85,43 +85,6 @@ String Utility::GetTypeName(const std::type_info& ti) return DemangleSymbolName(ti.name()); } -/** - * Looks up source file name and line number information for the specified - * ELF executable and RVA. - * - * @param exe The ELF file. - * @param rva The RVA. - * @returns Source file and line number. - */ -String Utility::Addr2Line(const String& exe, uintptr_t rva) -{ -#ifndef _WIN32 - std::ostringstream msgbuf; - msgbuf << "addr2line -s -e " << Application::GetExePath(exe) << " " << std::hex << rva << " 2>/dev/null"; - - String args = msgbuf.str(); - - FILE *fp = popen(args.CStr(), "r"); - - if (!fp) - return "RVA: " + Convert::ToString(rva); - - char buffer[512] = {}; - fgets(buffer, sizeof(buffer), fp); - fclose(fp); - - String line = buffer; - boost::algorithm::trim_right(line); - - if (line.GetLength() == 0) - return "RVA: " + Convert::ToString(rva); - - return line; -#else /* _WIN32 */ - return String(); -#endif /* _WIN32 */ -} - String Utility::GetSymbolName(const void *addr) { #ifdef HAVE_DLADDR @@ -155,36 +118,6 @@ String Utility::GetSymbolName(const void *addr) return "(unknown function)"; } -String Utility::GetSymbolSource(const void *addr) -{ -#ifdef HAVE_DLADDR - Dl_info dli; - - if (dladdr(addr, &dli) > 0) { - uintptr_t rva = reinterpret_cast(addr) - reinterpret_cast(dli.dli_fbase); - return Addr2Line(dli.dli_fname, rva); - } -#endif /* HAVE_DLADDR */ - -#ifdef _WIN32 - char buffer[sizeof(SYMBOL_INFO)+MAX_SYM_NAME * sizeof(TCHAR)]; - PSYMBOL_INFO pSymbol = (PSYMBOL_INFO)buffer; - pSymbol->SizeOfStruct = sizeof(SYMBOL_INFO); - pSymbol->MaxNameLen = MAX_SYM_NAME; - - DWORD64 dwAddress = (DWORD64)addr; - DWORD dwDisplacement; - - IMAGEHLP_LINE64 line; - line.SizeOfStruct = sizeof(IMAGEHLP_LINE64); - - if (SymGetLineFromAddr64(GetCurrentProcess(), dwAddress, &dwDisplacement, &line)) - return String(line.FileName) + ":" + Convert::ToString(line.LineNumber); -#endif /* _WIN32 */ - - return "(unknown file/line)"; -} - /** * Performs wildcard pattern matching. * diff --git a/lib/base/utility.hpp b/lib/base/utility.hpp index f3e931850..c49beeb54 100644 --- a/lib/base/utility.hpp +++ b/lib/base/utility.hpp @@ -60,9 +60,7 @@ class I2_BASE_API Utility public: static String DemangleSymbolName(const String& sym); static String GetTypeName(const std::type_info& ti); - static String Addr2Line(const String& exe, uintptr_t rva); static String GetSymbolName(const void *addr); - static String GetSymbolSource(const void *addr); static bool Match(const String& pattern, const String& text);