Crashlog: Adjust Linux stacktrace format when using BFD
This commit is contained in:
@@ -590,18 +590,19 @@ class CrashLogUnix : public CrashLog {
|
||||
demangled = abi::__cxa_demangle(func_name, nullptr, 0, &status);
|
||||
#endif /* WITH_DEMANGLE */
|
||||
const char *name = (demangled != nullptr && status == 0) ? demangled : func_name;
|
||||
buffer += seprintf(buffer, last, " [%02i] %*p %-40s %s + 0x%zx\n", i, ptr_str_size,
|
||||
buffer += seprintf(buffer, last, " [%02i] %*p %-40s %s + 0x%zx", i, ptr_str_size,
|
||||
trace[i], info.dli_fname, name, (char *)trace[i] - (char *)func_addr);
|
||||
free(demangled);
|
||||
} else if (dladdr_result && info.dli_fname) {
|
||||
buffer += seprintf(buffer, last, " [%02i] %*p %-40s + 0x%zx\n", i, ptr_str_size,
|
||||
buffer += seprintf(buffer, last, " [%02i] %*p %-40s + 0x%zx", i, ptr_str_size,
|
||||
trace[i], info.dli_fname, (char *)trace[i] - (char *)info.dli_fbase);
|
||||
} else {
|
||||
ok = false;
|
||||
}
|
||||
if (file_name != nullptr) {
|
||||
buffer += seprintf(buffer, last, "%*s%s:%u\n", 7 + ptr_str_size, "", file_name, line_num);
|
||||
if (ok && file_name != nullptr) {
|
||||
buffer += seprintf(buffer, last, " at %s:%u", file_name, line_num);
|
||||
}
|
||||
if (ok) buffer += seprintf(buffer, last, "\n");
|
||||
#if defined(WITH_BFD)
|
||||
if (ok && bfd_info.found && bfd_info.abfd) {
|
||||
uint iteration_limit = 32;
|
||||
@@ -613,15 +614,16 @@ class CrashLogUnix : public CrashLog {
|
||||
demangled = abi::__cxa_demangle(func_name, nullptr, 0, &status);
|
||||
#endif /* WITH_DEMANGLE */
|
||||
const char *name = (demangled != nullptr && status == 0) ? demangled : func_name;
|
||||
buffer += seprintf(buffer, last, " [inlined] %*s %s\n", ptr_str_size + 36, "",
|
||||
buffer += seprintf(buffer, last, " [inlined] %*s %s", ptr_str_size + 36, "",
|
||||
name);
|
||||
free(demangled);
|
||||
} else if (file_name) {
|
||||
buffer += seprintf(buffer, last, " [inlined]\n");
|
||||
buffer += seprintf(buffer, last, " [inlined]");
|
||||
}
|
||||
if (file_name != nullptr) {
|
||||
buffer += seprintf(buffer, last, "%*s%s:%u\n", 7 + ptr_str_size, "", file_name, line_num);
|
||||
buffer += seprintf(buffer, last, " at %s:%u", file_name, line_num);
|
||||
}
|
||||
buffer += seprintf(buffer, last, "\n");
|
||||
}
|
||||
}
|
||||
#endif /* WITH_BFD */
|
||||
|
Reference in New Issue
Block a user