This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] gdb: Use sighandler_t everywhere


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a40805d4a73532dffc61e33f913e62b93214c998

commit a40805d4a73532dffc61e33f913e62b93214c998
Author: Pedro Alves <palves@redhat.com>
Date:   Thu Aug 27 13:26:23 2015 +0100

    gdb: Use sighandler_t everywhere
    
    This fixes 14 build errors like these in C++ mode:
    
     src/gdb/extension.c: In function â??void install_sigint_handler(const signal_handler*)â??:
     src/gdb/extension.c:698:41: error: invalid conversion from â??void (*)()â?? to â??__sighandler_t {aka void (*)(int)}â?? [-fpermissive]
        signal (SIGINT, handler_state->handler);
    					  ^
     In file included from build-gnulib/import/signal.h:52:0,
    		  from ../../src/gdb/extension.c:24:
     /usr/include/signal.h:102:23: error:   initializing argument 2 of â??void (* signal(int, __sighandler_t))(int)â?? [-fpermissive]
      extern __sighandler_t signal (int __sig, __sighandler_t __handler)
    			^
    
    Instead of this everywhere:
    
     -  RETSIGTYPE (*handle_sigint_for_compare) () = handle_sigint;
     +  RETSIGTYPE (*handle_sigint_for_compare) (int) = handle_sigint;
    
    Use sighandler_t (a GNU extension).  That's OK to use unconditionaly
    because gnulib's signal.h replacement makes sure that it is available.
    
    gdb/ChangeLog:
    2015-08-27  Pedro Alves  <palves@redhat.com>
    
    	* cp-support.c (gdb_demangle): Use sighandler_t.  Remove cast.
    	* extension-priv.h: Include signal.h.
    	(struct signal_handler) <handler>: Change type to sighandler_t.
    	* extension.c (install_gdb_sigint_handler): Use sighandler_t.
    	* inflow.c (sigint_ours, sigquit_ours): Change type to
    	sighandler_t.
    	(child_terminal_inferior): Remove casts.
    	(child_terminal_ours_1, new_tty): Use sighandler_t.  Remove casts.
    	(osig): Change type to sighandler_t.
    	* nto-procfs.c (ofunc): Change type to sighandler_t.
    	(procfs_wait): Remove casts.
    	* remote-m32r-sdi.c (m32r_wait, m32r_load): Use sighandler_t.
    	* remote-sim.c (gdbsim_wait): Use sighandler_t.
    	* utils.c (wait_to_die_with_timeout): Use sighandler_t.

Diff:
---
 gdb/ChangeLog         | 17 +++++++++++++++++
 gdb/cp-support.c      |  4 ++--
 gdb/extension-priv.h  |  3 ++-
 gdb/extension.c       |  2 +-
 gdb/inflow.c          | 20 ++++++++++----------
 gdb/nto-procfs.c      |  4 ++--
 gdb/remote-m32r-sdi.c |  4 ++--
 gdb/remote-sim.c      |  2 +-
 gdb/utils.c           |  4 ++--
 9 files changed, 39 insertions(+), 21 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index db3b1b9..8d40dee 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,22 @@
 2015-08-27  Pedro Alves  <palves@redhat.com>
 
+	* cp-support.c (gdb_demangle): Use sighandler_t.  Remove cast.
+	* extension-priv.h: Include signal.h.
+	(struct signal_handler) <handler>: Change type to sighandler_t.
+	* extension.c (install_gdb_sigint_handler): Use sighandler_t.
+	* inflow.c (sigint_ours, sigquit_ours): Change type to
+	sighandler_t.
+	(child_terminal_inferior): Remove casts.
+	(child_terminal_ours_1, new_tty): Use sighandler_t.  Remove casts.
+	(osig): Change type to sighandler_t.
+	* nto-procfs.c (ofunc): Change type to sighandler_t.
+	(procfs_wait): Remove casts.
+	* remote-m32r-sdi.c (m32r_wait, m32r_load): Use sighandler_t.
+	* remote-sim.c (gdbsim_wait): Use sighandler_t.
+	* utils.c (wait_to_die_with_timeout): Use sighandler_t.
+
+2015-08-27  Pedro Alves  <palves@redhat.com>
+
 	* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add signal-h.
 	* gnulib/aclocal.m4: Renegerate.
 	* gnulib/config.in: Renegerate.
diff --git a/gdb/cp-support.c b/gdb/cp-support.c
index 3995bcc..d3e26ad 100644
--- a/gdb/cp-support.c
+++ b/gdb/cp-support.c
@@ -1535,7 +1535,7 @@ gdb_demangle (const char *name, int options)
 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
   struct sigaction sa, old_sa;
 #else
-  void (*ofunc) ();
+  sighandler_t ofunc;
 #endif
   static int core_dump_allowed = -1;
 
@@ -1559,7 +1559,7 @@ gdb_demangle (const char *name, int options)
 #endif
       sigaction (SIGSEGV, &sa, &old_sa);
 #else
-      ofunc = (void (*)()) signal (SIGSEGV, gdb_demangle_signal_handler);
+      ofunc = signal (SIGSEGV, gdb_demangle_signal_handler);
 #endif
 
       crash_signal = SIGSETJMP (gdb_demangle_jmp_buf);
diff --git a/gdb/extension-priv.h b/gdb/extension-priv.h
index d0242e2..dd7326e 100644
--- a/gdb/extension-priv.h
+++ b/gdb/extension-priv.h
@@ -22,6 +22,7 @@
 #define EXTENSION_PRIV_H
 
 #include "extension.h"
+#include <signal.h>
 
 /* The return code for some API calls.  */
 
@@ -329,7 +330,7 @@ struct signal_handler
   int handler_saved;
 
   /* The signal handler.  */
-  RETSIGTYPE (*handler) ();
+  sighandler_t handler;
 };
 
 /* State necessary to restore the currently active extension language
diff --git a/gdb/extension.c b/gdb/extension.c
index dac203b..1b5365a 100644
--- a/gdb/extension.c
+++ b/gdb/extension.c
@@ -707,7 +707,7 @@ static void
 install_gdb_sigint_handler (struct signal_handler *previous)
 {
   /* Save here to simplify comparison.  */
-  RETSIGTYPE (*handle_sigint_for_compare) () = handle_sigint;
+  sighandler_t handle_sigint_for_compare = handle_sigint;
 
   previous->handler = signal (SIGINT, handle_sigint);
   if (previous->handler != handle_sigint_for_compare)
diff --git a/gdb/inflow.c b/gdb/inflow.c
index a9db650..cdc47a0 100644
--- a/gdb/inflow.c
+++ b/gdb/inflow.c
@@ -101,8 +101,8 @@ inferior_process_group (void)
    we save our handlers in these two variables and set SIGINT and SIGQUIT
    to SIG_IGN.  */
 
-static void (*sigint_ours) ();
-static void (*sigquit_ours) ();
+static sighandler_t sigint_ours;
+static sighandler_t sigquit_ours;
 
 /* The name of the tty (from the `tty' command) that we're giving to
    the inferior when starting it up.  This is only (and should only
@@ -319,9 +319,9 @@ child_terminal_inferior (struct target_ops *self)
 
       if (!job_control)
 	{
-	  sigint_ours = (void (*)()) signal (SIGINT, SIG_IGN);
+	  sigint_ours = signal (SIGINT, SIG_IGN);
 #ifdef SIGQUIT
-	  sigquit_ours = (void (*)()) signal (SIGQUIT, SIG_IGN);
+	  sigquit_ours = signal (SIGQUIT, SIG_IGN);
 #endif
 	}
 
@@ -417,13 +417,13 @@ child_terminal_ours_1 (int output_only)
 #ifdef SIGTTOU
       /* Ignore this signal since it will happen when we try to set the
          pgrp.  */
-      void (*osigttou) () = NULL;
+      sighandler_t osigttou = NULL;
 #endif
       int result;
 
 #ifdef SIGTTOU
       if (job_control)
-	osigttou = (void (*)()) signal (SIGTTOU, SIG_IGN);
+	osigttou = signal (SIGTTOU, SIG_IGN);
 #endif
 
       xfree (tinfo->ttystate);
@@ -711,9 +711,9 @@ new_tty (void)
   tty = open ("/dev/tty", O_RDWR);
   if (tty > 0)
     {
-      void (*osigttou) ();
+      sighandler_t osigttou;
 
-      osigttou = (void (*)()) signal (SIGTTOU, SIG_IGN);
+      osigttou = signal (SIGTTOU, SIG_IGN);
       ioctl (tty, TIOCNOTTY, 0);
       close (tty);
       signal (SIGTTOU, osigttou);
@@ -788,7 +788,7 @@ pass_signal (int signo)
 #endif
 }
 
-static void (*osig) ();
+static sighandler_t osig;
 static int osig_set;
 
 void
@@ -799,7 +799,7 @@ set_sigint_trap (void)
 
   if (inf->attach_flag || tinfo->run_terminal)
     {
-      osig = (void (*)()) signal (SIGINT, pass_signal);
+      osig = signal (SIGINT, pass_signal);
       osig_set = 1;
     }
   else
diff --git a/gdb/nto-procfs.c b/gdb/nto-procfs.c
index 2d1c49a..20b05be 100644
--- a/gdb/nto-procfs.c
+++ b/gdb/nto-procfs.c
@@ -47,7 +47,7 @@
 
 int ctl_fd;
 
-static void (*ofunc) ();
+static sighandler_t ofunc;
 
 static procfs_run run;
 
@@ -735,7 +735,7 @@ procfs_wait (struct target_ops *ops,
   devctl (ctl_fd, DCMD_PROC_STATUS, &status, sizeof (status), 0);
   while (!(status.flags & _DEBUG_FLAG_ISTOP))
     {
-      ofunc = (void (*)()) signal (SIGINT, nto_handle_sigint);
+      ofunc = signal (SIGINT, nto_handle_sigint);
       sigwaitinfo (&set, &info);
       signal (SIGINT, ofunc);
       devctl (ctl_fd, DCMD_PROC_STATUS, &status, sizeof (status), 0);
diff --git a/gdb/remote-m32r-sdi.c b/gdb/remote-m32r-sdi.c
index bb07e4e..e67f9d4 100644
--- a/gdb/remote-m32r-sdi.c
+++ b/gdb/remote-m32r-sdi.c
@@ -701,7 +701,7 @@ static ptid_t
 m32r_wait (struct target_ops *ops,
 	   ptid_t ptid, struct target_waitstatus *status, int options)
 {
-  static RETSIGTYPE (*prev_sigint) ();
+  static sighandler_t prev_sigint;
   unsigned long bp_addr, pc_addr;
   int ib_breakpoints;
   long i;
@@ -1249,7 +1249,7 @@ m32r_load (struct target_ops *self, const char *args, int from_tty)
   int nostart;
   struct timeval start_time, end_time;
   unsigned long data_count;	/* Number of bytes transferred to memory.  */
-  static RETSIGTYPE (*prev_sigint) ();
+  static sighandler_t prev_sigint;
 
   /* for direct tcp connections, we can do a fast binary download.  */
   quiet = 0;
diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c
index b228862..8bd1a65 100644
--- a/gdb/remote-sim.c
+++ b/gdb/remote-sim.c
@@ -976,7 +976,7 @@ gdbsim_wait (struct target_ops *ops,
 	     ptid_t ptid, struct target_waitstatus *status, int options)
 {
   struct sim_inferior_data *sim_data;
-  static RETSIGTYPE (*prev_sigint) ();
+  static sighandler_t prev_sigint;
   int sigrc = 0;
   enum sim_stop reason = sim_running;
 
diff --git a/gdb/utils.c b/gdb/utils.c
index fdc486d..3ce88b9 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -3302,9 +3302,9 @@ wait_to_die_with_timeout (pid_t pid, int *status, int timeout)
       sa.sa_flags = 0;
       sigaction (SIGALRM, &sa, &old_sa);
 #else
-      void (*ofunc) ();
+      sighandler_t ofunc;
 
-      ofunc = (void (*)()) signal (SIGALRM, sigalrm_handler);
+      ofunc = signal (SIGALRM, sigalrm_handler);
 #endif
 
       alarm (timeout);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]