1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /* Copyright (C) 2021-2022 Free Software Foundation, Inc.
- This file is part of GDB.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
- /* 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"
- # if BACKTRACE_SUPPORTED && (! BACKTRACE_USES_MALLOC)
- # define GDB_PRINT_INTERNAL_BACKTRACE
- # define GDB_PRINT_INTERNAL_BACKTRACE_USING_LIBBACKTRACE
- # endif
- #endif
- #if defined HAVE_EXECINFO_H \
- && defined HAVE_EXECINFO_BACKTRACE \
- && !defined PRINT_BACKTRACE_ON_FATAL_SIGNAL
- # include <execinfo.h>
- # define GDB_PRINT_INTERNAL_BACKTRACE
- # define GDB_PRINT_INTERNAL_BACKTRACE_USING_EXECINFO
- #endif
- /* Define GDB_PRINT_INTERNAL_BACKTRACE_INIT_ON. This is a boolean value
- that can be used as an initial value for a set/show user setting, where
- the setting controls printing a GDB internal backtrace.
- If backtrace printing is supported then this will have the value true,
- but if backtrace printing is not supported then this has the value
- false. */
- #ifdef GDB_PRINT_INTERNAL_BACKTRACE
- # define GDB_PRINT_INTERNAL_BACKTRACE_INIT_ON true
- #else
- # define GDB_PRINT_INTERNAL_BACKTRACE_INIT_ON false
- #endif
- /* Print a backtrace of the current GDB process to the current
- gdb_stderr. The output is done in a signal async manner, so it is safe
- to call from signal handlers. */
- extern void gdb_internal_backtrace ();
- /* A generic function that can be used as the set function for any set
- command that enables printing of an internal backtrace. Command C must
- be a boolean set command.
- If GDB doesn't support printing a backtrace, and the user has tried to
- set the variable associated with command C to true, then the associated
- variable will be set back to false, and an error thrown.
- If GDB does support printing a backtrace then this function does
- nothing. */
- extern void gdb_internal_backtrace_set_cmd (const char *args, int from_tty,
- cmd_list_element *c);
- #endif /* BT_UTILS_H */
|