History log of /seL4-test-master/projects/musllibc/include/signal.h
Revision Date Author Comments
# 9680e1d0 20-Aug-2016 Szabolcs Nagy <nsz@port70.net>

add SS_AUTODISARM sigaltstack ss_flags from linux v4.7 to signal.h

only matters if swapcontext is used in a signal handler running on an
altstack, new in linux commit 2a74213838104a41588d86fd5e8d344972891ace


# 19f87240 26-May-2016 Szabolcs Nagy <nsz@port70.net>

update siginfo struct for linux v4.6

x86 protection key faults are reported in the si_pkey field,
added in linux commit cd0ea35ff5511cde299a61c21a95889b4a71464e


# 9a3b8f97 26-Jan-2016 Szabolcs Nagy <nsz@port70.net>

fix siginfo_t for mips

si_errno and si_code are swapped in mips siginfo_t compared to other
archs and some si_code values are different. This fix is required
for POSIX timers to work.

based on patch by Dmitry Ivanov.


# 22f84829 26-Jan-2016 Szabolcs Nagy <nsz@port70.net>

move bits/signal.h include close to the top of signal.h

only have code above the bits/signal.h include that is necessary.
(some types are used for the ucontext struct and mips has to
override a few macro definitions)

this way mips bits/signal.h will be able to affect siginfo_t.


# d5a50453 17-Mar-2015 Rich Felker <dalias@aerifal.cx>

fix MINSIGSTKSZ values for archs with large signal contexts

the previous values (2k min and 8k default) were too small for some
archs. aarch64 reserves 4k in the signal context for future extensions
and requires about 4.5k total, and powerpc reportedly uses over 2k.
the new minimums are chosen to fit the saved context and also allow a
minimal signal handler to run.

since the default (SIGSTKSZ) has always been 6k larger than the
minimum, it is also increased to maintain the 6k usable by the signal
handler. this happens to be able to store one pathname buffer and
should be sufficient for calling any function in libc that doesn't
involve conversion between floating point and decimal representations.

x86 (both 32-bit and 64-bit variants) may also need a larger minimum
(around 2.5k) in the future to support avx-512, but the values on
these archs are left alone for now pending further analysis.

the value for PTHREAD_STACK_MIN is not increased to match MINSIGSTKSZ
at this time. this is so as not to preclude applications from using
extremely small thread stacks when they know they will not be handling
signals. unfortunately cancellation and multi-threaded set*id() use
signals as an implementation detail and therefore require a stack
large enough for a signal context, so applications which use extremely
small thread stacks may still need to avoid using these features.


# ad85fcb5 04-Mar-2015 Szabolcs Nagy <nsz@port70.net>

add new si_lower and si_upper siginfo_t members

new in linux v3.19 commit ee1b58d36aa1b5a79eaba11f5c3633c88231da83
used to report intel mpx bound violation information.


# ab8f6a6e 09-Sep-2014 Rich Felker <dalias@aerifal.cx>

fix places where _BSD_SOURCE failed to yield a superset of _XOPEN_SOURCE

the vast majority of these failures seem to have been oversights at
the time _BSD_SOURCE was added, or perhaps shortly afterward. the one
which may have had some reason behind it is omission of setpgrp from
the _BSD_SOURCE feature profile, since the standard setpgrp interface
conflicts with a legacy (pre-POSIX) BSD interface by the same name.
however, such omission is not aligned with our general policy in this
area (for example, handling of similar _GNU_SOURCE cases) and should
not be preserved.


# 44d28e55 24-May-2014 Rich Felker <dalias@aerifal.cx>

overhaul siginfo_t definition in signal.h

the main motivation for this change is that, with the previous
definition, it was arguably illegal, in standard C, to initialize both
si_value and si_pid/si_uid with designated initializers, due to the
rule that only one member of a union can have an initializer. whether
or not this affected real-world application code, it affected some
internal code, and clang was producing warnings (and possibly
generating incorrect code).

the new definition uses a more complex hierarchy of structs and unions
to avoid the need to initialize more than one member of a single union
in usage cases that make sense. further work would be needed to
eliminate even the ones with no practical applications.

at the same time, some fixes are made to the exposed names for
nonstandard fields, to match what software using them expects.


# 9505bfbc 18-Mar-2014 Rich Felker <dalias@aerifal.cx>

fix signal.h breakage from moving stack_t to arch-specific bits

in the previous changes, I missed the fact that both the prototype of
the sigaltstack function and the definition of ucontext_t depend on
stack_t.


# bd5f221e 18-Mar-2014 Rich Felker <dalias@aerifal.cx>

move signal.h definition of stack_t to arch-specific bits

it's different at least on mips. mips version will be fixed in a
separate commit to show the change.


# 3500555d 07-Jan-2014 Rich Felker <dalias@aerifal.cx>

fix const-correctness in sigandset/sigorset arguments

this change is consistent with the corresponding glibc functions and
is semantically const-correct. the incorrect argument types without
const seem to have been taken from erroneous man pages.


# 8f035960 20-Oct-2013 Rich Felker <dalias@aerifal.cx>

fix multiple minor namespace issues in headers

fcntl.h: AT_* is not a reserved namespace so extensions cannot be
exposed by default.

langinfo.h: YESSTR and NOSTR were removed from the standard.

limits.h: NL_NMAX was removed from the standard.

signal.h: the conditional for NSIG was wrongly checking _XOPEN_SOURCE
rather than _BSD_SOURCE. this was purely a mistake; it doesn't even
match the commit message from the commit that added it.


# a926fe26 24-Jul-2013 Rich Felker <dalias@aerifal.cx>

fix incorrect type for new si_call_addr in siginfo_t

apparently the original kernel commit's i386 version of siginfo.h
defined this field as unsigned int, but the asm-generic file always
had void *. unsigned int is obviously not a suitable type for an
address, in a non-arch-specific file, and glibc also has void * here,
so I think void * is the right type for it.

also fix redundant type specifiers.


# b54f169b 24-Jul-2013 Szabolcs Nagy <nsz@port70.net>

update siginfo according to linux headers

linux commit a0727e8ce513fe6890416da960181ceb10fbfae6 (2012-04-12)
added siginfo fields for SIGSYS (seccomp uses it)

linux commit ad5fa913991e9e0f122b021e882b0d50051fbdbc (2009-09-16)
added siginfo field and si_code values for SIGBUS (hwpoison signal)


# 9448b051 22-Jul-2013 Rich Felker <dalias@aerifal.cx>

refactor headers, especially alltypes.h, and improve C++ ABI compat

the arch-specific bits/alltypes.h.sh has been replaced with a generic
alltypes.h.in and minimal arch-specific bits/alltypes.h.in.

this commit is intended to have no functional changes except:
- exposing additional symbols that POSIX allows but does not require
- changing the C++ name mangling for some types
- fixing the signedness of blksize_t on powerpc (POSIX requires signed)
- fixing the limit macros for sig_atomic_t on x86_64
- making dev_t an unsigned type (ABI matching goal, and more logical)

in addition, some types that were wrongly defined with long on 32-bit
archs were changed to int, and vice versa; this change is
non-functional except for the possibility of making pointer types
mismatch, and only affects programs that were using them incorrectly,
and only at build-time, not runtime.

the following changes were made in the interest of moving
non-arch-specific types out of the alltypes system and into the
headers they're associated with, and also will tend to improve
application compatibility:
- netdb.h now includes netinet/in.h (for socklen_t and uint32_t)
- netinet/in.h now includes sys/socket.h and inttypes.h
- sys/resource.h now includes sys/time.h (for struct timeval)
- sys/wait.h now includes signal.h (for siginfo_t)
- langinfo.h now includes nl_types.h (for nl_item)

for the types in stdint.h:
- types which are of no interest to other headers were moved out of
the alltypes system.
- fast types for 8- and 64-bit are hard-coded (at least for now); only
the 16- and 32-bit ones have reason to vary by arch.

and the following types have been changed for C++ ABI purposes;
- mbstate_t now has a struct tag, __mbstate_t
- FILE's struct tag has been changed to _IO_FILE
- DIR's struct tag has been changed to __dirstream
- locale_t's struct tag has been changed to __locale_struct
- pthread_t is defined as unsigned long in C++ mode only
- fpos_t now has a struct tag, _G_fpos64_t
- fsid_t's struct tag has been changed to __fsid_t
- idtype_t has been made an enum type (also required by POSIX)
- nl_catd has been changed from long to void *
- siginfo_t's struct tag has been removed
- sigset_t's has been given a struct tag, __sigset_t
- stack_t has been given a struct tag, sigaltstack
- suseconds_t has been changed to long on 32-bit archs
- [u]intptr_t have been changed from long to int rank on 32-bit archs
- dev_t has been made unsigned

summary of tests that have been performed against these changes:
- nsz's libc-test (diff -u before and after)
- C++ ABI check symbol dump (diff -u before, after, glibc)
- grepped for __NEED, made sure types needed are still in alltypes
- built gcc 3.4.6


# 8c741783 04-Mar-2013 Rich Felker <dalias@aerifal.cx>

fix some obscure header type size/alignment issues


# a1990e1e 06-Dec-2012 rofl0r <retnyg@gmx.net>

add sigandset and sigorset (needed for qemu)


# 769fd4ce 03-Dec-2012 Rich Felker <dalias@aerifal.cx>

feature test macros: make _GNU_SOURCE enable everything

previously, a few BSD features were enabled only by _BSD_SOURCE, not
by _GNU_SOURCE. since _BSD_SOURCE is default in the absence of other
feature test macros, this made adding _GNU_SOURCE to a project not a
purely additive feature test macro; it actually caused some features
to be suppressed.

most of the changes made by this patch actually bring musl in closer
alignment with the glibc behavior for _GNU_SOURCE. the only exceptions
are the added visibility of functions like strlcpy which were BSD-only
due to being disliked/rejected by glibc maintainers. here, I feel the
consistency of having _GNU_SOURCE mean "everything", and especially
the property of it being purely additive, are more valuable than
hiding functions which glibc does not have.


# 7dcb640d 30-Nov-2012 Rich Felker <dalias@aerifal.cx>

provide NSIG under _BSD_SOURCE (default) as well as _GNU_SOURCE

this fixes a regression related to the changes made to bits/signal.h
between 0.9.7 and 0.9.8 that broke some (non-portable) software.


# a8da6c2f 25-Nov-2012 Rich Felker <dalias@aerifal.cx>

fixup mcontext stuff to expost gregset_t/fpregset_t as appropriate


# 65b98213 21-Nov-2012 Rich Felker <dalias@aerifal.cx>

add back NSIG, removed from powerpc in last commit, but for all archs

unlike the previous definition, NSIG/_NSIG is supposed to be one more
than the highest signal number. adding this will allow simplifying
libc-internal code that makes signal-related syscalls, which can be
done as a later step. some apps might use it too; while this usage is
questionable, it's at least not insane.


# c1a9658b 07-Sep-2012 Rich Felker <dalias@aerifal.cx>

default features: make musl usable without feature test macros

the old behavior of exposing nothing except plain ISO C can be
obtained by defining __STRICT_ANSI__ or using a compiler option (such
as -std=c99) that predefines it. the new default featureset is POSIX
with XSI plus _BSD_SOURCE. any explicit feature test macros will
inhibit the default.

installation docs have also been updated to reflect this change.


# 400c5e5c 06-Sep-2012 Rich Felker <dalias@aerifal.cx>

use restrict everywhere it's required by c99 and/or posix 2008

to deal with the fact that the public headers may be used with pre-c99
compilers, __restrict is used in place of restrict, and defined
appropriately for any supported compiler. we also avoid the form
[restrict] since older versions of gcc rejected it due to a bug in the
original c99 standard, and instead use the form *restrict.


# 90e123f4 12-Jul-2012 Rich Felker <dalias@aerifal.cx>

fix redef of sigprocmask constants on mips

this fix is easier than trying to reorder the header stuff


# ba8a96b0 12-Jul-2012 Rich Felker <dalias@aerifal.cx>

more mips bits-header fixes

signal handling was very broken because of this


# 9f370fa9 22-May-2012 Rich Felker <dalias@aerifal.cx>

bsd_signal is a legacy (removed) XSI function, not needed in _BSD_SOURCE

its only purpose was for use on non-BSD systems that implement sysv
semantics for signal() by default.


# 419ae6d5 22-May-2012 Rich Felker <dalias@aerifal.cx>

support _BSD_SOURCE feature test macro

patch by Isaac Dunham. matched closely (maybe not exact) to glibc's
idea of what _BSD_SOURCE should make visible.


# 0115a6ed 13-Apr-2012 Rich Felker <dalias@aerifal.cx>

rename __sa_restorer to sa_restorer in struct sigaction

this is legal since sa_* is in the reserved namespace for signal.h,
per posix. note that the sa_restorer field is not used anywhere, so
programs that are trying to use it may still break, but at least
they'll compile. if it turns out such programs actually need to be
able to set their own sa_restorer to function properly, i'll add the
necessary code to sigaction.c later.


# 8eb9a3af 25-Jan-2012 Rich Felker <dalias@aerifal.cx>

fix typo in FPE_FLTUND definition, signal.h


# 81a5577a 21-Sep-2011 Rich Felker <dalias@aerifal.cx>

fix missing SIG_DFL, SIG_IGN, SIG_ERR without posix in signal.h


# 03a83629 20-Sep-2011 Rich Felker <dalias@aerifal.cx>

fix broken siginfo_t with _GNU_SOURCE defined

this bug was introduced in a recent patch. the problem we're working
around is that broken GNU software wants to use "struct siginfo"
rather than "siginfo_t", but "siginfo" is not in the reserved
namespace and thus not legal for the standard header to use.


# 8c07f6ea 19-Sep-2011 Rich Felker <dalias@aerifal.cx>

add some more siginfo aliases broken software expects...


# f780ac5b 19-Sep-2011 Rich Felker <dalias@aerifal.cx>

cleanup redundancy in bits/signal.h versions


# fb80e047 11-Sep-2011 Rich Felker <dalias@aerifal.cx>

implement gnu sigisemptyset


# adb7093c 02-Sep-2011 Rich Felker <dalias@aerifal.cx>

fix missing prototypes/wrong signature for psiginfo, psignal


# 7f547152 16-Jun-2011 Rich Felker <dalias@aerifal.cx>

fix some struct padding to match LSB/glibc ABI where it may be helpful


# 20291143 05-May-2011 Rich Felker <dalias@aerifal.cx>

add SA_NOMASK alias for SA_NODEFER with _GNU_SOURCE


# 0f5b4355 13-Apr-2011 Rich Felker <dalias@aerifal.cx>

fix incorrect GNU sighandler_t typedef


# 80c4dcd2 29-Mar-2011 Rich Felker <dalias@aerifal.cx>

implement POSIX timers

this implementation is superior to the glibc/nptl implementation, in
that it gives true realtime behavior. there is no risk of timer
expiration events being lost due to failed thread creation or failed
malloc, because the thread is created as time creation time, and
reused until the timer is deleted.


# 855df698 19-Feb-2011 Rich Felker <dalias@aerifal.cx>

move the GNU siginfo renaming so it doesn't lead to mismatching names


# 417dbe92 16-Feb-2011 Rich Felker <dalias@aerifal.cx>

some gnu software wrongly uses "struct siginfo" instead of siginfo_t...


# 3eb9feaa 15-Feb-2011 Rich Felker <dalias@aerifal.cx>

fix broken signal.h from header cleanup


# 44460c6d 15-Feb-2011 Rich Felker <dalias@aerifal.cx>

fix some type leakage (timer_t) from x86_64 commit


# 1e126325 15-Feb-2011 Nicholas J. Kain <njkain@gmail.com>

Port musl to x86-64. One giant commit!


# 1322cb82 14-Feb-2011 Rich Felker <dalias@aerifal.cx>

header cleanup, conformance fixes - signals


# 0b44a031 11-Feb-2011 Rich Felker <dalias@aerifal.cx>

initial check-in, version 0.5.0