path: root/include
AgeCommit message (Collapse)AuthorLines
2019-02-22add membarrier syscall wrapper, refactor dynamic tls install to use itRich Felker-0/+17
the motivation for this change is twofold. first, it gets the fallback logic out of the dynamic linker, improving code readability and organization. second, it provides application code that wants to use the membarrier syscall, which depends on preregistration of intent before the process becomes multithreaded unless unbounded latency is acceptable, with a symbol that, when linked, ensures that this registration happens.
2019-02-07update line discipline constantsBobby Bingham-0/+12
2019-02-07move arch-invariant definitions out of bits/ioctl.hBobby Bingham-0/+98
2018-12-09add NT_VMCOREDD to elf.h from linux v4.18Szabolcs Nagy-0/+1
used for device driver dump in /proc/vmcore new in linux commit 2724273e8fd00b512596a77ee063f49b25f36507
2018-12-09add AT_MINSIGSTKSZ to elf.h from linux v4.18Szabolcs Nagy-0/+1
new in linux commit 94b07c1f8c39c6d839df35fa28ffd1785d385897 currently only supported on aarch64
2018-12-09add TRAP_UNK si_code to signal.h from linux v4.18Szabolcs Nagy-0/+1
used for undiagnosed trap exceptions where linux previously set si_code to 0. new in linux commit db78e6a0a6f9f7d7277965600eeb1a5b3a6f55a8
2018-12-09add SIGSYS support to sys/signalfd.h from linux v4.18Szabolcs Nagy-1/+5
new in linux commit 76b7f670730e87974f71df9f6129811e2769666e in struct signalfd_siginfo the pad member is changed to __pad to keep the namespace clean, it's not part of the public api.
2018-12-09add AF_XDP to sys/socket.h from linux v4.18Szabolcs Nagy-1/+4
new address family and related macros were added in linux commit 68e8b849b221b37a78a110a0307717d45e3593a0
2018-12-09update netinet/udp.h for linux v4.18Szabolcs Nagy-0/+3
add UDP_NO_CHECK6_* to restrict zero UDP6 checksums, new in linux commit 1c19448c9ba6545b80ded18488a64a7f3d8e6998 (pre-v4.18 change, was missed) add UDP_SEGMENT to support generic segmentation offload for udp datagrams, bec1f6f697362c5bc635dacd7ac8499d0a10a4e7 (new in v4.18)
2018-12-09update netinet/tcp.h for linux v4.18Szabolcs Nagy-0/+18
add packet delivery info to tcp_info, new in linux commit feb5f2ec646483fb66f9ad7218b1aad2a93a2a5c add TCP_ZEROCOPY_RECEIVE socket option for zerocopy receive, new in linux commit 05255b823a6173525587f29c4e8f1ca33fd7677d add TCP_INQ socket option and TCP_CM_INQ cmsg to get in-queue bytes in cmsg upon read, new in linux commit b75eba76d3d72e2374fac999926dafef2997edd2 add TCP_REPAIR_* to fix repair socket window probe patch, new in linux commit 31048d7aedf31bf0f69c54a662944632f29d82f2
2018-10-16restore attribute((const)) to pthread_self and errno location declsRich Felker-0/+9
revert commit a603a75a72bb469c6be4963ed1b55fabe675fe15. as a result of commit 1c84c99913bf1cd47b866ed31e665848a0da84a2 this is now safe, assuming an interpretation of the somewhat-underspecified attribute((const)) consistent with real-world usage.
2018-09-13define MAX_HANDLE_SZ for use with name_to_handle_atKhem Raj-0/+1
MAX_HANDLE_SZ is described in name_to_handle_at() to contain maximum expected size for a file handle
2018-09-12wireup linux/name_to_handle_at and name_to_handle_at syscallsKhem Raj-0/+7
2018-09-12rework mechanism for posix_spawnp calling posix_spawnRich Felker-1/+3
previously, a common __posix_spawnx backend was used that accepted an additional argument for the execve variant to call in the child. this moderately bloated up the posix_spawn function, shuffling arguments between stack and/or registers to call a 7-argument function from a 6-argument one. instead, tuck the exec function pointer in an unused part of the (large) pthread_spawnattr_t structure, and have posix_spawnp duplicate the attributes and fill in a pointer to __execvpe. the net code size change is minimal, but the weight is shifted to the "heavier" function which already pulls in more dependencies. as a bonus, we get rid of an external symbol (__posix_spawnx) that had no really good place for a declaration because it shouldn't have existed to begin with.
2018-08-28fix dubious char signedness check in limits.hRich Felker-1/+1
commit 201995f382cc698ae19289623cc06a70048ffe7b introduced a hack utilizing the signedness of character constants at the preprocessor level to avoid depending on the gcc-specific __CHAR_UNSIGNED__ predef. while this trick works on gcc and presumably other compilers being used, it's not clear that the behavior it depends on is actually conforming. C11 ¶10 defines character constants as having type int, and 6.10.1 ¶4 defines preprocessor #if arithmetic to take place in intmax_t or uintmax_t, depending on the signedness of the integer operand types, and it is specified that "this includes interpreting character constants". if character literals had type char and just promoted to int, it would be clear that when char is unsigned they should behave as uintmax_t at the preprocessor level. however, as written the text of the standard seems to require that character constants always behave as intmax_t, corresponding to int, at the preprocessor level. since there is a good deal of ambiguity about the correct behavior and a risk that compilers will disagree or that an interpretation may mandate a change in the behavior, do not rely on it for defining CHAR_MIN and CHAR_MAX correctly. instead, use the signedness of the value (as opposed to the type) of '\xff', which will be positive if and only if plain char is unsigned. this behavior is clearly specified, and the specific case '\xff' is even used in an example, under of the standard.
2018-08-22fix FP_ILOGB0 and FP_ILOGBNAN definitions to be valid for use in #ifRich Felker-1/+1
commit 98c9af500125df41fdb46d7e384b00982d72493a wrongly claimed they do not need to be valid for such usage, but the last sentence of C11 7.1.4 ¶1 imposes a broad requirement that all macros specified as integer constant expressions also need to be valid for #if. simply write the value out explicitly. there is no value here in pretending that the width of int will vary.
2018-08-20remove erroneous SYMLINK_MAX definition from limits.h, pathconfRich Felker-1/+0
POSIX requires the symlink function to fail with ENAMETOOLONG if the link contents to be written exceed SYMLINK_MAX in length, but neither Linux nor our syscall wrapper code enforce this. the value 255 for SYMLINK_MAX is not meaningful and does not seem to have been motivated by anything except perhaps a wrong assumption that a definition was mandatory. it has been present (though moving through bits to top-level limits.h) since the beginning of the project history. [f]pathconf is entitled to return -1 as the limit for conf names for which there is no hard limit, with the usual POSIX note that an indefinite limit does not imply an infinite limit. in principle we might should report a limit for filesystems that impose one, but such functionality is not currently present for any of the pathconf limits, and adding it is beyond the scope of fixing the incorrect limit.
2018-07-20move inclusion of linux headers for kd.h, soundcard.h, vt.h to bitsmidipix-3/+3
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-17add support for arch-specific ptrace command macrosSzabolcs Nagy-0/+2
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-12add ST_RELATIME to statvfs.hRich Felker-0/+1
2018-06-26add explicit_bzero implementationDavid Carlier-0/+1
maintainer's note: past sentiment was that, despite being imperfect and unable to force clearing of all possible copies of sensitive data (e.g. in registers, register spills, signal contexts left on the stack, etc.) this function would be added if major implementations agreed on it, which has happened -- several BSDs and glibc all include it.
2018-06-26fix value of SO_PEERSEC on mips archsRich Felker-1/+1
adapted from patch by Matthias Schiffer.
2018-06-20add memfd_create syscall wrapperSzabolcs Nagy-0/+5
memfd_create was added in linux v3.17 and glibc has api for it.
2018-06-20add mlock2 linux syscall wrapperSzabolcs Nagy-3/+8
mlock2 syscall was added in linux v4.4 and glibc has api for it. It falls back to mlock in case of flags==0, so that case works even on older kernels. MLOCK_ONFAULT is moved under _GNU_SOURCE following glibc.
2018-06-19add speculation control prctls from linux v4.17Szabolcs Nagy-0/+9
PR_{SET,GET}_SPECULATION_CTRL controls speculation related vulnerability mitigations, new in commits b617cfc858161140d69cc0b5cc211996b557a1c7 356e4bfff2c5489e016fdb925adbf12a1e3950ee
2018-06-19add ETH_P_PREAUTH ethertype from linux v4.17Szabolcs Nagy-0/+1
added in linux commit 4fe0de5b143762d327bfaf1d7be7c5b58041a18c
2018-06-19add TCP_NLA_* from linux v4.17Szabolcs Nagy-0/+10
new and missing netlink attributes types for SCM_TIMESTAMPING_OPT_STATS, new ones were added in commits 7156d194a0772f733865267e7207e0b08f81b02b be631892948060f44b1ceee3132be1266932071e 87ecc95d81d951b0984f2eb9c5c118cb68d0dce8
2018-06-19add {MSG,SEM,SHM}_STAT_ANY from linux v4.17Szabolcs Nagy-0/+3
introduced to stat ipc objects without permission checks since the info is available in /proc/sysvipc anyway, new in linux commits 23c8cec8cf679b10997a512abb1e86f0cedc42ba a280d6dc77eb6002f269d58cd47c7c7e69b617b6 c21a6970ae727839a2f300cd8dd957de0d0238c3
2018-06-19add MAP_FIXED_NOREPLACE from linux v4.17Szabolcs Nagy-0/+1
to map at a fixed address without unmapping underlying mappings (fails with EEXIST unlike MAP_FIXED), new in linux commits 4ed28639519c7bad5f518e70b3284c6e0763e650 and a4ff8e8620d3f4f50ac4b41e8067b7d395056843.
2018-06-19sys/ptrace.h: add PTRACE_SECCOMP_GET_METADATA from linux v4.16Szabolcs Nagy-1/+7
to get seccomp state for checkpoint restore. added in linux commit 26500475ac1b499d8636ff281311d633909f5d20 struct tag follows the glibc api and ptrace_peeksiginfo_args got changed too accordingly.
2018-06-19netinet/if_ether.h: add ETH_TLEN from linux v4.16Szabolcs Nagy-0/+1
octets in ethernet type field added in linux commit 4bbb3e0e8239f9079bf1fe20b3c0cb598714ae61
2018-06-19netinet/if_ether.h: add ETH_P_ERSPAN2 from linux v4.16Szabolcs Nagy-0/+1
protocol number for erspan v2 support added in linux commit f551c91de262ba36b20c3ac19538afb4f4507441
2018-06-19sys/epoll.h: add EPOLLNVAL from linux v4.16Szabolcs Nagy-0/+1
added to uapi in commit 65aaf87b3aa2d049c6b9fd85221858a895df3393 used since commit a9a08845e9acbd224e4ee466f5c1275ed50054e8, which renamed POLL* to EPOLL* in the kernel.
2018-06-12add missing m68k relocation types in elf.hRich Felker-1/+19
2018-03-28fix default feature profile in tar.hRich Felker-0/+2
commit d93c0740d86aaf7043e79b942a6c0b3f576af4c8 added use of feature test macros without including features.h, causing a definition that should be exposed in the default profile, TSVTX, to appear only when _XOPEN_SOURCE or higher is explicitly defined.
2018-03-12explicitly use signed keyword to define intNN_t and derivative typesRich Felker-4/+4
standing alone, both the signed and int keywords identify the same type, a (signed) int. however the C language has an exception where, when the lone keyword int is used to declare a bitfield, it's implementation-defined whether the bitfield is signed or unsigned. C11 footnote 125 extends this implementation-definedness to typedefs, and DR#315 extends it to other integer types (for which support with bitfields is implementation-defined). while reasonable ABIs (all the ones we support) define bitfields as signed by default, GCC and compatible compilers offer an option -funsigned-bitfields to change the default. while any signed types defined without explicit use of the signed keyword are affected, the stdint.h types, especially intNN_t, have a natural use in bitfields. ensure that bitfields defined with these types always have the correct signedness regardless of compiler & flags used. see also GCC PR 83294.
2018-03-10remove spurious const keyword in sigqueue declarationRich Felker-1/+1
this must have been taken from POSIX without realizing that it was meaningless. the resolution to Austin Group issue #844 removed it from the standard.
2018-03-10fix minor namespace issue in unistd.hRich Felker-2/+1
the F_* macros associated with the lockf function are XSI-shaded (like the lockf function itself) and should only be exposed when the function is.
2018-03-10fix minor namespace issue in tar.hRich Felker-0/+2
TSVTX is XSI-shaded.
2018-03-10fix minor namespace issues in limits.hRich Felker-5/+10
2018-03-10reverse definition dependency between PAGESIZE and PAGE_SIZERich Felker-2/+2
PAGESIZE is actually the version defined in POSIX base, with PAGE_SIZE being in the XSI option. use PAGESIZE as the underlying definition to facilitate making exposure of PAGE_SIZE conditional.
2018-02-24fix aliasing violations in fgetpos/fsetposRich Felker-0/+1
add a member of appropriate type to the fpos_t union so that accesses are well-defined. use long long instead of off_t since off_t is not always exposed in stdio.h and there's no namespace-clean alias for it. access is still performed using pointer casts rather than by naming the union member as a matter of style; to the extent possible, the naming of fields in opaque types defined in the public headers is not treated as an API contract with the implementation. access via the pointer cast is valid as long as the union has a member of matching type.
2018-02-23add getentropy functionRich Felker-0/+1
based loosely on patch by Hauke Mehrtens; converted to wrap the public API of the underlying getrandom function rather than direct syscalls, so that if/when a fallback implementation of getrandom is added it will automatically get picked up by getentropy too.
2018-02-22add getrandom syscall wrapperHauke Mehrtens-0/+19
This syscall is available since Linux 3.17 and was also implemented in glibc in version 2.25 using the same interfaces.
2018-02-22elf.h: add DT_SYMTAB_SHNDXSzabolcs Nagy-1/+2
it's a recent addition to elf gabi: based on discussions at
2018-02-22elf.h: syncronize DF_1_ flags with binutilsSzabolcs Nagy-0/+2
DF_1_STUB and DF_1_PIE were added in binutils-gdb commit 5c383f026242d25a3c21fdfda42e5ca218b346c8
2018-02-22elf.h: update NT_* coredump elf notes for linux v4.15Szabolcs Nagy-0/+21
NT_ARM_SVE and NT_S390_RI_CB are new in linux commits 43d4da2c45b2f5d62f8a79ff7c6f95089bb24656 and 262832bc5acda76fd8f901d39f4da1121d951222 the rest are older. musl missed NT_PRFPREG because it followed the glibc api: