3748 Commits

Author SHA1 Message Date
Szabolcs Nagy
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 Nagy
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 Nagy
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 Nagy
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 Nagy
4c81122711 add ARPHDR_VSOCKMON from linux v4.12
new in linux commit 531b374834c891ae2abf800693074df35a7d1a36
2017-11-05 18:41:14 -05:00
Szabolcs Nagy
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 Nagy
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 Nagy
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 Nagy
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 Nagy
3eb82f7338 add ETH_P_IBOE from linux v4.11
new in linux commit 69ae543969abeba48e04dd93277684c8c0895f3b
2017-11-05 18:41:06 -05:00
Szabolcs Nagy
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 Nagy
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 Nagy
8f56955713 add microblaze syscall numbers from linux v4.10
missing syscalls got allocated on microblaze.
2017-11-05 18:41:00 -05:00
Szabolcs Nagy
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 Nagy
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 Nagy
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 Nagy
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
JF Bastien
dafacbdab0
Merge pull request #20 from jfbastien/strchr
[WebAssembly] Fix bug in wasm.js version of strchr
2017-11-05 15:14:32 -08:00
Rich Felker
6fc6ca1a32 adjust posix_spawn dup2 action behavior to match future requirements
the resolution to Austin Group issue #411 defined new semantics for
the posix_spawn dup2 file action in the (previously useless) case
where src and dest fd are equal. future issues will require the dup2
file action to remove the close-on-exec flag. without this change,
passing fds to a child with posix_spawn while avoiding fd-leak races
in a multithreaded parent required a complex dance with temporary fds.

based on patch by Petr Skocik. changes were made to preserve the
80-column formatting of the function and to remove code that became
unreachable as a result of the new functionality.
2017-11-05 17:26:48 -05:00
Sam Clegg
e7fb361e60 [WebAssembly] Fix bug in wasm.js version of strchr 2017-11-03 17:46:28 -07:00
JF Bastien
c6232b8dc2
Merge pull request #18 from sbc100/build_init
[WebAssembly] Allow weak symbols when building libc.a for wasm
2017-11-02 15:50:16 -07:00
Rich Felker
eb03bde2f2 release 1.1.18 2017-10-31 15:13:58 -04:00
Sam Clegg
f7a3ac80ec [WebAssembly] Allow weak symbols when build libc.a for wasm 2017-10-30 17:38:35 -07:00
Sam Clegg
319abd03d4
Add --dump-ffi-symbols argument to wasm.js (#5)
This allows a list of all symbols exports by wasm.js to be
generated which is usefull for passing to my prototype of
lld which takes an --allow-undefined-symbols=<filename>
argument.
2017-10-30 17:37:48 -07:00
JF Bastien
b99a1f3ec9
Merge pull request #14 from sbc100/build_more
[WebAssembly] Build more of musl with libc.py
2017-10-27 17:00:29 -07:00
Sam Clegg
a7161e9449 [WebAssembly] Exclude less in libc.py 2017-10-27 14:39:51 -07:00
JF Bastien
0aad8ad1e7 Merge pull request #16 from sbc100/remove_lib
[WebAssembly] Remove existing library before creating it with 'ar'
2017-10-26 21:23:45 -07:00
Sam Clegg
012c04aa2b [WebAssembly] Remove existing library before creating it with 'ar' 2017-10-26 19:20:10 -07:00
Rich Felker
1b9406b03c fix build regression on ARM for ISA levels less than v5
commit 06fbefd10046a0fae7e588b7c6d25fb51811b931 (first included in
release 1.1.17) introduced this regression.

patch by Adrian Bunk. it fixes the regression in all cases, but
spuriously prevents use of the clz instruction on very old compiler
versions that don't define __ARM_ARCH. this may be fixed in a more
general way at some point in the future. it also omits thumb1 logic
since building as thumb1 code is currently not supported.
2017-10-25 11:54:16 -04:00
Rich Felker
ec04d122f1 fix regression in glob with literal . or .. path component
commit 8c4be3e2209d2a1d3874b8bc2b474668fcbbbac6 was written to
preclude the GLOB_PERIOD extension from matching these directory
entries, but also precluded literal matches.

adjust the check that excludes . and .. to check whether the
GLOB_PERIOD flag is in effect, so that it cannot alter behavior in
cases governed by the standard, and also don't exclude . or .. in any
case where normal glob behavior (fnmatch's FNM_PERIOD flag) would have
included one or both of them (patterns such as ".*").

it's still not clear whether this is the preferred behavior for
GLOB_PERIOD, but at least it's clear that it can no longer break
applications which are not relying on quirks of a nonstandard feature.
2017-10-21 12:32:16 -04:00
JF Bastien
46cf4c8640 Merge pull request #11 from sbc100/add_letf2
[WebAssembly] Add llvm builting '__letf2' to wasm.js
2017-10-20 16:46:44 -07:00
JF Bastien
a70eb07ccb Merge pull request #12 from sbc100/alltypes
[WebAssembly] Updaet alltypes.h.in
2017-10-20 16:46:33 -07:00
JF Bastien
da23f3c611 Merge pull request #13 from sbc100/fix_make_install
[WebAssembly] Fix 'make install'
2017-10-20 16:46:15 -07:00
Sam Clegg
96aea19aae [WebAssembly] Updaet alltypes.h.in 2017-10-20 16:21:39 -07:00
Sam Clegg
6caecad2bc [WebAssembly] Fix 'make install' 2017-10-20 16:06:38 -07:00
Sam Clegg
addf7f9215 [WebAssembly] Add llvm builting '__letf2' to wasm.js 2017-10-20 13:33:55 -07:00
JF Bastien
47c33a50c1 Merge pull request #10 from sbc100/enable_wasm_make
[WebAssembly] Enable building with 'make' command
2017-10-19 18:44:01 -07:00
Sam Clegg
94500fb127 [WebAssembly] Enable building with 'make' command
This change enables all of the .c sources in musl
be built with the clang -target wasm32-unknown-unknown-wasm
2017-10-19 17:42:50 -07:00
Will Dietz
004dc9549b posix_spawn: use larger stack to cover worst-case in execvpe
execvpe stack-allocates a buffer used to hold the full path
(combination of a PATH entry and the program name)
while searching through $PATH, so at least
NAME_MAX+PATH_MAX is needed.

The stack size can be made conditionally smaller
(the current 1024 appears appropriate)
should this larger size be burdensome in those situations.
2017-10-19 19:04:16 -04:00
Rich Felker
2cd663fb2d release 1.1.17 2017-10-19 15:39:01 -04:00
Rich Felker
45ca5d3fcb in dns parsing callback, enforce MAXADDRS to preclude overflow
MAXADDRS was chosen not to need enforcement, but the logic used to
compute it assumes the answers received match the RR types of the
queries. specifically, it assumes that only one replu contains A
record answers. if the replies to both the A and the AAAA query have
their answer sections filled with A records, MAXADDRS can be exceeded
and clobber the stack of the calling function.

this bug was found and reported by Felix Wilhelm.
2017-10-18 14:50:03 -04:00
Rich Felker
5b5eb527c5 fix incorrect base name offset from nftw when pathname ends in slash(es)
the rightmost '/' character is not necessarily the delimiter before
the basename; it could be a spurious trailing character on the
directory name.

this change does not introduce any normalization of pathnames or
stripping of trailing slashes, contrary to at least glibc and perhaps
other implementations; it jusst prevents their presence from breaking
things. whether further changes should be made is an open question
that may depend on conformance and/or application compatibility
considerations.

based loosely on patch by Joakim Sindholt.
2017-10-13 23:08:21 -04:00
Rich Felker
c1e27367a9 fix read-after-free type error in pthread_detach
calling __unlock on t->exitlock is not valid because __unlock reads
the waiters count after making the atomic store that could allow
pthread_exit to continue and unmap the thread's stack and the object t
points to. for now, inline the __unlock logic with an unconditional
futex wake operation so that the waiters count is not needed.

once __lock/__unlock have been made safe for self-synchronized
destruction, we could switch back to using them.
2017-10-13 23:00:34 -04:00
Szabolcs Nagy
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
Rich Felker
b3516058eb for executing init array functions, use function type with prototype
this is for consistency with the way it's done in in the dynamic
linker, avoiding a deprecated C feature (non-prototype function
types), and improving code generation. GCC unnecessarily uses the
variadic calling convention (e.g. clearing rax on x86_64) when making
a call where the argument types are not known for compatibility with
wrong code which calls variadic functions this way. (C on the other
hand is clear that such calls have undefined behavior.)
2017-10-13 10:39:51 -04:00
Rich Felker
e364774d7c fix access by setjmp and longjmp to __hwcap on arm built as thumb2
this is a subtle issue with how the assembler/linker work. for the adr
pseudo-instruction used to find __hwcap, the assembler in thumb mode
generates a 16-bit thumb add instruction which can only represent
word-aligned addresses, despite not knowing the alignment of the
label. if the setjmp function is assigned a non-multiple-of-4 address
at link time, the load then loads from the wrong address (the last
instruction rather than the data containing the offset) and ends up
reading nonsense instead of the value of __hwcap. this in turn causes
the checks for floating-point/vector register sets (e.g. IWMMX) to
evaluate incorrectly, crashing when setjmp/longjmp try to save/restore
those registers.

fix based on bug report by Felix Hädicke.
2017-10-13 10:28:52 -04:00
Rich Felker
48be5b6313 fix use of memset without declaration in sched.h cpu set macros
patch by Jörg Krause.
2017-09-28 12:57:06 -04:00
Szabolcs Nagy
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
Rich Felker
da438ee1fc work around incorrect EPERM from mmap syscall
under some conditions, the mmap syscall wrongly fails with EPERM
instead of ENOMEM when memory is exhausted; this is probably the
result of the kernel trying to fit the allocation somewhere that
crosses into the kernel range or below mmap_min_addr. in any case it's
a conformance bug, so work around it. for now, only handle the case of
anonymous mappings with no requested address; in other cases EPERM may
be a legitimate error.

this indirectly fixes the possibility of malloc failing with the wrong
errno value.
2017-09-06 22:15:14 -04:00
Rich Felker
8c4be3e220 fix glob descent into . and .. with GLOB_PERIOD
GLOB_PERIOD is a gnu extension, and GNU glob does not seem to honor it
except in the last path component. it's not clear whether this a bug
or intentional, but it seems reasonable that it should exclude the
special entries . and .. when walking.

changes based on report and analysis by Julien Ramseier.
2017-09-06 21:59:22 -04:00