glibc/signal/Makefile
Adhemerval Zanella 566e10aa72 signal: Only handle on NSIG signals on signal functions (BZ #25657)
The upper bits of the sigset_t s not fully initialized in the signal
mask calls that return information from kernel (sigprocmask,
sigpending, and pthread_sigmask), since the exported sigset_t size
(1024 bits) is larger than Linux support one (64 or 128 bits).
It might make sigisemptyset/sigorset/sigandset fail if the mask
is filled prior the call.

This patch changes the internal signal function to handle up to
supported Linux signal number (_NSIG), the remaining bits are
untouched.

Checked on x86_64-linux-gnu and i686-linux-gnu.
2020-04-21 15:10:10 -03:00

72 lines
2.6 KiB
Makefile

# Copyright (C) 1991-2020 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, see
# <https://www.gnu.org/licenses/>.
#
# Makefile for signal routines.
#
subdir := signal
include ../Makeconfig
headers := signal.h sys/signal.h \
bits/signum.h bits/signum-generic.h \
bits/sigcontext.h bits/sigaction.h \
bits/sigevent-consts.h bits/siginfo-consts.h \
bits/sigstack.h bits/sigthread.h bits/ss_flags.h \
bits/types/__sigset_t.h bits/types/sig_atomic_t.h \
bits/types/sigevent_t.h bits/types/siginfo_t.h \
bits/types/sigset_t.h bits/types/sigval_t.h \
bits/types/stack_t.h bits/types/struct_sigstack.h \
bits/types/__sigval_t.h bits/signal_ext.h
routines := signal raise killpg \
sigaction sigprocmask kill \
sigpending sigsuspend sigwait \
sigblock sigsetmask sigpause sigvec \
sigstack sigaltstack sigintr \
sigsetops sigempty sigfillset sigaddset sigdelset sigismem \
sigreturn \
siggetmask sysv_signal \
sigisempty sigandset sigorset \
allocrtsig sigtimedwait sigwaitinfo sigqueue \
sighold sigrelse sigignore sigset
tests := tst-signal tst-sigset tst-sigsimple tst-raise tst-sigset2 \
tst-sigwait-eintr tst-sigaction \
tst-minsigstksz-1 tst-minsigstksz-2 tst-minsigstksz-3 \
tst-minsigstksz-3a tst-minsigstksz-4 \
tst-sigisemptyset
include ../Rules
CFLAGS-raise.c += -fasynchronous-unwind-tables
CFLAGS-sigpause.c += -fexceptions
CFLAGS-sigsuspend.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-sigtimedwait.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-sigwait.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-sigwaitinfo.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-sigreturn.c += $(no-stack-protector)
# We don't want to test the lazy resolution stack usage, just the
# execution of the handler and the functions.
LDFLAGS-tst-minsigstksz-1 = -Wl,-z,now
LDFLAGS-tst-minsigstksz-2 = -Wl,-z,now
LDFLAGS-tst-minsigstksz-3 = -Wl,-z,now
LDFLAGS-tst-minsigstksz-3a = -Wl,-z,now
LDFLAGS-tst-minsigstksz-4 = -Wl,-z,now