reverse-finish: turn internal error into normal error
authorMarkus Metzger <markus.t.metzger@intel.com>
Mon, 30 Jun 2014 09:47:30 +0000 (11:47 +0200)
committerMarkus Metzger <markus.t.metzger@intel.com>
Tue, 8 Jul 2014 08:07:59 +0000 (10:07 +0200)
commit1f267ae3d18c165f8b4327aa423b909eae92f4d6
tree4eaef7f48e16ab997d1ca1acecc7e28277eacf92
parent37a6ac445daf5075d9058d7f01505f96a43f592a
reverse-finish: turn internal error into normal error

The reverse-finish command results in an internal error if it cannot determine
the current function.

  (gdb) c
  Continuing.

  Program received signal SIGSEGV, Segmentation fault.
  0x0000000000000000 in ?? ()
  (gdb) reverse-finish
  Run back to call of #0  0x0000000000000000 in ?? ()
  gdb/infcmd.c:1576: internal-error: Finish: couldn't find function.
  A problem internal to GDB has been detected,
  further debugging may prove unreliable.
  Quit this debugging session? (y or n) y

This is not an internal error case since the command may be used in scenarios
where there is no function at the current PC, e.g. after calling through a bad
function pointer.

Turn this into a normal error.

gdb/
* infcmd.c (finish_backward): Turn internal error into normal error.

testsuite/
* gdb.btrace/segv.c: New.
* gdb.btrace/segv.exp: New.
gdb/ChangeLog
gdb/infcmd.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.btrace/segv.c [new file with mode: 0644]
gdb/testsuite/gdb.btrace/segv.exp [new file with mode: 0644]