summaryrefslogtreecommitdiff
path: root/include/setjmp.h
AgeCommit message (Collapse)AuthorLines
2013-07-24change jmp_buf to share an underlying type and struct tag with sigjmp_bufRich Felker-7/+6
this is necessary to meet the C++ ABI target. alternatives were considered to avoid the size increase for non-sig jmp_buf objects, but they seemed to have worse properties. moreover, the relative size increase is only extreme on x86[_64]; one way of interpreting this is that, if the size increase from this patch makes jmp_buf use too much memory, then the program was already using too much memory when built for non-x86 archs.
2013-01-04setjmp.h: add struct tag for sigjmp_buf (GCC C++ compatibility)rofl0r-1/+1
the anonymous struct typedef with array notation breaks with GCC in C++ mode: error: non-local function 'static<anonymous struct> (& boost::signal_handler::jump_buffer())[1]' uses anonymous type this is a known GCC issue, as search results for that error msg suggest. since this is hard to work around in the calling C++ code, a fix in musl is preferable.
2012-09-07default features: make musl usable without feature test macrosRich Felker-6/+1
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.
2012-09-06further use of _Noreturn, for non-plain-C functionsRich Felker-2/+2
note that POSIX does not specify these functions as _Noreturn, because POSIX is aligned with C99, not the new C11 standard. when POSIX is eventually updated to C11, it will almost surely give these functions the _Noreturn attribute. for now, the actual _Noreturn keyword is not used anyway when compiling with a c99 compiler, which is what POSIX requires; the GCC __attribute__ is used instead if it's available, however. in a few places, I've added infinite for loops at the end of _Noreturn functions to silence compiler warnings. presumably __buildin_unreachable could achieve the same thing, but it would only work on newer GCCs and would not be portable. the loops should have near-zero code size cost anyway. like the previous _Noreturn commit, this one is based on patches contributed by philomath.
2012-09-06add _Noreturn function attribute, with fallback for pre-C11 GNUCRich Felker-1/+8
2012-07-22fix wrong size for sigjmp_buf signal set arrayRich Felker-1/+1
128 is the size in bytes, not longs.
2012-07-03jmp_buf overhaul fixing several issuesRich Felker-1/+5
on arm, the location of the saved-signal-mask flag and mask were off by one between sigsetjmp and siglongjmp, causing incorrect behavior restoring the signal mask. this is because the siglongjmp code assumed an extra slot was in the non-sig jmp_buf for the flag, but arm did not have this. now, the extra slot is removed for all archs since it was useless. also, arm eabi requires jmp_buf to have 8-byte alignment. we achieve that using long long as the type rather than with non-portable gcc attribute tags.
2012-05-23debloat jmp_buf in _GNU_SOURCE modeRich Felker-3/+0
i originally made it the same size as the bloated GNU version, which contains space for saved signal mask, but this makes some structures containing jmp_buf become much larger for no benefit. we will never use the signal mask field with plain setjmp; sigsetjmp serves that purpose.
2012-05-22support _BSD_SOURCE feature test macroRich Felker-2/+4
patch by Isaac Dunham. matched closely (maybe not exact) to glibc's idea of what _BSD_SOURCE should make visible.
2011-02-14major bugfix for sigset_t (it was mistakenly 1024 bytes instead of bits)Rich Felker-1/+1
note that object files using sigset_t (or struct sigaction) need to be recompiled to work correctly after this fix.
2011-02-14extensive header cleanup for standards conformance & correctnessRich Felker-5/+13
thanks to Peter Mazinger (psm) for pointing many of these issues out and submitting a patch on which this commit is loosely based
2011-02-12initial check-in, version 0.5.0v0.5.0Rich Felker-0/+30