Demangler crash handler
authorGary Benson <gbenson@redhat.com>
Thu, 19 Jun 2014 08:13:57 +0000 (09:13 +0100)
committerGary Benson <gbenson@redhat.com>
Thu, 19 Jun 2014 08:13:57 +0000 (09:13 +0100)
commit992c7d700f99002ed455b0588488e0e42719ba81
treec24351fbcff74f41550b27263995ec03be1988ed
parenteae7090bea9d7f129be7dddf89f8e177cdb2003d
Demangler crash handler

This commit wraps calls to the demangler with a segmentation fault
handler.  The first time a segmentation fault is caught a core file
is generated and the user is prompted to file a bug and offered the
choice to exit or to continue their GDB session.  A maintainence
option is provided to allow the user to disable the crash handler
if required.

gdb/
2014-06-19  Gary Benson  <gbenson@redhat.com>

* configure.ac [AC_CHECK_FUNCS] <sigaltstack>: New check.
* configure: Regenerate.
* config.in: Likewise.
* main.c (signal.h): New include.
(setup_alternate_signal_stack): New function.
(captured_main): Call the above.
* cp-support.c (signal.h): New include.
(catch_demangler_crashes): New flag.
(SIGJMP_BUF): New define.
(SIGSETJMP): Likewise.
(SIGLONGJMP): Likewise.
(gdb_demangle_jmp_buf): New static global.
(gdb_demangle_attempt_core_dump): Likewise.
(gdb_demangle_signal_handler): New function.
(gdb_demangle): If catch_demangler_crashes is set, install the
above signal handler before calling bfd_demangle, and restore
the original signal handler afterwards.  Display the offending
symbol and call demangler_warning the first time a segmentation
fault is caught.
(_initialize_cp_support): New maint set/show command.

gdb/doc/
2014-06-19  Gary Benson  <gbenson@redhat.com>

* gdb.texinfo (Maintenance Commands): Document new
"maint set/show catch-demangler-crashes" option.
gdb/ChangeLog
gdb/config.in
gdb/configure
gdb/configure.ac
gdb/cp-support.c
gdb/doc/ChangeLog
gdb/doc/gdb.texinfo
gdb/main.c