From patchwork Mon Aug 24 21:09:49 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Pedro Alves X-Patchwork-Id: 8414 Received: (qmail 54704 invoked by alias); 24 Aug 2015 21:09:58 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 54622 invoked by uid 89); 24 Aug 2015 21:09:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL, BAYES_05, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 24 Aug 2015 21:09:55 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (Postfix) with ESMTPS id A32FAA2C36 for ; Mon, 24 Aug 2015 21:09:54 +0000 (UTC) Received: from brno.lan (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t7OL9pmT024559 for ; Mon, 24 Aug 2015 17:09:54 -0400 From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH 2/3] gdb: Use sighandler_t everywhere Date: Mon, 24 Aug 2015 22:09:49 +0100 Message-Id: <1440450590-27215-3-git-send-email-palves@redhat.com> In-Reply-To: <1440450590-27215-1-git-send-email-palves@redhat.com> References: <1440450590-27215-1-git-send-email-palves@redhat.com> MIME-Version: 1.0 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 * cp-support.c (gdb_demangle): Use sighandler_t. Remove cast. * extension-priv.h: Include signal.h. (struct signal_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 /* 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);