Commit Graph
100 Commits
Author SHA1 Message Date
Szabolcs NagyandRich Felker 1de4788610 add NT_VMCOREDD to elf.h from linux v4.18
used for device driver dump in /proc/vmcore
new in linux commit 2724273e8fd00b512596a77ee063f49b25f36507
2018-12-09 22:30:05 -05:00
Szabolcs NagyandRich Felker 836022b1c3 add AT_MINSIGSTKSZ to elf.h from linux v4.18
new in linux commit 94b07c1f8c39c6d839df35fa28ffd1785d385897

currently only supported on aarch64
2018-12-09 22:29:44 -05:00
Szabolcs NagyandRich Felker d149e69c02 add io_pgetevents and rseq syscall numbers from linux v4.18
io_pgetevents is new in linux commit
7a074e96dee62586c935c80cecd931431bfdd0be

rseq is new in linux commit
d7822b1e24f2df5df98c76f0e94a5416349ff759
2018-12-09 22:29:12 -05:00
Szabolcs NagyandRich Felker ca73bea05d add TRAP_UNK si_code to signal.h from linux v4.18
used for undiagnosed trap exceptions where linux previously set si_code
to 0. new in linux commit db78e6a0a6f9f7d7277965600eeb1a5b3a6f55a8
2018-12-09 22:29:07 -05:00
Szabolcs NagyandRich Felker a71276e258 add SIGSYS support to sys/signalfd.h from linux v4.18
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-09 22:25:21 -05:00
Szabolcs NagyandRich Felker 0a9a5c20c7 add AF_XDP to sys/socket.h from linux v4.18
new address family and related macros were added in linux commit
68e8b849b221b37a78a110a0307717d45e3593a0
2018-12-09 22:24:12 -05:00
Szabolcs NagyandRich Felker 4b9b8c8ee6 update netinet/udp.h for linux v4.18
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-09 22:23:48 -05:00
Szabolcs NagyandRich Felker ac1af87e1d update netinet/tcp.h for linux v4.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-12-09 22:23:30 -05:00
Szabolcs NagyandRich Felker e901613888 x86_64: add single instruction fma
fma is only available on recent x86_64 cpus and it is much faster than
a software fma, so this should be done with a runtime check, however
that requires more changes, this patch just adds the code so it can be
tested when musl is compiled with -mfma or -mfma4.
2018-10-15 14:45:28 -04:00
Szabolcs NagyandRich Felker 7396ef0a05 arm: add single instruction fma
vfma is available in the vfpv4 fpu and above, the ACLE standard feature
test for double precision hardware fma support is
  __ARM_FEATURE_FMA && __ARM_FP&8
we need further checks to work around clang bugs (fixed in clang >=7.0)
  && !__SOFTFP__
because __ARM_FP is defined even with -mfloat-abi=soft
  && !BROKEN_VFP_ASM
to disable the single precision code when inline asm handling is broken.

For runtime selection the HWCAP_ARM_VFPv4 hwcap flag can be used, but
that requires further work.
2018-10-15 14:42:46 -04:00
Szabolcs NagyandRich Felker 7c5f3bb955 powerpc: add single instruction fabs, fabsf, fma, fmaf, sqrt, sqrtf
These are only available on hard float target and sqrt is not available
in the base ISA, so further check is used.
2018-10-15 14:41:59 -04:00
Szabolcs NagyandRich Felker 1da534ada8 s390x: add single instruction fma and fmaf
These are available in the s390x baseline isa -march=z900.
2018-10-15 14:41:43 -04:00
Szabolcs NagyandRich Felker 7b384c42b7 fix fesetround error checking
Rounding modes are not bit flags, but arbitrary non-negative integers.
2018-10-10 16:15:51 -04:00
Szabolcs NagyandRich Felker c50985d5c8 new tsearch implementation
Rewrote the AVL tree implementation:

- It is now non-recursive with fixed stack usage (large enough for
worst case tree height). twalk and tdestroy are still recursive as
that's smaller/simpler.

- Moved unrelated interfaces into separate translation units.

- The node structure is changed to use indexed children instead of
left/right pointers, this simplifies the balancing logic.

- Using void * pointers instead of struct node * in various places,
because this better fits the api (node address is passed in a void**
argument, so it is tempting to incorrectly cast it to struct node **).

- As a further performance improvement the rebalancing now stops
when it is not needed (subtree height is unchanged). Otherwise
the behaviour should be the same as before (checked over generated
random inputs that the resulting tree shape is equivalent).

- Removed the old copyright notice (including prng related one: it
should be licensed under the same terms as the rest of the project).

.text size of pic tsearch + tfind + tdelete + twalk:

   x86_64 i386 aarch64  arm mips powerpc ppc64le  sh4 m68k s390x
old   941  899    1220 1068 1852    1400    1600 1008 1008  1488
new   857  881    1040  976 1564    1192    1360  736  820  1408
2018-09-20 17:57:47 -04:00
Szabolcs NagyandRich Felker 5ef60206ff add arm and sh bits/ptrace.h
These should have been added in commit
df6d9450ea
that added target specific PTRACE_ macros, but somehow got missed.
2018-09-20 17:56:29 -04:00
Szabolcs NagyandRich Felker 056f9d818e rewrite __aeabi_read_tp in asm
__aeabi_read_tp used to call c code, but that was incorrect as the
arm runtime abi specifies special pcs for this function: it is only
allowed to clobber r0, ip, lr and cpsr.

maintainer's note: the old code explicitly saved and restored all
general-purpose registers which are call-clobbered in the normal
calling convention, so it's unlikely that any real-world compilers
produced code that could break. however theoretically they could have
chosen to use floating point registers, in which case the caller's
values of those registers would be clobbered.
2018-08-28 17:08:14 -04:00
Szabolcs NagyandRich Felker c06c1eb661 fix tls access on arm targets before armv6k
commit 610c5a8524 changed the thread
pointer setup so tp points at the end of the pthread struct on arm,
but failed to update __aeabi_read_tp so it was off by 8.

this broke tls access in code that is compiled with -mtp=soft, which
is the default when target arch is pre armv6k or thumb1.

maintainer's note: no release versions are affected.
2018-08-23 16:41:44 -04:00
Szabolcs NagyandRich Felker df6d9450ea add support for arch-specific ptrace command macros
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-17 22:25:08 -04:00
Szabolcs NagyandRich Felker 7ea32a8282 sys/ptrace.h: add missing PTRACE_EVENT_STOP
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-17 22:24:15 -04:00
Szabolcs NagyandRich Felker cbf16c4abf uchar.h: define char16_t and char32_t for old c++
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-17 22:24:03 -04:00
Szabolcs NagyandRich Felker 38f2fa3d02 add memfd_create syscall wrapper
memfd_create was added in linux v3.17 and glibc has api for it.
2018-06-20 21:36:04 -04:00
Szabolcs NagyandRich Felker b64d66d0b0 add mlock2 linux syscall wrapper
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-20 21:35:45 -04:00
Szabolcs NagyandRich Felker 7ea235b1be s390x: add kexec_file_load syscall number from linux v4.17
new in linux commit 71406883fd35794d573b3085433c41d0a3bf6c21
2018-06-19 13:27:39 -04:00
Szabolcs NagyandRich Felker 1177f61d6e mips: add HWCAP_ flags from linux v4.17
new in linux commit 256211f2b0b251e532d1899b115e374feb16fa7a
2018-06-19 13:27:27 -04:00
Szabolcs NagyandRich Felker f3b6690a53 aarch64: add HWCAP_ flags from linux v4.17
hwcaps for armv8.4, new in linux commit
7206dc93a58fb76421c4411eefa3c003337bcb2d
2018-06-19 13:27:17 -04:00
Szabolcs NagyandRich Felker da9f2b2ac8 add speculation control prctls from linux v4.17
PR_{SET,GET}_SPECULATION_CTRL controls speculation related vulnerability
mitigations, new in commits
b617cfc858161140d69cc0b5cc211996b557a1c7
356e4bfff2c5489e016fdb925adbf12a1e3950ee
2018-06-19 13:27:08 -04:00
Szabolcs NagyandRich Felker 5b85ed5cec add ETH_P_PREAUTH ethertype from linux v4.17
added in linux commit 4fe0de5b143762d327bfaf1d7be7c5b58041a18c
2018-06-19 13:26:41 -04:00
Szabolcs NagyandRich Felker ebeb1de288 add TCP_NLA_* from linux v4.17
new and missing netlink attributes types for SCM_TIMESTAMPING_OPT_STATS,
new ones were added in commits
7156d194a0772f733865267e7207e0b08f81b02b
be631892948060f44b1ceee3132be1266932071e
87ecc95d81d951b0984f2eb9c5c118cb68d0dce8
2018-06-19 13:26:36 -04:00
Szabolcs NagyandRich Felker af55070eae add {MSG,SEM,SHM}_STAT_ANY from linux v4.17
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-19 13:26:24 -04:00
Szabolcs NagyandRich Felker 156a3bedb2 add MAP_FIXED_NOREPLACE from linux v4.17
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-19 13:26:00 -04:00
Szabolcs NagyandRich Felker 90ac71d853 powerpc: add pkey syscall numbers from linux v4.16
add pkey_mprotect, pkey_alloc, pkey_free syscall numbers,
new in linux commits 3350eb2ea127978319ced883523d828046af4045
and 9499ec1b5e82321829e1c1510bcc37edc20b6f38
2018-06-19 13:25:50 -04:00
Szabolcs NagyandRich Felker a697a1c9a5 aarch64: add HWCAP_ASIMDFHM from linux v4.16
armv8.4 fp mul instructions.
added in commit 3b3b681097fae73b7f5dcdd42db6cfdf32943d4c
2018-06-19 13:25:44 -04:00
Szabolcs NagyandRich Felker 0f7aa600f7 sys/ptrace.h: add PTRACE_SECCOMP_GET_METADATA from linux v4.16
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-19 13:25:33 -04:00
Szabolcs NagyandRich Felker 3a81cbe643 netinet/if_ether.h: add ETH_TLEN from linux v4.16
octets in ethernet type field
added in linux commit 4bbb3e0e8239f9079bf1fe20b3c0cb598714ae61
2018-06-19 13:25:25 -04:00
Szabolcs NagyandRich Felker 833df8675c netinet/if_ether.h: add ETH_P_ERSPAN2 from linux v4.16
protocol number for erspan v2 support
added in linux commit f551c91de262ba36b20c3ac19538afb4f4507441
2018-06-19 13:25:22 -04:00
Szabolcs NagyandRich Felker 29f3202b73 sys/epoll.h: add EPOLLNVAL from linux v4.16
added to uapi in commit 65aaf87b3aa2d049c6b9fd85221858a895df3393
used since commit a9a08845e9acbd224e4ee466f5c1275ed50054e8,
which renamed POLL* to EPOLL* in the kernel.
2018-06-19 13:25:16 -04:00
Szabolcs NagyandRich Felker 610c5a8524 fix TLS layout of TLS variant I when there is a gap above TP
In TLS variant I the TLS is above TP (or above a fixed offset from TP)
but on some targets there is a reserved gap above TP before TLS starts.

This matters for the local-exec tls access model when the offsets of
TLS variables from the TP are hard coded by the linker into the
executable, so the libc must compute these offsets the same way as the
linker.  The tls offset of the main module has to be

	alignup(GAP_ABOVE_TP, main_tls_align).

If there is no TLS in the main module then the gap can be ignored
since musl does not use it and the tls access models of shared
libraries are not affected.

The previous setup only worked if (tls_align & -GAP_ABOVE_TP) == 0
(i.e. TLS did not require large alignment) because the gap was
treated as a fixed offset from TP.  Now the TP points at the end
of the pthread struct (which is aligned) and there is a gap above
it (which may also need alignment).

The fix required changing TP_ADJ and __pthread_self on affected
targets (aarch64, arm and sh) and in the tlsdesc asm the offset to
access the dtv changed too.
2018-06-02 19:38:44 -04:00
Szabolcs NagyandRich Felker 282b1cd266 fix fmaf wrong result
if double precision r=x*y+z is not a half way case between two single
precision floats or it is an exact result then fmaf returns (float)r.

however the exactness check was wrong when |x*y| < |z| and could cause
incorrectly rounded result in nearest rounding mode when r is a half
way case.

fmaf(-0x1.26524ep-54, -0x1.cb7868p+11, 0x1.d10f5ep-29)
was incorrectly rounded up to 0x1.d117ap-29 instead of 0x1.d1179ep-29.
(exact result is 0x1.d1179efffffffecp-29, r is 0x1.d1179fp-29)
2018-04-02 18:57:41 -04:00
Szabolcs NagyandRich Felker 9bed82df30 aarch64: add sve_context struct and related defines from linux v4.15
signal context definitions for scalable vector extension new in commit
d0b8cd3187889476144bd9b13bf36a932c3e7952
2018-02-22 18:51:32 -05:00
Szabolcs NagyandRich Felker 74ab4b8284 elf.h: add DT_SYMTAB_SHNDX
it's a recent addition to elf gabi:
http://sco.com/developers/gabi/latest/revision.html
based on discussions at
https://sourceware.org/bugzilla/show_bug.cgi?id=15835
2018-02-22 18:51:16 -05:00
Szabolcs NagyandRich Felker dfeeeaf544 elf.h: syncronize DF_1_ flags with binutils
DF_1_STUB and DF_1_PIE were added in binutils-gdb commit
5c383f026242d25a3c21fdfda42e5ca218b346c8
2018-02-22 18:51:00 -05:00
Szabolcs NagyandRich Felker eef5e4821d elf.h: update NT_* coredump elf notes for linux v4.15
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:
https://sourceware.org/bugzilla/show_bug.cgi?id=14890
2018-02-22 18:49:46 -05:00
Szabolcs NagyandRich Felker 5024804176 elf.h: add PPC64_OPT_LOCALENTRY
allows calling extern functions without saving r2, for details see
glibc commit 0572433b5beb636de1a49ec6b4fdab830c38cdc5
2018-02-22 18:49:42 -05:00
Szabolcs NagyandRich Felker e7bd039df2 elf.h: add AT_* auxval macros for cache geometry
AT_L1I_*, AT_L1D_*, AT_L2_* and AT_L3_* were added in linux v4.11 for
powerpc in commit 98a5f361b8625c6f4841d6ba013bbf0e80d08147.
2018-02-22 18:49:39 -05:00
Szabolcs NagyandRich Felker 121d18d2f2 sys/prctl.h: add new PR_SVE_* macros from linux v4.15
PR_SVE_SET_VL and PR_SVE_GET_VL controls are new in linux commit
2d2123bc7c7f843aa9db87720de159a049839862
related PR_SVE_* macros were added in
7582e22038a266444eb87bc07c372592ad647439
2018-02-22 18:49:34 -05:00
Szabolcs NagyandRich Felker 5a4a780ccb aarch64: update hwcap.h for linux v4.15
HWCAP_SVE is new in linux commit 43994d824e8443263dc98b151e6326bf677be52e
HWCAP_SHA3, HWCAP_SM3, HWCAP_SM4, HWCAP_ASIMDDP and HWCAP_SHA512 are new in
f5e035f8694c3bdddc66ea46ecda965ee6853718
2018-02-22 18:49:29 -05:00
Szabolcs NagyandRich Felker 8be960d188 arm: add get_tls syscall from linux v4.15
for systems without tp register or kuser helper, new in linux commit
8fcd6c45f5a65621ec809b7866a3623e9a01d4ed
2018-02-22 18:49:24 -05:00
Szabolcs NagyandRich Felker 0fc2f098a4 powerpc: update hwcap.h for linux v4.15
PPC_FEATURE2_HTM_NO_SUSPEND is new in linux commit
cba6ac4869e45cc93ac5497024d1d49576e82666
PPC_FEATURE2_DARN and PPC_FEATURE2_SCV were new in v4.12 in commit
a4700a26107241cc7b9ac8528b2c6714ff99983d
2018-02-22 18:49:16 -05:00
Szabolcs NagyandRich Felker 4ccd07527e s390x: add s390_sthyi system call from v4.15
to store hypervisor information, added in linux commit
3d8757b87d7fc15a87928bc970f060bc9c6dc618
2018-02-22 18:49:11 -05:00
Szabolcs NagyandRich Felker 4001c51181 netinet/in.h: add new IPV6_FREEBIND from linux v4.15
new socekt option for AF_INET6 SOL_RAW sockets, added in linux commit
84e14fe353de7624872e582887712079ba0b2d56
2018-02-22 18:49:07 -05:00
Szabolcs NagyandRich Felker 5f4ff22aa3 netinet/tcp.h: add TCP_* socket options from linux v4.15
TCP_FASTOPEN_KEY is new in 1fba70e5b6bed53496ba1f1f16127f5be01b5fb6
TCP_FASTOPEN_NO_COOKIE is new in 71c02379c762cb616c00fd5c4ed253fbf6bbe11b
2018-02-22 18:49:03 -05:00
Szabolcs NagyandRich Felker 9b57db3f95 add MAP_SYNC and MAP_SHARED_VALIDATE from linux v4.15
for synchronous page faults, new in linux commit
1c9725974074a047f6080eecc62c50a8e840d050 and
b6fb293f2497a9841d94f6b57bd2bb2cd222da43
note that only targets that use asm-generic/mman.h have this new
flag defined, so undef it on other targets (mips*, powerpc*).
2018-02-22 18:48:58 -05:00
Szabolcs NagyandRich Felker 9eda4dc69c mips,powerpc: fix TIOCSER_TEMT in termios.h
use the same token to define TIOCSER_TEMT as is used in ioctl.h
so when both headers are included there are no redefinition warnings
during musl build.
2018-02-22 18:48:38 -05:00
Szabolcs NagyandRich Felker e69608700f netinet/tcp.h: add tcp_diag_md5sig struct from linux v4.14
for querying tcp md5 signing keys.
new in linux commit c03fa9bcacd9ac04595cc13f34f3445f0a5ecf13
2018-02-22 18:48:18 -05:00
Szabolcs NagyandRich Felker abdaba8616 sys/{mman,shm}.h: add {MAP,SHM}_HUGE_ macros from linux uapi
*_HUGE_SHIFT, *_HUGE_2MB, *_HUGE_1GB are documented in the man page,
so add all of the *_HUGE_* macros from linux uapi.

if MAP_HUGETLB is set, top bits of the mmap flags encode the page size.
see the linux commit aafd4562dfee81a40ba21b5ea3cf5e06664bc7f6

if SHM_HUGETLB is set, top bits of the shmget flags encode the page size.
see the linux commit 4da243ac1cf6aeb30b7c555d56208982d66d6d33

*_HUGE_16GB is defined unsigned to avoid signed left shift ub.
2018-02-22 18:48:12 -05:00
Szabolcs NagyandRich Felker fba3059d72 netinet/if_ether.h: add new ETH_P_ macros from linux v4.14
new ethertypes in linux v4.14:
ETH_P_ERSPAN new in 84e54fe0a5eaed696dee4019c396f8396f5a908b
ETH_P_IFE new in 2804fd3af6ba5ae5737705b27146455eabe2e2f8
ETH_P_NSH new in 155e6f649757c902901e599c268f8b575ddac1f8
ETH_P_MAP new in 7373ae7e8f0bf2c0718422481da986db5058b005
2018-02-22 18:47:52 -05:00
Szabolcs NagyandRich Felker 4d4a665799 net/if_arp.h: add ARPHRD_RAWIP from linux v4.14
new in linux commmit cdf4969c42a6c1a376dd03a9e846cf638d3cd4b1
2018-02-22 18:47:49 -05:00
Szabolcs NagyandRich Felker 38e81ddc04 signal.h: add missing SIGTRAP si_codes
TRAP_BRANCH and TRAP_HWBKPT new in linux commit
da654b74bda14c45a7d98c731bf3c1a43b6b74e2
2018-02-22 18:46:31 -05:00
Szabolcs NagyandRich Felker ebd8ef50d5 aarch64: add HWCAP_DCPOP from linux v4.14
indicates ARMv8.2-DCPoP persistent memory support extension.
new in linux commit 7aac405ebb3224037efd56b73d82d181111cdac3
2018-02-22 18:45:35 -05:00
Szabolcs NagyandRich Felker 5431c20040 sys/mman.h: add MADV_WIPEONFORK from linux v4.14
allows zeroing anonymous private pages inherited by a child process.
new in linux commit d2cd9ede6e193dd7d88b6d27399e96229a551b19
2018-02-22 18:45:31 -05:00
Szabolcs NagyandRich Felker 986bc21713 sys/socket.h: add MSG_ZEROCOPY from linux v4.14
MSG_ZEROCOPY socket send flag avoids copy in the kernel
new in linux commit 52267790ef52d7513879238ca9fac22c1733e0e3
SO_ZEROCOPY socket option enables MSG_ZEROCOPY if availale
new in linux commit 76851d1212c11365362525e1e2c0a18c97478e6b
2018-02-22 18:45:24 -05:00
Szabolcs NagyandRich Felker 404097a4ef sys/socket.h: add SOL_TLS from linux v4.13
socket option for kernel TLS support
new in linux commit 3c4d7559159bfe1e3b94df3a657b2cda3a34e218
2018-02-22 18:45:19 -05:00
Szabolcs NagyandRich Felker 709bbf5175 sys/socket.h: add PF_SMC from linux v4.11
add AF_SMC and PF_SMC for the IBM shared memory communication protocol.
new in linux commit ac7138746e14137a451f8539614cdd349153e0c0
(linux socket.h is not in uapi so this update was missed earlier)
2018-02-22 18:45:16 -05:00
Szabolcs NagyandRich Felker 249b621f9e better configure check for long double support 2018-02-07 15:43:33 -05:00
Szabolcs NagyandRich Felker 72656157f5 fix fgetwc when decoding a character that crosses buffer boundary
Update the buffer position according to the bytes consumed into st when
decoding an incomplete character at the end of the buffer.
2017-11-18 20:11:08 -05:00
Szabolcs NagyandRich Felker 13935337f3 s390x: use generic ioctl.h
s390 can use the generic ioctls definitions other than FIOQSIZE (like arm).

this fixes some missing ioctls and two incorrect ones:
TIOCTTYGSTRUCT and TIOCM_MODEM_BITS seem to be defined on frv
target only in linux.
2017-11-05 18:43:51 -05:00
Szabolcs NagyandRich Felker 4dc44ce8e2 microblaze: add statx syscall from linux v4.13
statx number is allocated for microblaze in linux commit
f5ef419630e85e80284cd0256cb5a13a66bbd6c5
2017-11-05 18:41:29 -05:00
Szabolcs NagyandRich Felker ffd048a07b aarch64: add extra_context struct from linux v4.13
allows expanding the signal frame beyond the 4k reserved space.
new in linux commit 33f082614c3443d937f50fe936f284f62bbb4a1b
2017-11-05 18:41:27 -05:00
Szabolcs NagyandRich Felker 6651ef1f06 add new tcp.h socket options from linux v4.13
TCP_ULP is new in linux commit 734942cc4ea6478eed125af258da1bdbb4afe578
TCP_MD5SIG_EXT is new in 8917a777be3ba566377be05117f71b93a5fd909d
2017-11-05 18:41:26 -05:00
Szabolcs NagyandRich Felker 14ced22830 add new fcntl.h macros from linux v4.13
for getting/setting write lifetime hints fcntl commands were
added in linux commit c75b1d9421f80f4143e389d2d50ddfc8a28c8c35

added under _GNU_SOURCE || _BSD_SOURCE, since RWH_* life time
hints are not in the POSIX reserved namespace.
2017-11-05 18:41:24 -05:00
Szabolcs NagyandRich Felker 754f66afb7 ioctl TIOCGPTPEER from linux v4.13
added for safe opening of peer end of pty in a mount namespace.
new in linux commit c6325179238f1d4683edbec53d8322575d76d7e2
2017-11-05 18:41:22 -05:00
Szabolcs NagyandRich Felker c35a8bf456 add SO_ getsockopt options from linux v4.13
SCM_TIMESTAMPING_PKTINFO is new in aad9c8c470f2a8321a99eb053630ce0e199558d6
SO_PEERGROUPS is new in 28b5ba2aa0f55d80adb2624564ed2b170c19519e
2017-11-05 18:41:21 -05:00
Szabolcs NagyandRich Felker 5daaed6a0e s390x: add syscall number for s390_guarded_storage from linux v4.12
new syscall in linux commit 916cda1aa1b412d7cf2991c3af7479544942d121
2017-11-05 18:41:19 -05:00
Szabolcs NagyandRich Felker 2dc6760f3c i386: add arch_prctl syscall number from linux v4.12
syscall for i386 compat mode on x86_64 for non-x86_64 prctls.
new in linux commit 79170fda313ed5be2394f87aa2a00d597f8ed4a1
2017-11-05 18:41:18 -05:00
Szabolcs NagyandRich Felker 840d45bebd aarch64: add new HWCAP_* flags from linux v4.12
hwcap bits for armv8.3 extensions, added in linux commits
c8c3798d2369e4285da44b244638eafe446a8f8a
cb567e79fa504575cb97fb2f866d2040ed1c92e7
c651aae5a7732287c1c9bc974ece4ed798780544
2017-11-05 18:41:16 -05:00
Szabolcs NagyandRich Felker 4c81122711 add ARPHDR_VSOCKMON from linux v4.12
new in linux commit 531b374834c891ae2abf800693074df35a7d1a36
2017-11-05 18:41:14 -05:00
Szabolcs NagyandRich Felker 54f04d9991 add new SO_ socket options from linux v4.12
SO_MEMINFO added in linux commit a2d133b1d465016d0d97560b11f54ba0ace56d3e
SO_INCOMING_NAPI_ID added in 6d4339028b350efbf87c61e6d9e113e5373545c9
SO_COOKIE added in 5daab9db7b65df87da26fd8cfa695fb9546a1ddb
2017-11-05 18:41:13 -05:00
Szabolcs NagyandRich Felker 9864f60e92 add statx syscall numbers from linux v4.11
statx was added in linux commit a528d35e8bfcc521d7cb70aaf03e1bd296c8493f
(there is no libc wrapper yet and microblaze and sh misses the number).
2017-11-05 18:41:11 -05:00
Szabolcs NagyandRich Felker c519658cea add TCP_NLA_* enums from linux v4.11
two new stats for SCM_TIMESTAMPING_OPT_STATS, added in linux commit
7e98102f489775d8c000884fca8a0d995ea688a9
2017-11-05 18:41:09 -05:00
Szabolcs NagyandRich Felker ee3ae7827b add TCP_FASTOPEN_CONNECT tcp socket option from linux v4.11
new in linux commit 19f6d3f3c8422d65b5e3d2162e30ef07c6e21ea2
2017-11-05 18:41:08 -05:00
Szabolcs NagyandRich Felker 3eb82f7338 add ETH_P_IBOE from linux v4.11
new in linux commit 69ae543969abeba48e04dd93277684c8c0895f3b
2017-11-05 18:41:06 -05:00
Szabolcs NagyandRich Felker bd1560f6eb update aarch64 hwcap.h for linux v4.11
new hwcap bits were added in kernel commits
77c97b4ee21290f5f083173d957843b615abbff2
f92f5ce01ee6a6a86cbfc4e3b0d18529c302b1ea
2017-11-05 18:41:04 -05:00
Szabolcs NagyandRich Felker cee73f0c10 add kexec_file_load syscall number on powerpc from linux v4.10
added in linux commit 80f60e509a03ff9ff2bdbf9cd1e935c6360b8bd9
2017-11-05 18:41:02 -05:00
Szabolcs NagyandRich Felker 8f56955713 add microblaze syscall numbers from linux v4.10
missing syscalls got allocated on microblaze.
2017-11-05 18:41:00 -05:00
Szabolcs NagyandRich Felker d800403032 add TFD_TIMER_CANCEL_ON_SET that timerfd.h was missing
linux commit 575b1967e10a1f3038266244d2c7a3ca6b99fed8 moved timerfd
apis to a new uapi header which showed musl was missing this flag.
2017-11-05 18:40:58 -05:00
Szabolcs NagyandRich Felker f5638c22e3 add ETH_MIN_MTU and ETH_MAX_MTU from linux v4.10
min max mtu size definitions mostly for drivers.
new in linux commits a52ad514fdf3b8a57ca4322c92d2d8d5c6182485 and
d894be57ca92c8a8819ab544d550809e8731137b
2017-11-05 18:40:53 -05:00
Szabolcs NagyandRich Felker 013696918b add IP_RECVFRAGSIZE and IPV6_RECVFRAGSIZE from linux v4.10
added in linux commit 70ecc24841326396a827deb55c3fefac582a729d
2017-11-05 18:39:29 -05:00
Szabolcs NagyandRich Felker 5c596ed867 add SCM_TIMESTAMPING_OPT_STATS and related TCP_ enums from linux v4.10
for tcp timestamp control messages, new in linux commit
1c885808e45601b2b6f68b30ac1d999e10b6f606
and export time measurements via tcp_info, added in linux commit
efd90174167530c67a54273fd5d8369c87f9bd32
2017-11-05 18:39:25 -05:00
Szabolcs NagyandRich Felker 907476925f math: rewrite fma with mostly int arithmetics
the freebsd fma code failed to raise underflow exception in some
cases in nearest rounding mode (affects fmal too) e.g.

  fma(-0x1p-1000, 0x1.000001p-74, 0x1p-1022)

and the inexact exception may be raised spuriously since the fenv
is not saved/restored around the exact multiplication algorithm
(affects x86 fma too).

another issue is that the underflow behaviour when the rounded result
is the minimal normal number is target dependent, ieee754 allows two
ways to raise underflow for inexact results: raise if the result before
rounding is in the subnormal range (e.g. aarch64, arm, powerpc) or if
the result after rounding with infinite exponent range is in the
subnormal range (e.g. x86, mips, sh).

to avoid all these issues the algorithm was rewritten with mostly int
arithmetics and float arithmetics is only used to get correct rounding
and raise exceptions according to the behaviour of the target without
any fenv.h dependency. it also unifies x86 and non-x86 fma.

fmaf is not affected, fmal need to be fixed too.

this algorithm depends on a_clz_64 and it required a few spurious
instructions to make sure underflow exception is raised in a particular
corner case. (normally FORCE_EVAL(tiny*tiny) would be used for this,
but on i386 gcc is broken if the expression is constant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57245
and there is no easy portable fix for the macro.)
2017-10-13 22:30:45 -04:00
Szabolcs NagyandRich Felker c10bc61508 powerpc{64}: fix MAP_NORESERVE and MAP_LOCKED in mman.h
MAP_{NORESERVE,LOCKED} have different values on powerpc than in generic.
2017-09-11 14:06:27 -04:00
Szabolcs NagyandRich Felker 822dddfbf1 make syscall.h consistent with linux
most of the found naming differences don't matter to musl, because
internally it unifies the syscall names that vary across targets,
but for external code the names should match the kernel uapi.

aarch64:
	__NR_fstatat is called __NR_newfstatat in linux.
	__NR_or1k_atomic got mistakenly copied from or1k.
arm:
	__NR_arm_sync_file_range is an alias for __NR_sync_file_range2
	__NR_fadvise64_64 is called __NR_arm_fadvise64_64 in linux,
	the old non-arm name is kept too, it should not cause issues.
	(powerpc has similar nonstandard fadvise and it uses the
	normal name.)
i386:
	__NR_madvise1 was removed from linux in commit
	303395ac3bf3e2cb488435537d416bc840438fcb 2011-11-11
microblaze:
	__NR_fadvise, __NR_fstatat, __NR_pread, __NR_pwrite
	had different name in linux.
mips:
	__NR_fadvise, __NR_fstatat, __NR_pread, __NR_pwrite, __NR_select
	had different name in linux.
mipsn32:
	__NR_fstatat is called __NR_newfstatat in linux.
or1k:
	__NR__llseek is called __NR_llseek in linux.
	the old name is kept too because that's the name musl uses
	internally.
powerpc:
	__NR_{get,set}res{gid,uid}32 was never present in powerpc linux.
	__NR_timerfd was briefly defined in linux but then got renamed.
2017-09-06 19:29:25 -04:00
Szabolcs NagyandRich Felker 8459c6f264 arm: add HWCAP_ARM_ hwcap macros
Glibc renamed the linux uapi HWCAP_* macros to HWCAP_ARM_*
so have both variants in case some code depends on it.
(The HWCAP2_ macros are not defined in glibc currently so those
only have the linux uapi variant.)
2017-08-29 22:16:19 -04:00
Szabolcs NagyandRich Felker 06fbefd100 add a_clz_64 helper function
counts leading zero bits of a 64bit int, undefined on zero input.
(has nothing to do with atomics, added to atomic.h so target specific
helper functions are together.)

there is a logarithmic generic implementation and another in terms of
a 32bit a_clz_32 on targets where that's available.
2017-08-29 21:47:10 -04:00
Szabolcs NagyandRich Felker 3356177979 s390x: add bits/hwcap.h
aligned with linux arch/s390/include/asm/elf.h
(these macros should be exported into uapi, but they are not)
2017-08-29 21:40:35 -04:00
Szabolcs NagyandRich Felker cc08669380 add SIOCGSTAMPNS socket ioctl macro to ioctl.h
it is defined in linux asm/sockios.h since commit
ae40eb1ef30ab4120bd3c8b7e3da99ee53d27a23 (linux v2.6.22)
but was missing from musl by accident.

in musl the sockios macros are exposed in sys/ioctl.h together
with other ioctl requests instead of in sys/socket.h because of
namespace rules. (glibc has them in sys/socket.h under _GNU_SOURCE.)
2017-08-29 19:48:37 -04:00
Szabolcs NagyandRich Felker 02b50c9d0a fix mips ioctl macros to match linux asm/sockios.h 2017-08-29 19:48:35 -04:00
Szabolcs NagyandRich Felker e6def54435 fix arm run-time abi string functions
in arm rtabi these __aeabi_* functions have special abi (they are
only allowed to clobber r0,r1,r2,r3,ip,lr,cpsr), so they cannot
be simple wrappers around normal string functions (which may
clobber other registers), the safest solution is to write them in
asm, a minimalistic implementation works because these are not
supposed to be emitted by compilers or used in general.
2017-06-22 18:34:06 -04:00
Szabolcs NagyandRich Felker 8c44a06024 fix scalbn when result is in the subnormal range
in nearest rounding mode scalbn could introduce double rounding error
when an intermediate value and the final result were both in the
subnormal range e.g.

  scalbn(0x1.7ffffffffffffp-1, -1073)

returned 0x1p-1073 instead of 0x1p-1074, because the intermediate
computation got rounded to 0x1.8p-1023.

with the fix an intermediate value can only be in the subnormal range
if the final result is 0 which is correct even after double rounding.
(there still can be two roundings so signals may be raised twice, but
that's only observable with trapping exceptions which is not supported.)
2017-04-21 17:31:00 -04:00
Szabolcs NagyandRich Felker 54807d47ac aarch64: add single instruction math functions
this should increase performance and reduce code size on aarch64.

the compiled code was checked against using __builtin_* instead
of inline asm with gcc-6.2.0.

lrint is two instructions.

c with inline asm is used because it is safer than a pure asm
implementation, this prevents ll{rint,round} to be an alias
of l{rint,round} (because the types don't match) and depends
on gcc style inline asm support.

ceil, floor, round, trunc can either raise inexact on finite
non-integer inputs or not raise any exceptions. the new
implementation does not raise exceptions while the generic
c code does.

on aarch64, the underflow exception is signaled before rounding
(ieee 754 allows both before and after rounding, but it must be
consistent), the generic fma c code signals it after rounding
so using single instruction fixes a slight conformance issue too.
2017-03-21 12:39:18 -04:00
Szabolcs NagyandRich Felker 8cba1dc46c fix threshold constants in j0f, y0f, j1f, y1f
partly following freebsd rev 279491
https://svnweb.freebsd.org/base?view=revision&revision=279491
(musl had some of the fixes before freebsd).

the change should not matter much for j0f, y0f, but it improves
j1f and y1f in [2.5,~3.75] (that is [0x40200000,~0x40700000]).
near roots (e.g. around 3.8317 for j1f) there are still large
ulp errors.

dropped code that tried to raise inexact.
2017-03-15 00:15:28 -04:00