From: Denys Vlasenko Date: Sat, 8 Dec 2018 14:35:24 +0000 (+0100) Subject: inetd: suppress aliasing warning X-Git-Tag: 1_30_0~256 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b437df1157964ed012f1aeae25b68f6bbaae1787;p=oweals%2Fbusybox.git inetd: suppress aliasing warning function old new delta sigprocmask2 - 8 +8 wait_for_child_or_signal 213 218 +5 dowait 424 429 +5 block_CHLD_HUP_ALRM 62 59 -3 sigprocmask_SIG_SETMASK 16 - -16 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 2/1 up/down: 18/-19) Total: -1 bytes Signed-off-by: Denys Vlasenko --- diff --git a/include/libbb.h b/include/libbb.h index 638c58412..daa96728b 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -544,8 +544,8 @@ void sig_unblock(int sig) FAST_FUNC; int sigaction_set(int sig, const struct sigaction *act) FAST_FUNC; /* SIG_BLOCK/SIG_UNBLOCK all signals: */ int sigprocmask_allsigs(int how) FAST_FUNC; -/* SIG_SETMASK set, and return old set in the same set: */ -int sigprocmask_SIG_SETMASK(sigset_t *set) FAST_FUNC; +/* Return old set in the same set: */ +int sigprocmask2(int how, sigset_t *set) FAST_FUNC; /* Standard handler which just records signo */ extern smallint bb_got_signal; void record_signo(int signo); /* not FAST_FUNC! */ diff --git a/libbb/signals.c b/libbb/signals.c index 5a1544db7..d3d84ef6a 100644 --- a/libbb/signals.c +++ b/libbb/signals.c @@ -31,14 +31,14 @@ int FAST_FUNC sigprocmask_allsigs(int how) return sigprocmask(how, &set, NULL); } -int FAST_FUNC sigprocmask_SIG_SETMASK(sigset_t *set) +int FAST_FUNC sigprocmask2(int how, sigset_t *set) { // Grr... gcc 8.1.1: // "passing argument 3 to restrict-qualified parameter aliases with argument 2" // dance around that... sigset_t *oset FIX_ALIASING; oset = set; - return sigprocmask(SIG_SETMASK, set, oset); + return sigprocmask(how, set, oset); } void FAST_FUNC bb_signals(int sigs, void (*f)(int)) diff --git a/networking/inetd.c b/networking/inetd.c index ca1a97268..8f871ee12 100644 --- a/networking/inetd.c +++ b/networking/inetd.c @@ -488,7 +488,7 @@ static void block_CHLD_HUP_ALRM(sigset_t *m) sigaddset(m, SIGCHLD); sigaddset(m, SIGHUP); sigaddset(m, SIGALRM); - sigprocmask(SIG_BLOCK, m, m); /* old sigmask is stored in m */ + sigprocmask2(SIG_BLOCK, m); /* old sigmask is stored in m */ } static void restore_sigmask(sigset_t *m) diff --git a/shell/ash.c b/shell/ash.c index 456aca4f0..a01c8fa8b 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -4217,7 +4217,7 @@ wait_block_or_sig(int *status) /* Children exist, but none are ready. Sleep until interesting signal */ #if 1 sigfillset(&mask); - sigprocmask_SIG_SETMASK(&mask); /* mask is updated */ + sigprocmask2(SIG_SETMASK, &mask); /* mask is updated */ while (!got_sigchld && !pending_sig) sigsuspend(&mask); sigprocmask(SIG_SETMASK, &mask, NULL); diff --git a/shell/hush.c b/shell/hush.c index 5953ceb9f..2e4a4bcc6 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -11442,7 +11442,7 @@ static int wait_for_child_or_signal(struct pipe *waitfor_pipe, pid_t waitfor_pid * and get stuck in sigsuspend... */ sigfillset(&oldset); /* block all signals, remember old set */ - sigprocmask_SIG_SETMASK(&oldset); + sigprocmask2(SIG_SETMASK, &oldset); if (!sigisemptyset(&G.pending_set)) { /* Crap! we raced with some signal! */