forked from Imagelibrary/binutils-gdb
Do not print anything when self-backtrace unavailable
Right now, gdb's self-backtrace feature will still print something
when a backtrace is unavailable:
sig_write (_("----- Backtrace -----\n"));
[...]
sig_write (_("Backtrace unavailable\n"));
sig_write ("---------------------\n");
However, if GDB_PRINT_INTERNAL_BACKTRACE is undefined, it seems better
to me to print nothing at all.
This patch implements this change. It also makes a couple of other
small changes in this same module: it adds a header guard to
bt-utils.h, and it protects the definitions of
gdb_internal_backtrace_1 with a check of GDB_PRINT_INTERNAL_BACKTRACE.
This commit is contained in:
@@ -41,6 +41,7 @@ gdb_internal_backtrace_set_cmd (const char *args, int from_tty,
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef GDB_PRINT_INTERNAL_BACKTRACE
|
||||
#ifdef GDB_PRINT_INTERNAL_BACKTRACE_USING_LIBBACKTRACE
|
||||
|
||||
/* Callback used by libbacktrace if it encounters an error. */
|
||||
@@ -142,7 +143,10 @@ gdb_internal_backtrace_1 ()
|
||||
sig_write (_("Backtrace might be incomplete.\n"));
|
||||
}
|
||||
|
||||
#else
|
||||
#error "unexpected internal backtrace policy"
|
||||
#endif
|
||||
#endif /* GDB_PRINT_INTERNAL_BACKTRACE */
|
||||
|
||||
/* See bt-utils.h. */
|
||||
|
||||
@@ -152,6 +156,7 @@ gdb_internal_backtrace ()
|
||||
if (current_ui == nullptr)
|
||||
return;
|
||||
|
||||
#ifdef GDB_PRINT_INTERNAL_BACKTRACE
|
||||
const auto sig_write = [] (const char *msg) -> void
|
||||
{
|
||||
gdb_stderr->write_async_safe (msg, strlen (msg));
|
||||
@@ -159,12 +164,11 @@ gdb_internal_backtrace ()
|
||||
|
||||
sig_write (_("----- Backtrace -----\n"));
|
||||
|
||||
#ifdef GDB_PRINT_INTERNAL_BACKTRACE
|
||||
if (gdb_stderr->fd () > -1)
|
||||
gdb_internal_backtrace_1 ();
|
||||
else
|
||||
#endif
|
||||
sig_write (_("Backtrace unavailable\n"));
|
||||
|
||||
sig_write ("---------------------\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user