summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2018-08-07fix sign of strftime %z output with offsets <1 hour west of UTCRich Felker-3/+2
the sign character produced came from the sign of tm_gmtoff/3600 as an integer division, which is zero for negative offsets smaller in magnitude than 3600. instead of printing the hours and minutes as separate fields, print them as a single value of the form hours*100+minutes, which naturally has the correct sign.
2018-08-02fix musl-gcc wrapper to be compatible with default-pie gcc toolchainsRich Felker-2/+2
the specfile for the wrapper was written assuming output is pie only if -pie appears on the command line. recent (and older patched) versions of gcc can be configured to produce pie output by default, adn when used with such a toolchain, the wrapper linked the wrong startfiles (crt*) containing pic-incompatible code. rather than trying to figure out gcc's default, simply always use the pic-compatible start files.
2018-07-27make pthread_attr_init honor defaults set by pthread_setattr_default_npRich Felker-4/+11
this fixes a major gap in the intended functionality of pthread_setattr_default_np. if application/library code creating a thread does not pass a null attribute pointer to pthread_create, but sets up an attribute object to change other properties while leaving the stack alone, the created thread will get a stack with size DEFAULT_STACK_SIZE. this makes pthread_setattr_default_np useless for working around stack overflow issues in such applications, and leaves a major risk of regression if previously-working code switches from using a null attribute pointer to an attribute object. this change aligns the behavior more closely with the glibc pthread_setattr_default_np functionality too, albeit via a different mechanism. glibc encodes "default" specially in the attribute object and reads the actual default at thread creation time. with this commit, we now copy the current default into the attribute object at pthread_attr_init time, so that applications that query the properties of the attribute object will see the right values.
2018-07-23bsearch: simplify and optimizeFangrui Song-6/+6
maintainer's note: the key observation here is that the compared element is the first slot of the second ceil(half) of the array, and thus can be removed for further comparison when it does not match, so that we descend into the second ceil(half)-1 rather than ceil(half) elements. this change ensures that nel strictly decreases with each iteration, so that the case of != but nel==1 does not need to be special-cased anymore.
2018-07-20move inclusion of linux headers for kd.h, soundcard.h, vt.h to bitsmidipix-3/+6
maintainer's note: while musl does not use the linux kernel headers, it does provide these three sys/* headers which do nothing but include the corresponding linux/* headers, since the sys/* versions are the ones documented for application use (and they arguably provide interfaces that are not linux-specific but common to other unices). these headers should probably not be provided by libc (rather by a separate package), but as long as they are, use the bits header framework as an aid to out-of-tree ports of musl for non-linux systems that want to implement them in some other way.
2018-07-20remove inclusion guard hacks for sys/kd.hmidipix-7/+0
maintainer's note: at some point, probably long before linux separated the uapi headers, it was the case, or at least I believed it was the case, that linux/types.h was unsafe to include from userspace. thus, the inclusion guard macro _LINUX_TYPES_H was defined in sys/kd.h to prevent linux/kd.h from including linux/types.h (which it spuriously includes but does not use). as far as I can tell, whatever problem this was meant to solve does not seem to have been present for a long time, and the hack was not done correctly anyway, so removing it is the right thing to do.
2018-07-18remove spurious declaration of __getdents from readdir.cRich Felker-2/+0
2018-07-18fix regression in alignment of dirent structs produced by readdirRich Felker-1/+7
commit 32482f61da7650ff10741bd5aedd66bbc3ea165b reduced the number of int members before the dirent buf from 4 to 3, thereby misaligning it mod sizeof(off_t), producing invalid accesses on any arch where alignof(off_t)==sizeof(off_t). rather than re-adding wasted padding, reorder the struct to meet the requirement and add a comment and static assertion to prevent this from getting broken again.
2018-07-17add support for arch-specific ptrace command macrosSzabolcs Nagy-0/+123
sys/ptrace.h is target specific, use bits/ptrace.h to add target specific macro definitions. these macros are kept in the generic sys/ptrace.h even though some targets don't support them: PTRACE_GETREGS PTRACE_SETREGS PTRACE_GETFPREGS PTRACE_SETFPREGS PTRACE_GETFPXREGS PTRACE_SETFPXREGS so no macro definition got removed in this patch on any target. only s390x has a numerically conflicting macro definition (PTRACE_SINGLEBLOCK). the PT_ aliases follow glibc headers, otherwise the definitions come from linux uapi headers except ones that are skipped in glibc and there is no real kernel support (s390x PTRACE_*_AREA) or need special type definitions (mips PTRACE_*_WATCH_*) or only relevant for linux 2.4 compatibility (PTRACE_OLDSETOPTIONS).
2018-07-17sys/ptrace.h: add missing PTRACE_EVENT_STOPSzabolcs Nagy-0/+1
new in linux v3.1 commit 3544d72a0e10d0aa1c1bd59ed77a53a59cdc12f7 changed in linux v3.4 commit 5cdf389aee90109e2e3d88085dea4dd5508a3be7 A tracer recieves this event in the waitpid status of a PTRACED_SEIZED process.
2018-07-17uchar.h: define char16_t and char32_t for old c++Szabolcs Nagy-1/+3
including uchar.h in c++ code is only well defined in c++11 onwards where char16_t and char32_t type definitions must be hidden since they are keywords. however some c++ code compiled for older c++ standard include uchar.h too and they need the typedefs, this fix makes such code work.
2018-07-16block dlopen of libraries with initial-exec refs to dynamic TLSRich Felker-0/+8
previously, this operation succeeded, and the relocation results worked for access from new threads created after dlopen, but produced invalid accesses (and possibly clobbered other memory) from threads that already existed. the way the check is written, it still permits dlopen of libraries containing initial-exec references to static TLS (TLS in the main program or in a dynamic library loaded at startup).
2018-07-16fix inefficient choice of tlsdesc function due to off-by-oneRich Felker-1/+1
tls_id is one-based, whereas [static_]tls_cnt is a count, so comparison for checking that a given tls_id is dynamic rather than static needs to use strict inequality.
2018-07-14implement getaddrinfo's AI_ADDRCONFIG flagRich Felker-0/+39
this flag is notoriously under-/mis-specified, and in the past it was implemented as a nop, essentially considering the absence of a loopback interface with 127.0.0.1 and ::1 addresses an unsupported configuration. however, common real-world container environments omit IPv6 support (even for the network-namespaced loopback interface), and some kernels omit IPv6 support entirely. future systems on the other hand might omit IPv4 entirely. treat these as supported configurations and suppress results of the unconfigured/unsupported address families when AI_ADDRCONFIG is requested. use routability of the loopback address to make the determination; unlike other implementations, we do not exclude loopback from the "an address is configured" condition, since there is no basis in the specification for such exclusion. obtaining a result with AI_ADDRCONFIG does not imply routability of the result, and applications must still be able to cope with unroutable results even if they pass AI_ADDRCONFIG.