From ffcc2b69d1a516f55ede0e12a8847913651ea588 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 5 Jan 2022 08:43:59 -0700 Subject: [PATCH] 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. --- gdb/bt-utils.c | 8 ++++++-- gdb/bt-utils.h | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gdb/bt-utils.c b/gdb/bt-utils.c index d45631551af..681f02c733b 100644 --- a/gdb/bt-utils.c +++ b/gdb/bt-utils.c @@ -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 } diff --git a/gdb/bt-utils.h b/gdb/bt-utils.h index 42edc94cef0..898af41044b 100644 --- a/gdb/bt-utils.h +++ b/gdb/bt-utils.h @@ -18,6 +18,9 @@ /* Support for printing a backtrace when GDB hits an error. This is not for printing backtraces of the inferior, but backtraces of GDB itself. */ +#ifndef BT_UTILS_H +#define BT_UTILS_H + #ifdef HAVE_LIBBACKTRACE # include "backtrace.h" # include "backtrace-supported.h" @@ -67,3 +70,5 @@ extern void gdb_internal_backtrace (); extern void gdb_internal_backtrace_set_cmd (const char *args, int from_tty, cmd_list_element *c); + +#endif /* BT_UTILS_H */ -- 2.30.2