musl/include/assert.h, branch master musl - an implementation of the standard library for Linux-based systems restore _Noreturn to __assert_fail 2016年08月30日T20:39:54+00:00 Rich Felker dalias@aerifal.cx 2016年08月30日T20:39:54+00:00 e738b8cbe64b6dd3ed9f47b6d4cd7eb2c422b38d this reverts commit 2c1f8fd5da3306fd7c8a2267467e44eb61f12dd4. without the _Noreturn attribute, the compiler cannot use asserts to perform reachability/range analysis. this leads to missed optimizations and spurious warnings. the original backtrace problem that prompted the removal of _Noreturn was not clearly documented at the time, but it seems to happen only when libc was built without -g, which also breaks many other backtracing cases.
this reverts commit 2c1f8fd5da3306fd7c8a2267467e44eb61f12dd4. without
the _Noreturn attribute, the compiler cannot use asserts to perform
reachability/range analysis. this leads to missed optimizations and
spurious warnings.
the original backtrace problem that prompted the removal of _Noreturn
was not clearly documented at the time, but it seems to happen only
when libc was built without -g, which also breaks many other
backtracing cases.
do not define static_assert macro for pre-C11 compilers 2016年02月12日T15:11:40+00:00 Rich Felker dalias@aerifal.cx 2016年02月12日T15:11:40+00:00 0ed932f34f11663e6b3ddfa866b1798a5938a3dc some software simply uses static_assert if the macro is defined, and this breaks if the compiler does not recognize the _Static_assert keyword used to define it.
some software simply uses static_assert if the macro is defined, and
this breaks if the compiler does not recognize the _Static_assert
keyword used to define it.
add static_assert and hide noreturn, alignas, alignof from C++ 2014年08月27日T06:55:54+00:00 Szabolcs Nagy nsz@port70.net 2014年08月26日T15:42:15+00:00 70729de075bfe3138b05af91ecefcd5786bed5ac add static_assert and protect the other new C11 keyword macros with #ifndef __cplusplus so they don't conflict with C++ keywords.
add static_assert and protect the other new C11 keyword macros
with #ifndef __cplusplus so they don't conflict with C++ keywords.
__assert_fail(): remove _Noreturn, to get proper stacktraces 2013年01月04日T19:36:34+00:00 rofl0r retnyg@gmx.net 2013年01月01日T06:59:11+00:00 2c1f8fd5da3306fd7c8a2267467e44eb61f12dd4 for _Noreturn functions, gcc generates code that trashes the stack frame, and so it makes it impossible to inspect the causes of an assert error in gdb. abort() is not affected (i have not yet investigated why).
for _Noreturn functions, gcc generates code that trashes the
stack frame, and so it makes it impossible to inspect the causes
of an assert error in gdb.
abort() is not affected (i have not yet investigated why).
assert() is supposed to have type void 2012年10月17日T06:47:11+00:00 Rich Felker dalias@aerifal.cx 2012年10月17日T06:47:11+00:00 858df113bfac4d2ebb60c3fac1538e07d56096b0
default features: make musl usable without feature test macros 2012年09月08日T03:13:55+00:00 Rich Felker dalias@aerifal.cx 2012年09月08日T03:13:55+00:00 c1a9658bd19245ff0fb52d3da567815d822fb622 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.
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.
further use of _Noreturn, for non-plain-C functions 2012年09月07日T03:34:10+00:00 Rich Felker dalias@aerifal.cx 2012年09月07日T03:34:10+00:00 0c05bd3a9c165cf2f0b9d6fa23a1f96532ddcdb3 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.
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.
initial check-in, version 0.5.0 2011年02月12日T05:22:29+00:00 Rich Felker dalias@aerifal.cx 2011年02月12日T05:22:29+00:00 0b44a0315b47dd8eced9f3b7f31580cf14bbfc01

AltStyle によって変換されたページ (->オリジナル) /