fix PR gdb/17130
authorTom Tromey <tromey@redhat.com>
Fri, 11 Jul 2014 14:30:34 +0000 (08:30 -0600)
committerTom Tromey <tromey@redhat.com>
Fri, 18 Jul 2014 15:48:02 +0000 (09:48 -0600)
commitb0ed115fa5895ccb20d73e26d89a3b8430fe0f0a
tree2d2ef5e82595bbd4b7bbf890845a72ce97cd4950
parente75fdfcad1c868eae5396a95be9dd18010406306
fix PR gdb/17130

This fixes PR gdb/17130.

The bug is that some code in utils.c was not updated during the target
delegation change:

  if (job_control
      /* If there is no terminal switching for this target, then we can't
         possibly get screwed by the lack of job control.  */
      || current_target.to_terminal_ours == NULL)
    fatal ("Quit");
  else
    fatal ("Quit (expect signal SIGINT when the program is resumed)");

After the delegation change, to_terminal_ours will never be NULL.

I think this bug can be seen before the target delegation change by
enabling target debugging -- this would also cause to_terminal_ours to
be non-NULL.

The fix is to introduce a new target_supports_terminal_ours function,
that properly checks the target stack.  This is not perhaps ideal, but
I think is a reasonable-enough approach, and in keeping with some
other existing code of the same form.

This patch also fixes a similar bug in target_supports_delete_record.

2014-07-18  Tom Tromey  <tromey@redhat.com>

PR gdb/17130:
* utils.c (quit): Use target_supports_terminal_ours.
* target.h (target_supports_terminal_ours): Declare.
* target.c (target_supports_delete_record): Don't check
to_delete_record against NULL.
(target_supports_terminal_ours): New function.
gdb/ChangeLog
gdb/target.c
gdb/target.h
gdb/utils.c