- 24 1月, 2013 1 次提交
-
-
由 Rich Felker 提交于
-
- 19 1月, 2013 1 次提交
-
-
由 Rich Felker 提交于
the historical mess of having different definitions for C and C++ comes from the historical C definition as (void *)0 and the fact that (void *)0 can't be used in C++ because it does not convert to other pointer types implicitly. however, using plain 0 in C++ exposed bugs in C++ programs that call variadic functions with NULL as an argument and (wrongly; this is UB) expect it to arrive as a null pointer. on 64-bit machines, the high bits end up containing junk. glibc dodges the issue by using a GCC extension __null to define NULL; this is observably non-conforming because a conforming application could observe the definition of NULL via stringizing and see that it is neither an integer constant expression with value zero nor such an expression cast to void. switching to 0L eliminates the issue and provides compatibility with broken applications, since on all musl targets, long and pointers have the same size, representation, and argument-passing convention. we could maintain separate C and C++ definitions of NULL (i.e. just use 0L on C++ and use (void *)0 on C) but after careful analysis, it seems extremely difficult for a C program to even determine whether NULL has integer or pointer type, much less depend in subtle, unintentional ways, on whether it does. C89 seems to have no way to make the distinction. on C99, the fact that (int)(void *)0 is not an integer constant expression, along with subtle VLA/sizeof semantics, can be used to make the distinction, but many compilers are non-conforming and give the wrong result to this test anyway. on C11, _Generic can trivially make the distinction, but it seems unlikely that code targetting C11 would be so backwards in caring which definition of NULL an implementation uses. as such, the simplest path of using the same definition for NULL in both C and C++ was chosen. the #undef directive was also removed so that the compiler can catch and give a warning or error on redefinition if buggy programs have defined their own versions of NULL prior to inclusion of standard headers.
-
- 17 1月, 2013 2 次提交
-
-
由 Rich Felker 提交于
struct dso was not defined in this case, and it's not needed in the code that was using it anyway; void pointers work just as well.
-
由 Rich Felker 提交于
-
- 15 1月, 2013 2 次提交
-
-
由 Szabolcs Nagy 提交于
some structs and functions had reference to the params feature of tre that is not used by the code anymore
-
由 Rich Felker 提交于
-
- 14 1月, 2013 4 次提交
-
-
由 Szabolcs Nagy 提交于
pos_start local variable is not used in tre_tnfa_run_backtrack
-
由 Szabolcs Nagy 提交于
original FreeSec code accessed keybuf as uint32* and uint8* as well (incorrectly), this got fixed with an union, but then it seems the uint32* access is no longer needed so the code can be simplified
-
由 Szabolcs Nagy 提交于
the internal sha2 hash sum functions had incorrect array size in the prototype for the message digest argument, fixed by using pointer so it is not misleading
-
由 Szabolcs Nagy 提交于
-
- 13 1月, 2013 13 次提交
-
-
由 Szabolcs Nagy 提交于
-
由 Szabolcs Nagy 提交于
-
由 Szabolcs Nagy 提交于
added various MS_*, MNT_*, UMOUNT_* flags following the linux headers, with one exception: MS_NOUSER is defined as (1U<<31) instead of (1<<31) which invokes undefined behaviour the S_* flags were removed following glibc
-
由 Szabolcs Nagy 提交于
-
由 Szabolcs Nagy 提交于
-
由 Szabolcs Nagy 提交于
using the glibc names for the magic constants of the linux reboot syscall
-
由 Szabolcs Nagy 提交于
-
由 Szabolcs Nagy 提交于
mips and powerpc already had this termios flag defined
-
由 Szabolcs Nagy 提交于
-
由 Szabolcs Nagy 提交于
it was already defined for mips, but was missing from other archs
-
由 Szabolcs Nagy 提交于
-
由 Szabolcs Nagy 提交于
based on linux headers add the missing MCAST_* options under _GNU_SOURCE as they are not in the reserved namespace (this api was originally specified by RFC 3678)
-
由 Szabolcs Nagy 提交于
missing protocol families based on current linux headers: PF_RDS, PF_LLC, PF_CAN, PF_TIPC, PF_NFC
-
- 11 1月, 2013 2 次提交
-
-
由 Rich Felker 提交于
-
由 Rich Felker 提交于
this is wasteful and useless from a standpoint of sane programs, but it is required by the standard, and the current requirements were upheld with the closure of Austin Group issue #639: http://austingroupbugs.net/view.php?id=639
-
- 08 1月, 2013 1 次提交
-
-
由 Szabolcs Nagy 提交于
common part of erf and erfc was put in a separate function which saved some space and the new code is using unsigned arithmetics erfcf had a bug: for some inputs in [7.95,8] the result had more than 60ulp error: in expf(-z*z - 0.5625f) the argument must be exact but not enough lowbits of z were zeroed, -SET_FLOAT_WORD(z, ix&0xfffff000); +SET_FLOAT_WORD(z, ix&0xffffe000); fixed the issue
-
- 05 1月, 2013 5 次提交
-
-
由 rofl0r 提交于
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.
-
由 rofl0r 提交于
some programs (procps, babl) expect it, and it doesn't seem to cause any harm to just add it. it's small and straightforward. since math.h also defines MAXFLOAT, we undef it in both places, before defining it.
-
由 rofl0r 提交于
-
由 rofl0r 提交于
these flags are needed in order to be able to handle lwp id's which the kernel returns after clone() calls for new threads via ptrace(PTRACE_GETEVENTMSG). fortunately, they're the same for all archs and in the reserved namespace.
-
由 rofl0r 提交于
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).
-
- 02 1月, 2013 4 次提交
-
-
由 Rich Felker 提交于
-
由 Szabolcs Nagy 提交于
both jn and yn functions had integer overflow issues for large and small n to handle these issues nm1 (== |n|-1) is used instead of n and -n in the code and some loops are changed to make sure the iteration counter does not overflow (another solution could be to use larger integer type or even double but that has more size and runtime cost, on x87 loading int64_t or even uint32_t into an fpu register is more than two times slower than loading int32_t, and using double for n slows down iteration logic) yn(-1,0) now returns inf posix2008 specifies that on overflow and at +-0 all y0,y1,yn functions return -inf, this is not consistent with math when n<0 odd integer in yn (eg. when x->0, yn(-1,x)->inf, but historically yn(-1,0) seems to be special cased and returned -inf) some threshold values in jnf and ynf were fixed that seems to be incorrectly copy-pasted from the double version
-
由 Szabolcs Nagy 提交于
a common code path in j1 and y1 was factored out so the resulting object code is a bit smaller unsigned int arithmetics is used for bit manipulation j1(-inf) now returns 0 instead of -0 an incorrect threshold in the common code of j1f and y1f got fixed (this caused spurious overflow and underflow exceptions) the else branch in pone and pzero functions are fixed (so code analyzers dont warn about uninitialized values)
-
由 Szabolcs Nagy 提交于
a common code path in j0 and y0 was factored out so the resulting object code is smaller unsigned int arithmetics is used for bit manipulation the logic of j0 got a bit simplified (x < 1 case was handled separately with a bit higher precision than now, but there are large errors in other domains anyway so that branch has been removed) some threshold values were adjusted in j0f and y0f
-
- 29 12月, 2012 1 次提交
-
-
由 Rich Felker 提交于
reported/requested by Strake; simplified from the provided patch
-
- 28 12月, 2012 1 次提交
-
-
由 Rich Felker 提交于
the old definitions were wrong on some archs. actually, EPOLL_NONBLOCK probably should not even be defined; it is not accepted by the kernel and it's not clear to me whether it has any use at all, even if it did work. this issue should be revisited at some point, but I'm leaving it in place for now in case some applications reference it.
-
- 27 12月, 2012 2 次提交
-
-
由 Rich Felker 提交于
-
由 Rich Felker 提交于
the POLL prefix is in the reserved namespace for poll.h, so no feature test macro checks are needed.
-
- 26 12月, 2012 1 次提交
-
-
由 Rich Felker 提交于
libc is the macro, __libc is the internal symbol, but under some configurations on old/broken compilers, the symbol might not actually exist and the libc macro might instead use __libc_loc() to obtain access to the object.
-