Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-9]: src/external/gpl3/gdb/dist/gdb Pull up following revision(s) ...



details:   https://anonhg.NetBSD.org/src/rev/c01eaa3e9584
branches:  netbsd-9
changeset: 458328:c01eaa3e9584
user:      martin <martin%NetBSD.org@localhost>
date:      Fri Sep 06 19:57:32 2019 +0000

description:
Pull up following revision(s) (requested by kamil in ticket #188):

        external/gpl3/gdb/dist/gdb/ser-unix.c: revision 1.2
        external/gpl3/gdb/dist/gdb/inflow.c: revision 1.2
        external/gpl3/gdb/dist/gdb/ChangeLog: revision 1.2
        external/gpl3/gdb/dist/gdb/inflow.h: revision 1.2
        external/gpl3/gdb/dist/gdb/event-top.c: revision 1.2
        external/gpl3/gdb/dist/gdb/top.c: revision 1.2

Cherry-pick upstream GDB patch to fix SIGTTOU handling

Fixes toolchain/54508 by Tobias Ulmer
commit 766f883622ef008230250aa5aecef9fb9b29f233

Author: Alan Hayward <alan.hayward%arm.com@localhost>
Date:   Tue May 28 10:07:54 2019 +0100

    Suppress SIGTTOU when handling errors
    Calls to error () can cause SIGTTOU to send gdb to the background.

    For example, on an Arm build:
      (gdb) b main
      Breakpoint 1 at 0x10774: file /build/gdb/testsuite/../../../src/binutils-gdb/gdb/testsuite/gdb.base/watchpoint.c, line 174.
      (gdb) r
      Starting program: /build/gdb/testsuite/outputs/gdb.base/watchpoint/watchpoint
      [1]+  Stopped                 ../gdb ./outputs/gdb.base/watchpoint/watchpoint
      localhost$ fg
      ../gdb ./outputs/gdb.base/watchpoint/watchpoint
      Cannot parse expression `.L1199 4@r4'.
      warning: Probes-based dynamic linker interface failed.
      Reverting to original interface.

    The SIGTTOU is raised whilst inside a syscall during the call to tcdrain.

    Fix is to use scoped_ignore_sigttou to ensure SIGTTOU is blocked.

    In addition fix include comments - job_control is not included via terminal.h

    gdb/ChangeLog:
            * event-top.c: Remove include comment.
            * inflow.c (class scoped_ignore_sigttou): Move from here...
            * inflow.h (class scoped_ignore_sigttou): ...to here.
            * ser-unix.c (hardwire_drain_output): Block SIGTTOU during drain.
            * top.c:  Remove include comment.

diffstat:

 external/gpl3/gdb/dist/gdb/ChangeLog   |   9 ++++++++-
 external/gpl3/gdb/dist/gdb/event-top.c |   2 +-
 external/gpl3/gdb/dist/gdb/inflow.c    |  29 -----------------------------
 external/gpl3/gdb/dist/gdb/inflow.h    |  31 +++++++++++++++++++++++++++++++
 external/gpl3/gdb/dist/gdb/ser-unix.c  |   4 ++++
 external/gpl3/gdb/dist/gdb/top.c       |   2 +-
 6 files changed, 45 insertions(+), 32 deletions(-)

diffs (144 lines):

diff -r ee6e81be6b53 -r c01eaa3e9584 external/gpl3/gdb/dist/gdb/ChangeLog
--- a/external/gpl3/gdb/dist/gdb/ChangeLog      Fri Sep 06 19:54:23 2019 +0000
+++ b/external/gpl3/gdb/dist/gdb/ChangeLog      Fri Sep 06 19:57:32 2019 +0000
@@ -1,3 +1,11 @@
+2019-05-28  Alan Hayward  <alan.hayward%arm.com@localhost>
+
+       * event-top.c: Remove include comment.
+       * inflow.c (class scoped_ignore_sigttou): Move from here...
+       * inflow.h (class scoped_ignore_sigttou): ...to here.
+       * ser-unix.c (hardwire_drain_output): Block SIGTTOU during drain.
+       * top.c:  Remove include comment.
+
 2019-05-11  Joel Brobecker  <brobecker%adacore.com@localhost>
 
        * version.in: Set GDB version number to 8.3.
@@ -2691,4 +2699,3 @@
 version-control: never
 coding: utf-8
 End:
-
diff -r ee6e81be6b53 -r c01eaa3e9584 external/gpl3/gdb/dist/gdb/event-top.c
--- a/external/gpl3/gdb/dist/gdb/event-top.c    Fri Sep 06 19:54:23 2019 +0000
+++ b/external/gpl3/gdb/dist/gdb/event-top.c    Fri Sep 06 19:57:32 2019 +0000
@@ -24,7 +24,7 @@
 #include "inferior.h"
 #include "infrun.h"
 #include "target.h"
-#include "terminal.h"          /* for job_control */
+#include "terminal.h"
 #include "event-loop.h"
 #include "event-top.h"
 #include "interps.h"
diff -r ee6e81be6b53 -r c01eaa3e9584 external/gpl3/gdb/dist/gdb/inflow.c
--- a/external/gpl3/gdb/dist/gdb/inflow.c       Fri Sep 06 19:54:23 2019 +0000
+++ b/external/gpl3/gdb/dist/gdb/inflow.c       Fri Sep 06 19:57:32 2019 +0000
@@ -103,35 +103,6 @@
 
 static struct terminal_info *get_inflow_inferior_data (struct inferior *);
 
-/* RAII class used to ignore SIGTTOU in a scope.  */
-
-class scoped_ignore_sigttou
-{
-public:
-  scoped_ignore_sigttou ()
-  {
-#ifdef SIGTTOU
-    if (job_control)
-      m_osigttou = signal (SIGTTOU, SIG_IGN);
-#endif
-  }
-
-  ~scoped_ignore_sigttou ()
-  {
-#ifdef SIGTTOU
-    if (job_control)
-      signal (SIGTTOU, m_osigttou);
-#endif
-  }
-
-  DISABLE_COPY_AND_ASSIGN (scoped_ignore_sigttou);
-
-private:
-#ifdef SIGTTOU
-  sighandler_t m_osigttou = NULL;
-#endif
-};
-
 /* While the inferior is running, we want SIGINT and SIGQUIT to go to the
    inferior only.  If we have job control, that takes care of it.  If not,
    we save our handlers in these two variables and set SIGINT and SIGQUIT
diff -r ee6e81be6b53 -r c01eaa3e9584 external/gpl3/gdb/dist/gdb/inflow.h
--- a/external/gpl3/gdb/dist/gdb/inflow.h       Fri Sep 06 19:54:23 2019 +0000
+++ b/external/gpl3/gdb/dist/gdb/inflow.h       Fri Sep 06 19:57:32 2019 +0000
@@ -21,5 +21,36 @@
 #define INFLOW_H
 
 #include <unistd.h>
+#include <signal.h>
+#include "common/job-control.h"
+
+/* RAII class used to ignore SIGTTOU in a scope.  */
+
+class scoped_ignore_sigttou
+{
+public:
+  scoped_ignore_sigttou ()
+  {
+#ifdef SIGTTOU
+    if (job_control)
+      m_osigttou = signal (SIGTTOU, SIG_IGN);
+#endif
+  }
+
+  ~scoped_ignore_sigttou ()
+  {
+#ifdef SIGTTOU
+    if (job_control)
+      signal (SIGTTOU, m_osigttou);
+#endif
+  }
+
+  DISABLE_COPY_AND_ASSIGN (scoped_ignore_sigttou);
+
+private:
+#ifdef SIGTTOU
+  sighandler_t m_osigttou = NULL;
+#endif
+};
 
 #endif /* inflow.h */
diff -r ee6e81be6b53 -r c01eaa3e9584 external/gpl3/gdb/dist/gdb/ser-unix.c
--- a/external/gpl3/gdb/dist/gdb/ser-unix.c     Fri Sep 06 19:54:23 2019 +0000
+++ b/external/gpl3/gdb/dist/gdb/ser-unix.c     Fri Sep 06 19:57:32 2019 +0000
@@ -32,6 +32,7 @@
 #include "gdbcmd.h"
 #include "common/filestuff.h"
 #include <termios.h>
+#include "inflow.h"
 
 struct hardwire_ttystate
   {
@@ -164,6 +165,9 @@
 static int
 hardwire_drain_output (struct serial *scb)
 {
+  /* Ignore SIGTTOU which may occur during the drain.  */
+  scoped_ignore_sigttou ignore_sigttou;
+
   return tcdrain (scb->fd);
 }
 
diff -r ee6e81be6b53 -r c01eaa3e9584 external/gpl3/gdb/dist/gdb/top.c
--- a/external/gpl3/gdb/dist/gdb/top.c  Fri Sep 06 19:54:23 2019 +0000
+++ b/external/gpl3/gdb/dist/gdb/top.c  Fri Sep 06 19:57:32 2019 +0000
@@ -34,7 +34,7 @@
 #include "expression.h"
 #include "value.h"
 #include "language.h"
-#include "terminal.h"          /* For job_control.  */
+#include "terminal.h"
 #include "common/job-control.h"
 #include "annotate.h"
 #include "completer.h"



Home | Main Index | Thread Index | Old Index