aboutsummaryrefslogtreecommitdiff
path: root/src/string/wcsspn.c (unfollow)
Commit message (Expand)AuthorFilesLines
2020-09-09add pidfd_getfd and openat2 syscall numbers from linux v5.6•••also added clone3 on sh and m68k, on sh it's still missing (not yet wired up), but reserved so safe to add. see linux commit fddb5d430ad9fa91b49b1d34d0202ffe2fa0e179 open: introduce openat2(2) syscall linux commit 9a2cef09c801de54feecd912303ace5c27237f12 arch: wire up pidfd_getfd syscall linux commit 8649c322f75c96e7ced2fec201e123b2b073bf09 pid: Implement pidfd_getfd syscall linux commit e8bb2a2a1d51511e6b3f7e08125d52ec73c11139 m68k: Wire up clone3() syscall Szabolcs Nagy16-0/+34
2020-09-09netinet/tcp.h: update tcp_info for linux v5.5•••see linux commit 480274787d7e3458bc5a7cfbbbe07033984ad711 tcp: add TCP_INFO status for failed client TFO Szabolcs Nagy1-1/+8
2020-09-03use generic bits/fcntl.h for x86_64 and riscv64•••these were only using a custom version because they needed the "non-64" variants of the file locking command macros. Rich Felker2-78/+0
2020-09-03make generic bits/fcntl.h shareable with 64-bit archs•••the fcntl file locking command macro values in the existing generic bits/fcntl.h were the "64" variants, requiring 64-bit archs that use the "plain" variants to have their own bits/fcntl.h, even if they otherwise use the common definitions for everything. since commit 7cc79d10afd43811a486fd5e9fcdf8e45ac599e0 exposed __LONG_MAX to all bits headers, we can now make the generic one common between 32- and 64-bit archs. Rich Felker1-0/+6
2020-09-03fix missing O_LARGEFILE values on x86_64, x32, and mips64•••prior to commit 685e40bb09f5f24a2af54ea09c97328808f76990, x86_64 was correctly passing O_LARGEFILE to SYS_open; it was removed (defined to 0 in the public header, and changed to use the public definition) as part of that change, probably out of a mistaken belief that it's not needed. however, on a mixed system with 32-bit and 64-bit binaries, it's important that all files be opened with O_LARGEFILE, even if the opening process is 64-bit, in case a descriptor is passed to a 32-bit process. otherwise, attempts to access past 2GB in the 32-bit process could produce EOVERFLOW. most 64-bit archs added later got this right alread, except for mips64. x32 was also affected. there are now fixed. Rich Felker3-3/+3
2020-09-03fix missing newline in herror outputRich Felker1-1/+1
2020-08-30fix i386 __set_thread_area fallback•••this code is only needed for pre-2.6 kernels, which are not actually supported anyway, and was never tested. the fallback path using SYS_modify_ldt failed to clear the upper bits of %eax (all ones due to SYS_set_thread_area's return value being an error) before modifying %al to attempt a new syscall. Rich Felker1-0/+1
2020-08-30restore h_errno ABI compatibility with ancient binaries•••prior to commit e68c51ac46a9f273927aef8dcebc89912ab19ece, h_errno was actually an external data object not a macro. bring back the symbol, and use it as the storage for the main thread's h_errno. technically this still doesn't provide full compatibility if the application was multithreaded, but at the time there were no res_* functions (and they did not set h_errno anyway), so any use of h_errno would have been via thread-unsafe functions. thus a solution that just fixes single-threaded applications seems acceptable. Rich Felker1-0/+4
2020-08-30clean up overinclusion in files using TIOCGWINSZ•••now that struct winsize is available via sys/ioctl.h once again, including termios.h is not needed. Rich Felker3-3/+0
2020-08-30fix regression with applications that expect struct winsize in ioctl.h•••putting the (simple) definition in alltypes.h seems like the best solution here. making sys/ioctl.h implicitly include termios.h is probably excess namespace pollution. Rich Felker3-7/+5
2020-08-27configure: enable warnings by default•••now that -Wall is not used and we control which warnings are enabled, it makes sense to have the wanted ones on by default. hopefully this will also discourage manually adding -Wall to CFLAGS and making incorrect changes or bug reports based on the compiler's output. Rich Felker1-2/+2
2020-08-27configure: use additive warnings instead of subtracting from -Wall•••-Wall varies too much by compiler and version. rather than trying to track all the unwanted style warnings that need to be subtracted, just enable wanted warnings. also, move -Wno-pointer-to-int-cast outside --enable-warnings conditional so that it always applies, since it's turning off a nuisance warning that's on-by-default with most compilers. Rich Felker1-9/+15
2020-08-27configure: add further -Werror=... options to detected CFLAGS•••these four warning options were overlooked previously, likely because they're not part of GCC's -Wall. they all detect constraint violations (invalid C at the source level) and should always be on in -Werror form. Rich Felker1-0/+4
2020-08-27remove redundant pthread struct members repeated for layout purposes•••dtv_copy, canary2, and canary_at_end existed solely to match multiple ABI and asm-accessed layouts simultaneously. now that pthread_arch.h can be included before struct __pthread is defined, the struct layout can depend on macros defined by pthread_arch.h. Rich Felker8-18/+19
2020-08-27deduplicate __pthread_self thread pointer adjustment out of each arch•••the adjustment made is entirely a function of TLS_ABOVE_TP and TP_OFFSET. aside from avoiding repetition of the TP_OFFSET value and arithmetic, this change makes pthread_arch.h independent of the definition of struct __pthread from pthread_impl.h. this in turn will allow inclusion of pthread_arch.h to be moved to the top of pthread_impl.h so that it can influence the definition of the structure. previously, arch files were very inconsistent about the type used for the thread pointer. this change unifies the new __get_tp interface to always use uintptr_t, which is the most correct when performing arithmetic that may involve addresses outside the actual pointed-to object (due to TP_OFFSET). Rich Felker17-65/+65
2020-08-24deduplicate TP_ADJ logic out of each arch, replace with TP_OFFSET•••the only part of TP_ADJ that was not uniquely determined by TLS_ABOVE_TP was the 0x7000 adjustment used mainly on mips and powerpc variants. Rich Felker17-21/+16
2020-08-24report res_query failures, including nxdomain/nodata, via h_errno•••while it's not clearly documented anywhere, this is the historical behavior which some applications expect. applications which need to see the response packet in these cases, for example to distinguish between nonexistence in a secure vs insecure zone, must already use res_mkquery with res_send in order to be portable, since most if not all other implementations of res_query don't provide it. Rich Felker1-1/+15
2020-08-24make h_errno thread-local•••the framework to do this always existed but it was deemed unnecessary because the only [ex-]standard functions using h_errno were not thread-safe anyway. however, some of the nonstandard res_* functions are also supposed to set h_errno to indicate the cause of error, and were unable to do so because it was not thread-safe. this change is a prerequisite for fixing them. Rich Felker2-4/+3
2020-08-24add tcgetwinsize and tcsetwinsize functions, move struct winsize•••these have been adopted for future issue of POSIX as the outcome of Austin Group issue 1151, and are simply functions performing the roles of the historical ioctls. since struct winsize is being standardized along with them, its definition is moved to the appropriate header. there is some chance this will break source files that expect struct winsize to be defined by sys/ioctl.h without including termios.h. if this happens, further changes will be needed to have sys/ioctl.h expose it too. Rich Felker7-7/+29
2020-08-22fix MUSL_LOCPATH search•••all path elements but the last had the final byte truncated. Rich Felker1-1/+1
2020-08-17add gettid function•••this is a prerequisite for addition of other interfaces that use kernel tids, including futex and SIGEV_THREAD_ID. there is some ambiguity as to whether the semantic return type should be int or pid_t. either way, futex API imposes a contract that the values fit in int (excluding some upper reserved bits). glibc used pid_t, so in the interest of not having gratuitous mismatch (the underlying types are the same anyway), pid_t is used here as well. while conceptually this is a syscall, the copy stored in the thread structure is always valid in all contexts where it's valid to call libc functions, so it's used to avoid the syscall. Rich Felker2-0/+9
2020-08-12aarch64: fix setjmp return value•••longjmp should set the return value of setjmp, but 64bit registers were used for the 0 check while the type is int. use the code that gcc generates for return val ? val : 1; Szabolcs Nagy1-4/+3
2020-08-12setjmp: optimize longjmp prologues•••Use a branchless sequence that is one byte shorter on 64-bit, same size on 32-bit. Thanks to Pete Cawley for suggesting this variant. Alexander Monakov3-14/+8
2020-08-11setjmp: optimize x86 longjmp epiloguesAlexander Monakov3-12/+6
2020-08-11setjmp: avoid useless REX-prefix on xor %eax, %eaxAlexander Monakov2-2/+2
2020-08-11setjmp: fix x86-64 longjmp argument adjustment•••longjmp 'val' argument is an int, but the assembly is referencing 64-bit registers as if the argument was a long, or the caller was responsible for extending the argument. Though the psABI is not clear on this, the interpretation in GCC is that high bits may be arbitrary and the callee is responsible for sign/zero-extending the value as needed (likewise for return values: callers must anticipate that high bits may be garbage). Therefore testing %rax is a functional bug: setjmp would wrongly return zero if longjmp was called with val==0, but high bits of %rsi happened to be non-zero. Rewrite the prologue to refer to 32-bit registers. In passing, change 'test' to use %rsi, as there's no advantage to using %rax and the new form is cheaper on processors that do not perform move elimination. Alexander Monakov2-6/+6
2020-08-08prefer new socket syscalls, fallback to SYS_socketcall only if needed•••a number of users performing seccomp filtering have requested use of the new individual syscall numbers for socket syscalls, rather than the legacy multiplexed socketcall, since the latter has the arguments all in memory where they can't participate in filter decisions. previously, some archs used the multiplexed socketcall if it was historically all that was available, while other archs used the separate syscalls. the intent was that the latter set only include archs that have "always" had separate socket syscalls, at least going back to linux 2.6.0. however, at least powerpc, powerpc64, and sh were wrongly included in this set, and thus socket operations completely failed on old kernels for these archs. with the changes made here, the separate syscalls are always preferred, but fallback code is compiled for archs that also define SYS_socketcall. two such archs, mips (plain o32) and microblaze, define SYS_socketcall despite never having needed it, so it's now undefined by their versions of syscall_arch.h to prevent inclusion of useless fallback code. some archs, where the separate syscalls were only added after the addition of SYS_accept4, lack SYS_accept. because socket calls are always made with zeros in the unused argument positions, it suffices to just use SYS_accept4 to provide a definition of SYS_accept, and this is done to make happy the macro machinery that concatenates the socket call name onto __SC_ and SYS_. Rich Felker6-13/+26
2020-08-05math: new software sqrtl•••same approach as in sqrt. sqrtl was broken on aarch64, riscv64 and s390x targets because of missing quad precision support and on m68k-sf because of missing ld80 sqrtl. this implementation is written for quad precision and then edited to make it work for both m68k and x86 style ld80 formats too, but it is not expected to be optimal for them. note: using fp instructions for the initial estimate when such instructions are available (e.g. double prec sqrt or rsqrt) is avoided because of fenv correctness. Szabolcs Nagy1-1/+253
2020-08-05math: add __math_invalidl•••for targets where long double is different from double. Szabolcs Nagy2-0/+12
2020-08-05math: new software sqrtf•••same method as in sqrt, this was tested on all inputs against an sqrtf instruction. (the only difference found was that x86 sqrtf does not signal the x86 specific input-denormal exception on negative subnormal inputs while the software sqrtf does, this is fine as it was designed for ieee754 exceptions only.) there is known faster method: "Computing Floating-Point Square Roots via Bivariate Polynomial Evaluation" that computes sqrtf directly via pipelined polynomial evaluation which allows more parallelism, but the design does not generalize easily to higher precisions. Szabolcs Nagy1-70/+70
2020-08-05math: new software sqrt•••approximate 1/sqrt(x) and sqrt(x) with goldschmidt iterations. this is known to be a fast method for computing sqrt, but it is tricky to get right, so added detailed comments. use a lookup table for the initial estimate, this adds 256bytes rodata but it can be shared between sqrt, sqrtf and sqrtl. this saves one iteration compared to a linear estimate. this is for soft float targets, but it supports fenv by using a floating-point operation to get the final result. the result is correctly rounded in all rounding modes. if fenv support is turned off then the nearest rounded result is computed and inexact exception is not signaled. assumes fast 32bit integer arithmetics and 32 to 64bit mul. Szabolcs Nagy3-171/+177
2020-08-05in hosts file lookups, honor first canonical name regardless of family•••prior to this change, the canonical name came from the first hosts file line matching the requested family, so the canonical name for a given hostname could differ depending on whether it was requested with AF_UNSPEC or a particular family (AF_INET or AF_INET6). now, the canonical name is deterministically the first one to appear with the requested name as an alias. Rich Felker1-1/+1
2020-08-04in hosts file lookups, use only first match for canonical name•••the existing code clobbered the canonical name already discovered every time another matching line was found, which will necessarily be the case when a hostname has both IPv4 and v6 definitions. patch by Wolf. Rich Felker1-2/+7
2020-08-04release 1.2.1Rich Felker2-1/+37