Commit Graph

118 Commits

Author SHA1 Message Date
Tony Ambardar
cc6a1e2abc
toolchain/musl: add support for renameat2()
Backport an upstream patch to support the renameat2 syscall, added in Linux
3.15 and supported by glibc since 2.28. It is commonly used in filesystem
or security contexts, and needed building upstream kernel bpf selftests.

Link:
https://inbox.vuxu.org/musl/20240421153640.379015-1-Tony.Ambardar@gmail.com/

Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/15697
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2024-06-13 14:16:32 +02:00
Weijie Gao
197d90dc31 toolchain/musl: fix loongarch64 ldso file name
GCC has changed musl dynamic linker name from
ld-musl-loongarch-lp64d.so.1 to ld-musl-loongarch64.so.1 recently [1].

This means there are two dynamic linker names will be used across different
ersions of GCC. But musl 1.2.5 only supports the new name while the GCC
we're currently using uses the old name.

To maintain compatibility with all versions of GCC, the musl is then patched
to generate two symbolic links to libc.so with both old and new names.

[1] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=8bccee51f0deac64b79cd9ad75df599422f4c8ff

Signed-off-by: Weijie Gao <hackpascal@gmail.com>
2024-05-04 14:12:56 +08:00
Hannu Nyman
87d7fa8885 toolchain/musl: Update to 1.2.5
Update musl C library to 1.2.5

This release adds extension functions statx and preadv2/pwritev2,
with fallback implementations for older kernels, and adds two new
ports: loongarch64 and riscv32. Minor changes to the printf family
of functions have been made for conformance to new standards
interpretations/requirements. TLSDESC support for riscv64 has also
been added.

Bugs fixed include some DNS issues related to new TCP fallback
functionality, several rare race conditions, potentially incorrect
return value when glob aborts, and several signifiant arch-specific
bugs affecting TLSDESC on arm, riscv64 icache flushing, and
sh sigsetjmp and dlsym RTLD_NEXT.

1.2.5 release notes:

new features:
- statx function (linux extension; via syscall and fallback using fstatat)
- clone function is now usable and gives _Fork-like consistency in child
- statvfs now provides f_type result
- preadv2 and pwritev2 (linux extension) syscall wrappers
- riscv64 TLSDESC support

new ports:
- loongarch64
- riscv32

compatibility:
- DNS resolver can now handle answers with long CNAME chains
- string.h no longer provides (C23-incompat) non-prototype decl of basename
- fstatat statx backend now matches stat syscall non-automounting behavior
- mntent interfaces now handle escaped whitespace in paths/options

standards updates:
- printf %lc of nul wchar now produces output
- snprintf and swprintf no longer fail on n > INT_MAX
- ppoll is now exposed in default feature profile

bugs fixed:
- some long DNS answers were wrongly rejected despite new TCP support
- glob could wrongly return GLOB_NOMATCH if aborted before any matches
- multithreaded set*id could malfunction from thread sequencing logic bug
- certain use of threads after fork could deadlock thread-list lock
- posix_spawn child could deadlock in race with async parent death
- mbrtowc return value was wrong if argument n exceeded UINT_MAX
- 80-bit extended acoshl and powl got some corner cases wrong
- syslog incorrectly generated localized timestamps

arch-specific bugs fixed:
- arm (32-bit) TLSDESC malfunctioned due to addends being processed wrong
- riscv64 icache flush operation was non-functional
- sh sigsetjmp failed to properly restore call-saved register r8 on return
- sh dlsym RTLD_NEXT did not identify calling module correctly

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
[Removed patch adding basename hack again]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-04-14 17:38:09 +02:00
Arne Zachlod
6631599344
toolchain: musl: add PKG_CPE_ID
Vulnerabilities of musl libc are tracked as
cpe:/a:musl-libc:musl

Signed-off-by: Arne Zachlod <arne@nerdkeller.org>
2023-09-14 22:39:20 +02:00
Linhui Liu
fff878c5bc
toolchain/musl: update to 1.2.4
Release notes:

new features:
- large dns record lookups via tcp fallback
- new getaddrinfo EAI_NODATA result to distinguish NODATA/NxDomain
- support for new RELR compressed format for relative relocations
- sysconf keys for querying signal stack size requirements
- real vfork on riscv64

performance:
- mallocng no longer uses MADV_FREE (high performance cost, little gain)
- vdso clock_gettime is supported once again on 32-bit arm

compatibility:
- gethostbyname family now distinguishes NO_DATA from HOST_NOT_FOUND
- res_send now works with caller-provided edns0 queries
- arpa/nameser.h RR types list is now up-to-date
- previously-missing POSIX confstr keys have been added
- mntent interfaces now accept missing fields
- alt signal stack, if any, is now used for internal signals
- the LFS64 macros are no longer exposed without _LARGEFILE64_SOURCE
- memmem (POSIX-future) is now exposed in default feature profile
- pthread_atfork now admits calls from an application-provided malloc
- debugger tracking of shared libraries now works on MIPS PIE binaries
- sendmsg now supports up to SCM_MAX_FD fds in SCM_RIGHTS messages

bugs fixed:
- gethostbyname[2]_r wrongly returned nonzero (error) on negative result
- parallel v4/v6 address queries could fail on query id collisions
- spurious getaddrinfo/AI_ADDRCONFIG failures due to errno clobbering
- dns search domains ending in dot (including lone dot) broke lookups
- ipv6 servers in resolv.conf broke lookups on systems with v6 disabled
- systems with bindv6only failed to query both v4 and v6 nameservers
- res_mkquery mishandled consecutive final dots in name
- res_send could malfunction for very small answer buffer sizes
- resolver dns backend accepted answers with wrong (A vs AAAA) RR type
- getservbyport_r returned junk or ENOENT (vs ERANGE) on buffer size errors
- dns result parsing of malformed responses could process uninitialized data
- freopen didn't reset stream orientation (byte/wide) & encoding rule
- fwprintf didn't print most fields on open_wmemstream FILEs
- wide printf %lc ignored field width
- wide printf erroneously processed %n after encoding errors
- use of wide printf %9$ argument slot overflowed undersized buffer
- swprintf malfunctioned on nul character in output
- strverscmp ordered digit sequences vs nondigits incorrectly
- timer_create/SIGEV_THREAD failure leaked the thread
- semaphores were subject to missed-wake under certain usage patterns
- several possible rare deadlocks with lock handling at thread exit
- several possible rare deadlocks with aio and multithreaded fork
- dynamic linker relro processing was broken on archs w/variable pagesize
- async cancellation could run cancellation handlers in invalid context
- pthread_detach was wrongly a cancellation point in rare race code path
- use-after-close/double-close errors in mq_notify error paths
- mq_notify event thread wrongly ran with signals unmasked
- wcs{,n}cmp, wmemcmp returned wrong results when difference overflowed
- accept4, pipe2, and dup3 handled unknown flags wrong in fallback cases
- CPU_SETSIZE macro had wrong unit
- select fallback for pre-time64 kernels truncated timeout (vs clamping)

arch-specific bugs fixed:
- x32 new socketcalls took fallback path due to pointer sign extension
- x32 wait4 didn't fill rusage structure (time64 regression)
- x32 semtimedop mismatched timespec ABI with kernel (time64 regression)
- sigaction signal mask was bogus on or1k, microblaze, mips, and riscv
- powerpc-sf longjmp asm clobbered value argument
- or1k poll function passed timeout to syscall in wrong form

Removed upstreamed:
- 800-mips_pie_debug.patch
Manually rebased:
- 600-nftw-support-common-gnu-extension.patch

Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
2023-05-15 20:39:17 +02:00
Andre Heider
4d384d28e4 toolchain/musl: remove libgcc_initial hack
This reverts r15599 [0].

This was added to fix an uclibc rebuild issue, but since uclibc
isn't supported anymore [Fixes:] this can be removed.

[0] https://git.openwrt.org/?p=openwrt/svn-archive/archive.git;a=commitdiff;h=016a052efeee6bc2da3f501a8c66b5aea20350b4

Fixes: 63fb1752 "toolchain: remove uClibc-ng"
Signed-off-by: Andre Heider <a.heider@gmail.com>
2023-02-19 19:44:39 +01:00
Hauke Mehrtens
fcdd407e8e toolchain: musl: Fix symbol loading in gdb
Fix DT_DEBUG handling on MIPS in musl libc.
With this change gdb will load the symbol files for shared libraries on MIPS too.

This patch was taken from this thread: https://www.openwall.com/lists/musl/2022/01/09/4

Signed-off-by: Hauke Mehrtens <hmehrtens@maxlinear.com>
2023-01-22 02:00:35 +01:00
Hauke Mehrtens
685ae2687b toolchain: musl: Update to version 1.2.3
Changes:
new features:
- qsort_r function (POSIX-future)
- pthread_getname_np extension function
- hard float on SPE FPU for powerpc-sf
- SEEK_DATA and SEEK_HOLE exposed in unistd.h (Linux extensions)

compatibility:
- free now preserves errno (POSIX-future requirement)
- setjmp is declared explicitly with returns_twice for non-GCC compilers
- macro version of isascii is no longer defined for C++
- dynamic linker now tolerates zero-length LOAD segments
- epoll_[p]wait is now a cancellation point
- pwd/grp functions no longer fail on systems without AF_UNIX support
- POSIX TZ parsing is stricter to allow more names to fallback to files
- NULL is now defined as nullptr when used in C++11 or later
- gettext now accepts null pointer as argument

bugs fixed:
- old regression in wcwidth of Hangul combining (vowel/final) letters
- duplocale used wrong malloc when malloc was replaced (1.2.2 regression)
- fmaf rounded wrong on archs without FE_TOWARDZERO (all softfloat archs)
- popen didn't honor requirement not to leak other popen pipe fds to child
- aligned_alloc and variants crashed on allocation failure
- dl_iterate_phdr reported incorrect module TLS pointers
- mishandling of some inputs in acoshf and expm1f and functions using them
- potentially wrong-sign zero in cproj functions at infinity
- multiple bugs in legacy function cuserid
- minor posix_spawn file actions API conformance issues
- pthread_setname_np fd leak
- out-of-bound read in zoneinfo handling with distant-past times
- out-of-tree builds lacked generated debug cfi for x86 asm

arch-specific bugs fixed:
- powerpc (32-bit) struct shmid_ds layout was wrong for some fields
- time64 struct layout was wrong in sound ioctl fallback (32-bit archs)

In addition it contains the following improvements:
* protect stack canary from leak via read-as-string by zeroing second byte
* fix excessively slow TLS performance on some mips models

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Rui Salvaterra <rsalvaterra@gmail.com>
Tested-by: Rui Salvaterra <rsalvaterra@gmail.com>
Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2022-04-11 21:41:03 +02:00
Petr Štetiar
6676875579 toolchain: musl: disable crypt size hack by default
Enable this option and thus re-include crypt() support for the SHA256,
SHA512 and Blowfish ciphers on all devices. According to commit
9365745f8e ("musl: add a hack to remove unused crypt() algorithms,
saves ~14k after lzma") it should add about ~14k to the resulting image,
which seems to be a reasonable size increase for consistent crypt()
support.

Decided to not remove this hack completely as it might be still useful
for people trying to fit custom images onto smaller devices and the
patch is rather simple so we can afford to keep it for now.

References: https://github.com/openwrt/openwrt/pull/1331
Signed-off-by: Petr Štetiar <ynezz@true.cz>
2021-12-27 11:26:32 +01:00
Hauke Mehrtens
71e96532df toolchain/musl: Remove extra format attribute patch
This patch never went upstream so remove it. GCC should already add such
a check to the common functions.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-09-22 19:04:02 +02:00
Rosen Penev
b519be1c52 toolchain/musl: remove several GNU headers
Remove GLOB_ONLYDIR patch. Only fstools relies on it. fstools has been
fixed separately.

Remove woresize.h file. It seems to be for an old version of GCC.

Remove features.h and glibc-types files. Same as above.

Remove sys/cdefs.h. This is a deprecated header. Patches to fix packages
that use it have already been patched.

Tested with all packages in the base tree. They all compile.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-09-22 19:04:02 +02:00
Rosen Penev
aaec2ad13b toolchain/musl: update to 1.2.2
This release introduces 64-bit time_t, which is needed to avoid the
year 2038 problem.

Remove upstream patches. Refreshed others.

Rebased features.h file based on latest musl.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-09-22 19:04:02 +02:00
Hauke Mehrtens
a44a2f9e93 toolchain: musl: refresh patches
Refresh the musl patches

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2020-12-02 23:38:42 +01:00
Petr Štetiar
4d4ef1058c musl: handle wcsnrtombs destination buffer overflow (CVE-2020-28928)
The wcsnrtombs function in all musl libc versions up through 1.2.1 has
been found to have multiple bugs in handling of destination buffer
size when limiting the input character count, which can lead to
infinite loop with no forward progress (no overflow) or writing past
the end of the destination buffera.

This function is not used internally in musl and is not widely used,
but does appear in some applications. The non-input-limiting form
wcsrtombs is not affected.

All users of musl 1.2.1 and prior versions should apply the attached
patch, which replaces the overly complex and erroneous implementation.
The upcoming 1.2.2 release will adopt this new implementation.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
2020-11-20 13:24:48 +01:00
Tony Ambardar
735947229c musl: add common glibc extention for nftw
Add FTW_ACTIONRETVAL mode and update nftw library for walking file trees.
Update needed to build bpftool userspace utility from Linux kernel source.

Also increment PKG_RELEASE.

Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
2020-08-31 12:23:59 +01:00
Alexander Couzens
69e7d14e1b
musl: use official release tar
To prevent "wrong" musl packages which have a new version number
but the package still contains an old version, because
PKG_SOURCE_VERSION was unchanged.

Ref: musl ml https://www.openwall.com/lists/musl/2020/05/22/4

Reviewed-by: Petr Štetiar <ynezz@true.cz>
Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
2020-06-14 02:42:21 +02:00
Matthias Schiffer
afea16b8f7
musl: restore lock skipping for mostly-singlethreaded programs, and related patches
The remainder of the patch series proposed by upstream [2] for the locking
synchronization issue [1].

[1] https://www.openwall.com/lists/musl/2020/05/22/3
[2] https://www.openwall.com/lists/musl/2020/05/22/10

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2020-05-26 23:45:17 +02:00
Matthias Schiffer
10c211031c
musl: fix locking synchronization bug
Import proposed upstream fix [2] for the critical locking
synchronization bug recently found in musl [1].

This affects all programs that are temporarily multithreaded, but then
return to single-threaded operation.

[1] https://www.openwall.com/lists/musl/2020/05/22/3
[2] https://www.openwall.com/lists/musl/2020/05/22/10

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2020-05-26 23:45:16 +02:00
Koen Vandeputte
4d5b62263c toolchain/musl: bump to version 1.1.24
1.1.24 release notes

new features:
- GLOB_TILDE extension to glob
- non-stub catgets localization API, using netbsd binary catalog format
- posix_spawn file actions for [f]chdir (extension, pending future standard)
- secure_getenv function (extension)
- copy_file_range syscall wrapper (Linux extension)
- header-level support for new linux features in 5.2

performance:
- new fast path for lrint (generic C version) on 32-bit archs

major internal changes:
- functions involving time are overhauled to be time64-ready in 32-bit archs
- x32 uses the new time64 code paths to replace nasty hacks in syscall glue

compatibility & conformance:
- support for powerpc[64] unaligned relocation types
- powerpc[64] and sh sys/user.h no longer clash with kernel asm/ptrace.h
- select no longer modifies timeout on failure (or at all)
- mips64 stat results are no longer limited to 32-bit time range
- optreset (BSD extension) now has a public declaration
- support for clang inconsistencies in wchar_t type vs some 32-bit archs
- mips r6 syscall asm no longer has invalid lo/hi register clobbers
- vestigial asm declarations of __tls_get_new are removed (broke some tooling)
- riscv64 mcontext_t mismatch glibc's member naming is corrected

bugs fixed:
- glob failed to match broken symlinks consistently
- invalid use of interposed calloc to allocate initial TLS
- various dlsym symbol resolution logic errors
- semctl with SEM_STAT_ANY didn't work
- pthread_create with explicit scheduling was subject to priority inversion
- pthread_create failure path had data race for thread count
- timer_create with SIGEV_THREAD notification had data race getting timer id
- wide printf family failed to support l modifier for float formats

arch-specific bugs fixed:
- x87 floating point stack imbalance in math asm (i386-only CVE-2019-14697)
- x32 clock_adjtime, getrusage, wait3, wait4 produced junk (struct mismatches)
- lseek broken on x32 and mipsn32 with large file offsets
- riscv64 atomics weren't compiler barriers
- riscv64 atomics had broken asm constraints (missing earlyclobber flag)
- arm clone() was broken when compiled as thumb if start function returned
- mipsr6 setjmp/longjmp did not preserve fpu register state correctly

Refreshed all patches.
Removed upstreamed.

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2019-10-15 16:11:28 +02:00
Hauke Mehrtens
c262daf308 musl: Fix CVE-2019-14697
musl libc through 1.1.23 has an x87 floating-point stack adjustment
imbalance, related to the math/i386/ directory. In some cases, use of
this library could introduce out-of-bounds writes that are not present
in an application's source code.

This problem only affects x86 and no other architectures.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2019-08-18 23:41:06 +02:00
Luiz Angelo Daros de Luca
0d0617ff14 musl: ldso/dlsym: fix mips returning undef dlsym
This happens only the second time a library is loaded by dlopen().
After lib1 is loaded, dlsym(lib1,"undef1") correctly resolves the undef
symbol from lib1 dependencies. After the second library is loaded,
dlsym(lib2,"undef1") was returning the address of "undef1" in lib2
instead of searching lib2 dependencies.

Using upstream fix which now uses the same logic for relocation time
and dlsym.

Fixes 

Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
2019-08-17 16:57:32 +02:00
Koen Vandeputte
ed6139eb25 toolchain/musl: bump to version 1.1.23
new features:
- riscv64 port
- configure now allows customizing AR and RANLIB vars
- header-level support for new linux features in 5.1

major internal changes:
- removed extern __syscall; syscall header code is now fully self-contained

performance:
- new math library implementation for log/exp/pow
- aarch64 dynamic tlsdesc function is streamlined

compatibility & conformance:
- O_TTY_INIT is now defined
- sys/types.h no longer pollutes namespace with sys/sysmacros.h in any profile
- powerpc asm is now compatible with clang internal assembler

changes for new POSIX interpretations:
- fgetwc now sets stream error indicator on encoding errors
- fmemopen no longer rejects 0 size

bugs fixed:
- static TLS for shared libraries was allocated wrong on "Variant I" archs
- crash in dladdr reading through uninitialized pointer on non-match
- sigaltstack wrongly errored out on invalid ss_size when doing SS_DISABLE
- getdents function misbehaved with buffer length larger than INT_MAX
- set*id could deadlock after fork from multithreaded process

arch-specfic bugs fixed:
- s390x SO_PEERSEC definition was wrong
- passing of 64-bit syscall arguments was broken on microblaze
- posix_fadvise was broken on mips due to missing 7-arg syscall support
- vrregset_t layout and member naming was wrong on powerpc64

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2019-07-31 16:51:46 +02:00
Christian Lamparter
75be34528d toolchain: musl: switch to https instead of git
Daniel Engberg requested switching over to https transport
since he seems to be stuck behind a corporate firewall that
does all the wrong things.

Rick Felker noted that this is "experimental and might break".
<https://www.openwall.com/lists/musl/2019/03/27/1>.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2019-06-22 13:17:47 +02:00
Koen Vandeputte
82625374ee toolchain/musl: update to version 1.1.22
new features:
- priority-inheritance mutexes
- membarrier syscall, pre-registration to use it, fallback emulation
- header-level support for new linux features in 4.19, 4.20, 5.0

major internal changes:
- complete, async-safe view of all existent threads as global list
- robust __synccall based on new thread list
- new dynamic TLS is installed synchronously at dlopen
- TLSDESC resolver functions no longer make bad ABI assumptions to call C
- resolved shared library dependencies are now recorded

compatibility & conformance:
- dependency-order shared library constructor execution
- sigaltstack no longer rejects SS_AUTODISARM, future flags
- FILE is now a complete (dummy) type in pre-C11 feature profiles
- setvbuf reports failure on invalid arguments
- TSVTX is exposed unconditionally in tar.h
- multithreaded set*id() no longer depends on /proc
- key slot reuse after pthread_key_delete no longer depends on /proc

bugs fixed:
- failures in multithreaded set*id() with concurrent thread creation/exit
- interposed free was called from invalid/inconsistent contexts
- freeaddrinfo performed invalid free of some partial results lists
- dlsym dependency order search had false negatives and false positives
- dn_skipname gave wrong results for labels with 8-bit content
- dcngettext clobbered errno, often breaking printing of error messages
- sscanf read past end of buffer under certain conditions (1.1.21 regression)
- pthread_key_create spuriously failed under race condition (1.1.21 regression)
- fdopendir wrongly succeeded with O_PATH file descriptors
- gets behaved incorrectly in presence of null bytes
- namespace violations in c11 tsd and mutex function dependencies
- incorrect prototype for makecontext (unimplemented)

arch-specfic bugs fixed:
- s390x had wrong values for POSIX_FADV_DONTNEED/_NOREUSE

Extensively tested on dozens of devices, covering most popular architectures.

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
Signed-off-by: Dainis Jonitis <dainis.jonitis@ubnt.com>
Signed-off-by: Roman Yeryomin <roman@advem.lv>
2019-04-23 13:29:04 +02:00
Christian Lamparter
917e6d772c toolchain/musl: update to version 1.1.21
<https://www.openwall.com/lists/musl/2019/01/21/8>
"This release makes improvements with respect to default thread stack
size, including increasing the default from 80k to 128k, increasing
the default guard size from 4k to 8k, and allowing the default to be
increased via ELF headers so that programs that need larger stacks can
be build without source-level changes, using just LDFLAGS.
Insufficient stack size for AIO threads on kernels that don't honor
the constant MINSIGSTKSZ is also fixed.

The glob core has been rewritten to fix inability to see past
searchable-but-unreadable path components, and to avoid excessive
stack usage and unnecessary syscalls. The tsearch AVL tree
implementation has also been rewritten for better size and
performance. The math library adds more native single-instruction
implementations for arm, s390x, powerpc, and x86_64.

Various bugs are fixed, including several possible deadlocks, one of
which was a new regression in 1.1.20."

detailed release notes can be found in the WHATSNEW file:
<http://git.musl-libc.org/cgit/musl/tree/WHATSNEW#n1989>

Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2019-02-05 19:35:40 +01:00
Jo-Philipp Wich
ceb625439a musl: improve crypt() size hack
Instead of silently downgrading any non-MD5 crypt() request to DES,
cleanly fail with return NULL and errno = ENOSYS. This allows callers
to notice the missing support instead of the unwanted silent fallback
to DES.

Also add a menuconfig toolchain option to optionally disable the crypt
size hack completely. This can be probably made dependant on SMALL_FLASH
or a similar feature indicator in a future commit.

Ref: https://github.com/openwrt/openwrt/pull/1331
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2019-01-22 12:08:03 +01:00
Daniel Engberg
d27d87c910 toolchain/musl: Don't override optimization set by upstream
Don't override optimization set by upstream.
Provides a speed increase for internal (library), malloc and string
operations in musl.

Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
[add : to PKG_RELEASE release variable for consistency]
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
2018-10-20 14:22:56 +01:00
Christian Lamparter
1801e60390 toolchain/musl: update to version 1.1.20
This release introduces the ability to replace/interpose the allocator
(malloc) subject to certain restrictions, adds an experimental m68k
port, and makes notable improvements to stdio (application-provided
buffers), getaddrinfo (AI_ADDRCONFIG, support for IPv4-only kernel
configurations), the dynamic linker (safety against dlopen of
libraries using initial-exec TLS model, reclaiming unused memory on
FDPIC archs, better dladdr results), and handling of default thread
stack size (pthread_setattr_default_np now works more reliably).

Many bugs have been fixed, including potentially dangerous regressions
in iconv (only for new conversions to legacy encodings) and visibly
incorrect behavior in printf on non-x86 archs (%a format with
precision specifier), in getopt_long_only when short options are a
prefix for a long option, in complex arc-trig/hyperbolic functions, in
strftime and mktime (timezone-specific issues), and numerous
less-obvious places.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
[altered commit msg a bit keeping it tight]
Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2018-09-21 13:25:08 +02:00
Matthias Schiffer
4b50854a60
musl: sys/socket.h: fix SO_PEERSEC value on MIPS
Differing from all other archs supported by musl, MIPS defines SO_PEERSEC
to 30 instead of 31.

Patch has also been submitted upstream.

Reported-by: Andrey Jr. Mlenikov <temnota.am@gmail.com>
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2018-06-24 17:24:53 +02:00
Hauke Mehrtens
87606e25af musl: update to version 1.1.19
This updates musl from a commit between 1.1.18 and 1.1.19 to the final
release of the version 1.1.19.
This mostly fixes bugs in musl.

The size of the uncompressed binary is increased by about 4 KB.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2018-03-11 23:42:38 +01:00
Felix Fietkau
074fa8dfe4 musl: move BUILD_DIR_TOOLCHAIN/musl symlink to configure step
Avoids Build/Prepare quilt related hacks

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2018-01-25 10:54:14 +01:00
Felix Fietkau
13a5cb9d2b musl: allow autorebuild
Autorebuild is disabled for the toolchain to avoid build-order issues.
However, rebuilding musl is safe, so exclude it from that restriction.
Avoids the need for manual cleaning on kernel header <-> libc API
changes like the ones introduced recently

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2018-01-25 10:54:14 +01:00
Hauke Mehrtens
4336efe14b kernel: use upstream patches for musl
This replaces the current patches used to make the kernel headers
compatible with musl with the version which was accepted upstream. This
is included in upstream kernel 4.15.
This was compile tested with iproute2 build on all supported kernel
versions with musl and one one with glibc.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2018-01-20 22:11:33 +01:00
Christian Lamparter
6b175b7cd6 toolchain: musl: update to current HEAD
Changes:

72656157 fix fgetwc when decoding a character that crosses buffer boundary
a223dbd2 add reverse iconv mappings for JIS-based encodings
105eff9d generalize iconv framework for 8-bit codepages
a71b46cf fix malloc state corruption when ldso rejects loading a second libc
d060edf6 reformat cjk iconv tables to be diff-friendly, match tool output
c21051e9 prevent fork's errno from being clobbered by atfork handlers
a39f20bf add iso-2022-jp support (decoding only) to iconv
5b546faa add iconv framework for decoding stateful encodings
0df5b39a simplify/optimize iconv utf-8 case
9eb6dd51 handle ascii range individually in each iconv case
bff59d13 move iconv_close to its own translation unit
79f49eff refactor iconv conversion descriptor encoding/decoding
30fdda6c fix getaddrinfo error code for non-numeric service with AI_NUMERICSERV
67b29947 fix mismatched type of __pthread_tsd_run_dtors weak definition
13935337 s390x: use generic ioctl.h
4dc44ce8 microblaze: add statx syscall from linux v4.13
ffd048a0 aarch64: add extra_context struct from linux v4.13
6651ef1f add new tcp.h socket options from linux v4.13
14ced228 add new fcntl.h macros from linux v4.13
754f66af ioctl TIOCGPTPEER from linux v4.13
c35a8bf4 add SO_ getsockopt options from linux v4.13
5daaed6a s390x: add syscall number for s390_guarded_storage from linux v4.12
2dc6760f i386: add arch_prctl syscall number from linux v4.12
840d45be aarch64: add new HWCAP_* flags from linux v4.12
4c811227 add ARPHDR_VSOCKMON from linux v4.12
54f04d99 add new SO_ socket options from linux v4.12
9864f60e add statx syscall numbers from linux v4.11
c519658c add TCP_NLA_* enums from linux v4.11
ee3ae782 add TCP_FASTOPEN_CONNECT tcp socket option from linux v4.11
3eb82f73 add ETH_P_IBOE from linux v4.11
bd1560f6 update aarch64 hwcap.h for linux v4.11
cee73f0c add kexec_file_load syscall number on powerpc from linux v4.10
8f569557 add microblaze syscall numbers from linux v4.10
d8004030 add TFD_TIMER_CANCEL_ON_SET that timerfd.h was missing
f5638c22 add ETH_MIN_MTU and ETH_MAX_MTU from linux v4.10
01369691 add IP_RECVFRAGSIZE and IPV6_RECVFRAGSIZE from linux v4.10
5c596ed8 add SCM_TIMESTAMPING_OPT_STATS and related TCP_ enums from linux v4.10
6fc6ca1a adjust posix_spawn dup2 action behavior to match future requirements

Cc: Syrone Wong <wong.syrone@gmail.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2017-12-08 19:54:21 +01:00
Felix Fietkau
981be0c3bd toolchain/musl: update to version 1.1.18
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-11-09 12:35:31 +01:00
Koen Vandeputte
c56448e2cf musl: update to 1.1.16+ git HEAD 2017-08-30
Fixes critical issues for memset() & fflush()

Changes:

5f7efb8 move IPPORT_RESERVED from netdb.h to netinet/in.h
5f3b652 add powerpc64 and s390x to list of supported archs in INSTALL
file
9d4c902 fix undefined behavior in memset due to missing sequence points
c7f56b4 __init_libc: add fallbacks for __progname setup
cc08669 add SIOCGSTAMPNS socket ioctl macro to ioctl.h
02b50c9 fix mips ioctl macros to match linux asm/sockios.h
670d6d0 fix unsynchronized access to FILE structure in fflush(0)

Tested on cns3xxx & imx6

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2017-08-31 19:09:47 +02:00
Koen Vandeputte
af0a93391b musl: bump to latest 1.1.16+ git HEAD
Changes:

1698fe6 fix build failure for sh4a due to missing colon in asm statement
80bf595 trap UB from attempts to join a detached thread
e31c8c2 ppc64: fix setjmp/longjmp handling of TOC pointer
52cf5c1 qsort: add a short comment about the algorithm
dc2f368 disable global visibility override hack (vis.h) by default
947d330 add _NL_LOCALE_NAME extension to nl_langinfo
a08910f fix missing volatile qualifier on lock in __get_locale
2e6e084 remove ineffective compiler assist from printf
bc42dcb fix undefined behavior in ptrace
d906fa3 unify the use of FUTEX_PRIVATE
60ab365 fix undefined behavior in free
f688884 reapply va_arg hacks removal to wprintf
bd00cc8 remove useless declarations in string.h
f3055e0 allow specifying argv[0] when invoking a program via ldso
command
43c423a fix regression in dlopen promotion from RTLD_LOCAL to
RTLD_GLOBAL
66b53cf ldso: avoid spurious & possible erroneous work for libs with no
deps
94f7441 powerpc64: add single-instruction math functions
9d12a6a fix clang CFLAGS checks and silence unused argument warnings
ce385fc s390x: add single-instruction math functions
e6def54 fix arm run-time abi string functions
91d34c4 fix regression in getspnam[_r] error code for insufficient
buffer size
5948bc1 fix omission of microblaze user.h definitions
b7bfb5c fix iconv conversions for iso88592-iso885916
64f8558 handle errors from localtime_r in ctime_r
2d7d05f set errno when getpw*_r, getgr*_r, and getspnam_r fail
5c10c33 handle localtime errors in ctime
1c86c7f handle mremap failure in realloc of mmap-serviced allocations
1080008 getdate: correctly specify error number
af05173 catopen: set errno to EOPNOTSUPP
84eff79 fix glob failure to match plain "/" to root directory
bc313e8 use hard-coded sh4a atomic opcodes to avoid linker errors on sh
179766a towupper/towlower: fast path for ascii chars
1c49700 remove long-obsolete clang workarounds from mips* syscall_arch.h
files
4073f03 fix fstatat syscall on mips64
81f4a12 fix fchown fallback on arches without chown(2)
97bd6b0 fix iconv conversions to legacy 8bit encodings
f9f686b have posix_spawnattr_setflags check for supported flags
77e895d add no-op POSIX_SPAWN_USEVFORK to spawn.h
5555041 s390x: provide sigcontext struct definition
bb439bb implement new posix_spawn flag POSIX_SPAWN_SETSID
58e2396 remove va_arg hacks in printf core with undefined behavior
e1232f5 make ttyname[_r] return ENODEV rather than ENOENT
1a7fa5e fix regression in support for resolv.conf attempts option
8c44a06 fix scalbn when result is in the subnormal range
2577b1b allow full-range file offsets to mmap on archs with 64-bit
syscall args
b3751c3 fix dl_iterate_phdr in static PIE binaries
1ca5975 fix read past end of buffer in getaddrinfo backend
54807d4 aarch64: add single instruction math functions
b6e1fe0 fix strptime output for %C without %y
834ef7a fix processing of strptime %p format
85dfab7 fix off-by-one in strptime %j
9571c53 regex: fix newline matching with negated brackets
e6917ec increase limit on locale name length from 15 to 23 bytes
e4fc9ad search locale name variants for gettext translations
16319a5 make setlocale return a single name for LC_ALL if all categories
match
0c53178 fix dlopen/dlsym regression opening libs already loaded at
startup
dbff2bb fix POSIX-format TZ dst transition times for southern hemisphere
74bca42 s390x: fix fpreg_t and remove unused per_struct
a393d5c precalculate gnu hash rather than doing it lazily in find_sym
inner loop
8cba1dc fix threshold constants in j0f, y0f, j1f, y1f
cb52539 remove unused refcnt field for shared libraries
c49d3c8 avoid loading of multiple libc versions via explicit pathname
3ec8b3a fix one-byte overflow in legacy getpass function
733d1ea fix wide scanf's use of a compound literal past its lifetime
6a209f1 fix possible fd leak, unrestored cancellation state on dns
socket fail
500f5be in static dl_iterate_phdr, fix use of possibly-uninitialized aux
data
6582baa fix free of uninitialized buffer pointer on error in regexec
6476b81 emulate lazy relocation as deferrable relocation
4823b13 reorder addend handling before symbol lookup in relocation code
4ff234f rework ldso handling of global symbol table for consistency
c9783e4 treat STB_WEAK and STB_GNU_UNIQUE like STB_GLOBAL in find_sym
fc85fb3 fix ld-behavior-dependent crash in ppc64 ldso startup
827c4e6 fix lsearch and lfind to pass key as first arg to the compar
callback
0a4a16d allow page size to vary on arm
b261a24 fix build regression in arm atomics asm with new binutils
9201c3a s390x: implement dlsym
d6601f0 avoid unbounded strlen in gettext functions
dbbb373 fix use of uninitialized pointer in gettext core
01e6bbe fix bindtextdomain logic error deactivating other domains
6894f84 fix spurious EINTR errors from multithreaded set*id, etc.
1f53e7d fix crashes in x32 __tls_get_addr
27b3fd6 fix crash from corrupted tls module list after failed dlopen
809ff8c treat base 1 as an error in strtol-family functions
786fda8 fix getopt[_long] clobbering of optopt on success
150747b reduce impact of REG_* namespace pollution in x86[_64] signal.h

Tested on cns3xxx & imx6

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
Signed-off-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
2017-08-30 17:05:10 +02:00
Felix Fietkau
38fcd2a865 build: remove libc version config code
We only support one version per libc type

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-02-11 15:37:55 +01:00
Felix Fietkau
43332f513b toolchain/musl: parallelize make install
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-02-09 14:49:33 +01:00
Christian Lamparter
a8a5cb9595 musl: update musl to 1.1.16+ and switch to download from git
This patch updates musl to 1.1.16+ [0] and removes all the
backported patches. This is a major release and tagged as such.
For more information visit musl-libc.org or read the WHATSNEW.

Furthermore, this patch also changes musl to download directly
from git. This makes it easier to update musl in the future.

The patch custom Add-format-attribute-to-some-function-declarations.patch
was assigned a new 400- number. This should avoid confusion
since 0xx numbers are usually assigned to backports.

[0] <http://git.musl-libc.org/cgit/musl/commit/?id=769f53598e781ffc89191520f3f8a93cb58db91f>

Cc: Hannu Nyman <hannu.nyman@iki.fi>
Cc: Koen Vandeputte <koen.vandeputte@ncentric.com>
Cc: Jo-Philipp Wich <jo@mein.io>
Cc: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
2017-01-16 20:40:00 +01:00
Koen Vandeputte
4c4047ec19 musl: refresh patches
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2016-12-26 11:17:33 +01:00
Koen Vandeputte
2912f9f2a2 musl: backport various post-1.1.15 fixes
Backport most important fixes up to latest HEAD

- Taken post-commit reverts/fixes into account

Compile tested
Run-tested on cns3xxx & imx6 targets

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2016-12-26 11:17:33 +01:00
Koen Vandeputte
b97c933ffb musl: rename a custom backport patch
Ensure there is room in the numbering for next patches

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2016-12-26 11:17:33 +01:00
Felix Fietkau
720b99215d treewide: clean up download hashes
Replace *MD5SUM with *HASH, replace MD5 hashes with SHA256

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-12-16 22:39:22 +01:00
Hannu Nyman
671cb35880 musl: fix parsing of quoted time zone names
fix parsing of the < > quoted time zone names. Compare the correct
character instead of repeatedly comparing the first character.

Patch has been submitted to upstream as
http://www.openwall.com/lists/musl/2016/10/24/3

Longer explanation in
http://www.openwall.com/lists/musl/2016/10/19/1

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
[Jo-Philipp Wich: move references into commit message, shorten title prefix]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-10-31 12:55:27 +01:00
Hauke Mehrtens
3e5b50a8a7 musl: remove sh3 workaround
The GCC bug 67260 is fixed upstream now, remove this workaround.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2016-07-13 23:04:21 +02:00
Hauke Mehrtens
9816d2f5f5 musl: update musl to version 1.1.15
The removed patch is already integrated in upstream musl.
Add one additional patch which fixes a regression on mips.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2016-07-13 23:04:19 +02:00
Felix Fietkau
74c9b9cfeb toolchain: skip gcc/minimal for musl
No extra libc header build step is done, so no extra toolchain is needed
for preparing it.
This saves a significant amount of build time and disk space

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-07-07 15:13:40 +02:00
Felix Fietkau
7eeb254cc4 treewide: replace nbd@openwrt.org with nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-06-07 08:58:42 +02:00
Felix Fietkau
fb0fcf9ae2 musl: update to latest git, adds some fixes for the mips64 port and regular expressions
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48957
2016-03-07 21:00:49 +00:00