This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 2/3] gdb: Use sighandler_t everywhere
- From: Pedro Alves <palves at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Mon, 24 Aug 2015 22:09:49 +0100
- Subject: [PATCH 2/3] gdb: Use sighandler_t everywhere
- Authentication-results: sourceware.org; auth=none
- References: <1440450590-27215-1-git-send-email-palves at redhat dot com>
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-24 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.
---
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 ++--
8 files changed, 22 insertions(+), 21 deletions(-)
diff --git a/gdb/cp-support.c b/gdb/cp-support.c
index dc0a057..8f6ce07 100644
--- a/gdb/cp-support.c
+++ b/gdb/cp-support.c
@@ -1536,7 +1536,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;
@@ -1560,7 +1560,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 b772762..63783bc 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 a3c7076..e7b297e 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -3291,9 +3291,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);
--
1.9.3