about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* fix warning building dynlink.c stub for static libcRich Felker2013-01-161-2/+2
| | | | | 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.
* fix bug in dladdr that prevented resolving addresses in the PLTRich Felker2013-01-161-1/+1
|
* remove unused "params" related code from regexSzabolcs Nagy2013-01-152-21/+11
| | | | | some structs and functions had reference to the params feature of tre that is not used by the code anymore
* Merge remote-tracking branch 'nsz/math'Rich Felker2013-01-143-297/+207
|\
| * math: erf and erfc cleanupSzabolcs Nagy2013-01-073-297/+207
| | | | | | | | | | | | | | | | | | | | | | | | 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
* | regex: remove an unused local variable from regexecSzabolcs Nagy2013-01-141-3/+0
| | | | | | | | pos_start local variable is not used in tre_tnfa_run_backtrack
* | in crypt_des change unnecessary union keybuf into unsigned char[]Szabolcs Nagy2013-01-131-11/+8
| | | | | | | | | | | | 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
* | crypt: fix the prototype of md5_sum, sha256_sum and sha512_sumSzabolcs Nagy2013-01-133-3/+3
| | | | | | | | | | | | 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
* | fix lio_listio return value in LIO_WAIT modeSzabolcs Nagy2013-01-131-1/+1
| |
* | add MOD_TAI to sys/timex.h and update STA_RONLYSzabolcs Nagy2013-01-121-1/+2
| |
* | add SWAP_FLAG_DISCARD to sys/swap.hSzabolcs Nagy2013-01-121-0/+1
| |
* | add mount flags to sys/mount.hSzabolcs Nagy2013-01-121-4/+22
| | | | | | | | | | | | | | | | 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
* | add IN_EXCL_UNLINK to sys/inotify.hSzabolcs Nagy2013-01-121-0/+1
| |
* | add EPOLLWAKEUP flag to sys/epoll.hSzabolcs Nagy2013-01-121-0/+1
| |
* | add RB_SW_SUSPEND and RB_KEXEC to sys/reboot.hSzabolcs Nagy2013-01-121-0/+2
| | | | | | | | using the glibc names for the magic constants of the linux reboot syscall
* | add missing mmap options and madvices to bits/mman.h based on linux headersSzabolcs Nagy2013-01-126-0/+41
| |
* | add missing EXTPROC flag to bits/termios.hSzabolcs Nagy2013-01-124-0/+4
| | | | | | | | mips and powerpc already had this termios flag defined
* | add missing F_GETOWNER_UIDS flag to bits/fcntl.hSzabolcs Nagy2013-01-126-0/+11
| |
* | add missing EHWPOISON to bits/errno.hSzabolcs Nagy2013-01-125-0/+5
| | | | | | | | it was already defined for mips, but was missing from other archs
* | add missing ptrace requests and options to sys/ptrace.hSzabolcs Nagy2013-01-121-1/+9
| |
* | add missing multicast socket options to netinet/in.hSzabolcs Nagy2013-01-121-0/+17
| | | | | | | | | | | | 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)
* | add missing protocol families to sys/socket.hSzabolcs Nagy2013-01-121-1/+11
| | | | | | | | | | missing protocol families based on current linux headers: PF_RDS, PF_LLC, PF_CAN, PF_TIPC, PF_NFC
* | fix another case of cloexec/nonblock flags not matching arch valuesRich Felker2013-01-101-2/+3
| |
* | check for invalid handles in dlsym/dlcloseRich Felker2013-01-101-1/+17
|/ | | | | | | 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
* setjmp.h: add struct tag for sigjmp_buf (GCC C++ compatibility)rofl0r2013-01-041-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.
* add legacy header values.hrofl0r2013-01-042-0/+40
| | | | | | | | | 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.
* time.h: add BSD aliases for otherwise internal struct tm membersrofl0r2013-01-041-0/+4
|
* wait.h: add linux specific, thread-related waitpid() flagsrofl0r2013-01-041-0/+4
| | | | | | | | | 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.
* __assert_fail(): remove _Noreturn, to get proper stacktracesrofl0r2013-01-042-2/+2
| | | | | | | | 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).
* add some new-ish IPPROTO constants that were missingRich Felker2013-01-011-0/+3
|
* math: bessel cleanup (jn.c and jnf.c)Szabolcs Nagy2013-01-012-164/+161
| | | | | | | | | | | | | | | | | | | | | | | | 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
* math: bessel cleanup (j1.c and j1f.c)Szabolcs Nagy2013-01-012-187/+138
| | | | | | | | | | | | | | | 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)
* math: bessel cleanup (j0.c and j0f.c)Szabolcs Nagy2013-01-012-203/+161
| | | | | | | | | | | | | 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
* expose [v]asprintf under _BSD_SOURCERich Felker2012-12-281-2/+2
| | | | reported/requested by Strake; simplified from the provided patch
* align EPOLL_* flags with fcntl O_* flag definitions, which vary by archRich Felker2012-12-271-2/+3
| | | | | | | | 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.
* fix alignment logic in strlcpyRich Felker2012-12-261-1/+1
|
* add linux extension POLLRDHUP to poll.hRich Felker2012-12-261-0/+1
| | | | | the POLL prefix is in the reserved namespace for poll.h, so no feature test macro checks are needed.
* fix reference to libc struct in static tls init codeRich Felker2012-12-251-1/+1
| | | | | | | 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.
* clean up and fix logic for making mmap fail on invalid/unsupported offsetsRich Felker2012-12-201-3/+7
| | | | | | | | | | | | | | | | | | | | the previous logic was assuming the kernel would give EINVAL when passed an invalid address, but instead with MAP_FIXED it was giving EPERM, as it considered this an attempt to map over kernel memory. instead of trying to get the kernel to do the rigth thing, the new code just handles the error in userspace. I have also cleaned up the code to use a single mask to check for invalid low bits and unsupported high bits, so it's simpler and more clearly correct. the old code was actually wrong for sizeof(long) smaller than sizeof(off_t) but not equal to 4; now it should be correct for all possibilities. for 64-bit systems, the low-bits test is new and extraneous (the kernel should catch the error anyway when the mmap2 syscall is not used), but it's cheap anyway. if this is an issue, the OFF_MASK definition could be tweaked to omit the low bits when SYS_mmap2 is not defined.
* merge a few fixes by sh4rm4Rich Felker2012-12-195-1/+34
|\
| * socket.h: add SO_(SND/RCV)BUFFORCE to generic blockrofl0r2012-12-191-0/+2
| |
| * add inet_network (required for wine)rofl0r2012-12-192-0/+12
| |
| * x86_64/bits/signal.h: fix typo in REG_CSGSFSrofl0r2012-12-191-1/+1
| |
| * link.h: expose glibc/svr4 dynlinker debugging gluerofl0r2012-12-191-0/+19
| | | | | | | | | | | | this is already implemented in the dynliker (see struct debug), but was not exposed. we need it to do so to make wine happy...
* | math: more correct tgmath.h type cast logicSzabolcs Nagy2012-12-191-32/+17
| | | | | | | | | | | | | | __IS_FP is a portable integer constant expression now (uses that unsigned long long is larger than float) the result casting logic should work now on all compilers supporting typeof
* | math: new type cast logic in tgmath.hSzabolcs Nagy2012-12-191-25/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * return type logic is simplified a bit and fixed (see below) * return type of conj and cproj were wrong on int arguments * added comments about the pending issues (usually we don't have comments in public headers but this is not the biggest issue with tgmath.h) casting the result to the right type cannot be done in c99 (c11 _Generic can solve this but that is not widely supported), so the typeof extension of gcc is used and that the ?: operator has special semantics when one of the operands is a null pointer constant the standard is very strict about the definition of null pointer constants so typeof with ?: is still not enough so compiler specific workaround is used for now on gcc '!1.0' is a null pointer constant so we can use the old __IS_FP logic (eventhough it's non-standard) on clang (and on gcc as well) 'sizeof(void)-1' is a null pointer constant so we can use !(sizeof(*(0?(int*)0:(void*)__IS_FP(x)))-1) (this is non-standard as well), the old logic is used by default and this new one on clang
* | math: use 0x1p-120f and 0x1p120f for tiny and huge valuesSzabolcs Nagy2012-12-1610-27/+27
| | | | | | | | | | | | | | | | | | | | previously 0x1p-1000 and 0x1p1000 was used for raising inexact exception like x+tiny (when x is big) or x+huge (when x is small) the rational is that these float consts are large enough (0x1p-120 + 1 raises inexact even on ld128 which has 113 mant bits) and float consts maybe smaller or easier to load on some platforms (on i386 this reduced the object file size by 4bytes in some cases)
* | math: tgammal.c fixesSzabolcs Nagy2012-12-161-28/+23
| | | | | | | | | | | | | | | | | | this is not a full rewrite just fixes to the special case logic: +-0 and non-integer x<INT_MIN inputs incorrectly raised invalid exception and for +-0 the return value was wrong so integer test and odd/even test for negative inputs are changed and a useless overflow test was removed
* | math: tanh.c cleanup similar to sinh, coshSzabolcs Nagy2012-12-163-173/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | comments are kept in the double version of the function compared to fdlibm/freebsd we partition the domain into one more part and select different threshold points: now the [log(5/3)/2,log(3)/2] and [log(3)/2,inf] domains should have <1.5ulp error (so only the last bit may be wrong, assuming good exp, expm1) (note that log(3)/2 and log(5/3)/2 are the points where tanh changes resolution: tanh(log(3)/2)=0.5, tanh(log(5/3)/2)=0.25) for some x < log(5/3)/2 (~=0.2554) the error can be >1.5ulp but it should be <2ulp (the freebsd code had some >2ulp errors in [0.255,1]) even with the extra logic the new code produces smaller object files
* | math: sinh.c cleanup similar to the cosh oneSzabolcs Nagy2012-12-163-171/+72
| | | | | | | | comments are kept in the double version of the function