gdb: don't print backtrace when dumping core after an internal error
authorAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 21 Jul 2021 17:23:19 +0000 (18:23 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 11 Aug 2021 11:35:15 +0000 (12:35 +0100)
commit0e6e4b599a1572823c71e2e95a24cf17d048f42b
tree4440aa092ad2b38dbf70c818814bb8fcda47a302
parentd03277b79793adec2508d51f8d789cd3761d9b9d
gdb: don't print backtrace when dumping core after an internal error

Currently, when GDB hits an internal error, and the user selects to
dump core, the recently added feature to write a backtrace to the
console will kick in, and print a backtrace as well as dumping the
core.

This was certainly not my intention when adding the backtrace on fatal
signal functionality, this feature was intended to produce a backtrace
when GDB crashes due to some fatal signal, internal errors should have
continued to behave as they did before, unchanged.

In this commit I set the signal disposition of SIGABRT back to SIG_DFL
just prior to the call to abort() that GDB uses to trigger the core
dump, this prevents GDB reaching the code that writes the backtrace to
the console.

I've also added a test that checks we don't see a backtrace on the
console after an internal error.
gdb/testsuite/gdb.base/bt-on-fatal-signal.exp
gdb/utils.c