* [Buildroot] [PATCH] package/uclibc: bump to 1.0.59
@ 2026-08-08 12:52 Waldemar Brodkorb
2026-08-08 15:06 ` Julien Olivain via buildroot
0 siblings, 1 reply; 2+ messages in thread
From: Waldemar Brodkorb @ 2026-08-08 12:52 UTC (permalink / raw)
To: buildroot
Changes made in this release:
Ben Wolsieffer (1):
nptl: fix getting main stack size on no-MMU
Max Filippov (4):
stdio: fix %a formatting of inf and nan
stdio: fix radix point output for %a
stdio: output sign with NaNs
stdio: restrict first digit of %a output to 0 or 1
Ramin Moussavi (19):
libintl.h: route stubs through format_arg inlines; fix gettext_noop
build: scope .NOTPARALLEL to locale targets only, restore parallel build
limits.h: define PAGE_SIZE/PAGESIZE like musl, fixing the gdb build
wait4: fall back to waitid(2) at runtime when wait4 returns ENOSYS
pagesize: restore PAGE_SHIFT fallback for binfmt_flat (no auxv)
buildsys: build locale headers in-tree, not via a recursive sub-make
extra/locale: skip locales the build host cannot provide
csky: fix struct semid_ds layout for TIME64
csky: make __kernel_uid_t/__kernel_gid_t 32-bit
hppa: fix inotify/signalfd/timerfd flag values
hppa: do not set IPC_64 for the SysV IPC *ctl commands
x86: fix struct semid_ds layout for TIME64
i386: add CFI to __libc_i386_syscall6 for cancellation unwinding
i386: do not set IPC_64 for the SysV IPC *ctl commands on 5.1+ kernels
buildsys: terminate .eh_frame in shared objects
m68k: make the __jmp_buf layout match what setjmp.S actually saves
inet: use the direct accept4 syscall when __NR_accept is missing
m68k: implement atomic operations with the CAS instruction
libc: fix struct shmid_ds layout for TIME64
Waldemar Brodkorb (10):
netinet/in.h: sync with glibc
bits/fcntl-linux.h: sync with glibc
add copy_file_range syscall wrapper
sys/fanotify.h: drop include to fix c-sky compilation
adjtimex: fix for architectures lacking __NR_clock_adjtime, f.e. frv
sys/user.h: restore required macros
netinet/tcp.h: sync with glibc
loongarch: add basic static only support
riscv: setcontext: fix linking error
bump version for 1.0.59 release
ramin (16):
ldso: harden _dl_tls_get_addr_soft against an unusable DTV
microblaze: implement atomic operations with lwx/swx
ldso: microblaze: add missing addend to R_MICROBLAZE_TLSDTPREL32
ldso: make the _dl_tls_get_addr_soft DTV check microblaze-specific
microblaze: fix struct semid_ds layout for TIME64
m68k: fix struct semid_ds layout for TIME64
mips: fix fallocate() 64-bit argument passing on n32
mips: fix mmap64() for large offsets on n32
mips: fix setjmp() on n32/n64 (.cpreturn, not .cprestore)
mips: always set IPC_64 for the SysV IPC *ctl commands
libc: fix struct msqid_ds layout for TIME64 on all common-header arches
linuxthreads: fix SIGSEGV in MIPS cancellable wrappers (waitpid, nanosleep)
ldso: serialize dl_iterate_phdr to fix concurrent unwind hang on SMP
nptl: cancel the current thread directly instead of via SIGCANCEL
mips: only n32/n64 always need IPC_64, not o32
m68k: use the kernel cmpxchg helper for atomics on ColdFire
Patch 0001 is applied upstream and is removed here.
Fixes:
- https://autobuild.buildroot.net/results/2bd/2bd73b0060cad4f44649ffe4ea60c4775160d86e
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
---
...-PAGE_SHIFT-fallback-for-binfmt_flat.patch | 169 ------------------
package/uclibc/uclibc.hash | 4 +-
package/uclibc/uclibc.mk | 2 +-
3 files changed, 3 insertions(+), 172 deletions(-)
delete mode 100644 package/uclibc/0001-pagesize-restore-PAGE_SHIFT-fallback-for-binfmt_flat.patch
diff --git a/package/uclibc/0001-pagesize-restore-PAGE_SHIFT-fallback-for-binfmt_flat.patch b/package/uclibc/0001-pagesize-restore-PAGE_SHIFT-fallback-for-binfmt_flat.patch
deleted file mode 100644
index fdfd286042..0000000000
--- a/package/uclibc/0001-pagesize-restore-PAGE_SHIFT-fallback-for-binfmt_flat.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From 7730f0d05a51cd89a7123bd696e4638c3c035d7b Mon Sep 17 00:00:00 2001
-From: Ramin Moussavi <ramin.moussavi@yacoub.de>
-Date: Fri, 29 May 2026 19:47:34 +0200
-Subject: [PATCH] pagesize: restore PAGE_SHIFT fallback for binfmt_flat (no
- auxv)
-
-binfmt_flat builds the initial process stack from only argc/argv/envp;
-it does not place an auxiliary vector. Commit 487af1498 ("drop
-__pagesize, make _dl_pagesize the single source of truth") assumed
-AT_PAGESZ is always supplied by the kernel and changed the _dl_pagesize
-fallback from PAGE_SIZE to 0. On noMMU/FLAT targets that leaves
-_dl_pagesize == 0, so every mmap-based malloc rounds its length to 0,
-mmap() fails with EINVAL and the first allocation aborts -- busybox dies
-with "init: out of memory" before it can run anything.
-
-Restore the fallback that arc/nds32 bits/uClibc_page.h have always
-documented ("_dl_pagesize = auxvt[AT_PAGESZ].a_un.a_val ? : PAGE_SIZE"),
-expressed as (1UL << PAGE_SHIFT) so it keeps working now that PAGE_SIZE
-is no longer defined in <bits/uClibc_page.h>:
-
- - Seed _dl_pagesize with (1UL << PAGE_SHIFT) at its definition in the
- two translation units that own the symbol: the dynamic linker
- (ldso.c, used by ld.so) and the static-libc support (dl-support.c).
- - Override it from AT_PAGESZ only when that entry is actually present
- (a_type == AT_PAGESZ) and non-zero, instead of unconditionally
- resetting it to 0.
-
-libdl.c (!SHARED) previously also defined _dl_pagesize. That was
-harmless while dl-support.c's definition was tentative (the two merged),
-but giving both a non-zero initializer makes them two strong .data
-definitions, which collide as "multiple definition of `_dl_pagesize'"
-when a static link pulls both objects out of libc.a (e.g. NPTL builds
-that drag in libdl). Drop the redundant libdl.c definition: dl-support.c
-is always co-linked from libc.a and provides the symbol.
-
-For FLAT, skip the aux-vector scan in __uClibc_main() altogether: there
-is nothing valid past the envp NULL, so _dl_aux_init() is not called and
-_dl_auxv_start stays NULL. Guard getauxval()'s slow-path loop against
-that NULL so a lookup of an uncached (>= AUX_MAX_AT_ID) tag returns
-ENOENT instead of dereferencing NULL.
-
-Verified on riscv32 noMMU/FLAT (gcc 15.2.0, linux 6.18.33): busybox
-boots as init and the testsuite runs (was "init: out of memory"
-before). Dynamic + NPTL links are unaffected -- x86_64 NPTL static
-busybox links cleanly and ld-uClibc loads the testsuite.
-
-Upstream: https://gogs.waldemar-brodkorb.de/oss/uclibc-ng/commit/7730f0d05a51cd89a7123bd696e4638c3c035d7b
-Signed-off-by: Ramin Moussavi <ramin.moussavi@yacoub.de>
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
----
- ldso/ldso/ldso.c | 7 ++++---
- ldso/libdl/libdl.c | 2 +-
- libc/misc/auxvt/getauxval.c | 3 ++-
- libc/misc/elf/dl-support.c | 7 ++++---
- libc/misc/internals/__uClibc_main.c | 7 +++++--
- 5 files changed, 16 insertions(+), 10 deletions(-)
-
-diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
-index 9c00e4a61..55f7d7e45 100755
---- a/ldso/ldso/ldso.c
-+++ b/ldso/ldso/ldso.c
-@@ -52,7 +52,7 @@ char *_dl_library_path = NULL; /* Where we look for libraries */
- char *_dl_preload = NULL; /* Things to be loaded before the libs */
- #endif
- int _dl_errno = 0; /* We can't use the real errno in ldso */
--size_t _dl_pagesize = 0; /* Store the page size for use later */
-+size_t _dl_pagesize = (1UL << PAGE_SHIFT); /* fallback; overridden from AT_PAGESZ if present */
- struct r_debug *_dl_debug_addr = NULL; /* Used to communicate with the gdb debugger */
- void *(*_dl_malloc_function) (size_t size) = NULL;
- void (*_dl_free_function) (void *p) = NULL;
-@@ -460,8 +460,9 @@ void *_dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
-
- _dl_memset(app_tpnt, 0, sizeof(*app_tpnt));
-
-- /* Store the page size for later use */
-- _dl_pagesize = (_dl_auxvt[AT_PAGESZ].a_un.a_val) ? (size_t) _dl_auxvt[AT_PAGESZ].a_un.a_val : 0;
-+ /* Override the fallback only if AT_PAGESZ is present and non-zero */
-+ if (_dl_auxvt[AT_PAGESZ].a_type == AT_PAGESZ && _dl_auxvt[AT_PAGESZ].a_un.a_val)
-+ _dl_pagesize = (size_t) _dl_auxvt[AT_PAGESZ].a_un.a_val;
- /* Make it so _dl_malloc can use the page of memory we have already
- * allocated. We shouldn't need to grab any more memory. This must
- * be first since things like _dl_dprintf() use _dl_malloc()...
-diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c
-index b78d6d9a3..f28801d7b 100644
---- a/ldso/libdl/libdl.c
-+++ b/ldso/libdl/libdl.c
-@@ -109,7 +109,7 @@ void (*_dl_free_function) (void *p);
- char *_dl_library_path = NULL; /* Where we look for libraries */
- #endif
- int _dl_errno = 0; /* We can't use the real errno in ldso */
--size_t _dl_pagesize = 0; /* Store the page size for use later */
-+/* _dl_pagesize is provided by dl-support.c (always co-linked from libc.a) */
- /* This global variable is also to communicate with debuggers such as gdb. */
- struct r_debug *_dl_debug_addr = NULL;
-
-diff --git a/libc/misc/auxvt/getauxval.c b/libc/misc/auxvt/getauxval.c
-index 7610b7e5c..4af637071 100755
---- a/libc/misc/auxvt/getauxval.c
-+++ b/libc/misc/auxvt/getauxval.c
-@@ -33,7 +33,8 @@ unsigned long int __getauxval (unsigned long int __type)
- }
-
- // Otherwise we have to iterate the auxiliary vector.
-- for (ElfW(auxv_t) *entry = _dl_auxv_start; entry->a_type != AT_NULL; entry++)
-+ // _dl_auxv_start is NULL when there is no aux vector (e.g. FLAT).
-+ for (ElfW(auxv_t) *entry = _dl_auxv_start; entry && entry->a_type != AT_NULL; entry++)
- if (entry->a_type == __type)
- return entry->a_un.a_val;
-
-diff --git a/libc/misc/elf/dl-support.c b/libc/misc/elf/dl-support.c
-index 738f0ed3a..7ad57c090 100644
---- a/libc/misc/elf/dl-support.c
-+++ b/libc/misc/elf/dl-support.c
-@@ -30,7 +30,7 @@ void (*_dl_init_static_tls) (struct link_map *) = &_dl_nothread_init_static_tls;
-
- ElfW(Phdr) *_dl_phdr;
- size_t _dl_phnum;
--size_t _dl_pagesize;
-+size_t _dl_pagesize = (1UL << PAGE_SHIFT); /* fallback; overridden from AT_PAGESZ if present */
-
- ElfW(auxv_t) _dl_auxvt[AUX_MAX_AT_ID];
- ElfW(auxv_t) *_dl_auxv_start;
-@@ -52,8 +52,9 @@ void internal_function _dl_aux_init (ElfW(auxv_t) *av)
- /* Get the number of program headers from the aux vect */
- _dl_phnum = (size_t) _dl_auxvt[AT_PHNUM].a_un.a_val;
-
-- /* Get the pagesize from the aux vect */
-- _dl_pagesize = (_dl_auxvt[AT_PAGESZ].a_un.a_val) ? (size_t) _dl_auxvt[AT_PAGESZ].a_un.a_val : 0;
-+ /* Override the fallback only if AT_PAGESZ is present and non-zero */
-+ if (_dl_auxvt[AT_PAGESZ].a_type == AT_PAGESZ && _dl_auxvt[AT_PAGESZ].a_un.a_val)
-+ _dl_pagesize = (size_t) _dl_auxvt[AT_PAGESZ].a_un.a_val;
- }
-
- #if defined(USE_TLS) && USE_TLS
-diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
-index 35cb73fcc..549606505 100644
---- a/libc/misc/internals/__uClibc_main.c
-+++ b/libc/misc/internals/__uClibc_main.c
-@@ -369,7 +369,7 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
- char **argv, void (*app_init)(void), void (*app_fini)(void),
- void (*rtld_fini)(void), void *stack_end attribute_unused)
- {
--#ifndef SHARED
-+#if !defined(SHARED) && !defined(__UCLIBC_FORMAT_FLAT__)
- unsigned long *aux_dat;
- #endif
-
-@@ -395,7 +395,9 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
- }
-
- #ifndef SHARED
-- /* Pull stuff from the ELF header when possible */
-+# ifndef __UCLIBC_FORMAT_FLAT__
-+ /* Pull stuff from the ELF header when possible. binfmt_flat passes no
-+ aux vector, so skip this for FLAT. */
- aux_dat = (unsigned long*)__environ;
- while (*aux_dat) {
- aux_dat++;
-@@ -404,6 +406,7 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
- /* Get the program headers (_dl_phdr) from the aux vector
- It will be used into __libc_setup_tls. */
- _dl_aux_init ((ElfW(auxv_t) *)aux_dat);
-+# endif
- #endif
-
- /* We need to initialize uClibc. If we are dynamically linked this
---
-2.47.3
-
diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash
index 4c2a579ddf..4e5fd587e2 100644
--- a/package/uclibc/uclibc.hash
+++ b/package/uclibc/uclibc.hash
@@ -1,4 +1,4 @@
-# From https://downloads.uclibc-ng.org/releases/1.0.58/uClibc-ng-1.0.58.tar.xz.sha256
-sha256 9e8100a442f7079b9728ca286e3035f67df0578606166ea2d1ef865a4a12ddb9 uClibc-ng-1.0.58.tar.xz
+# From https://downloads.uclibc-ng.org/releases/1.0.59/uClibc-ng-1.0.59.tar.xz.sha256
+sha256 86c6f15971bfb14156850f2e36906dac5a69df7b3e688216d1aea09d2db54174 uClibc-ng-1.0.59.tar.xz
# Locally calculated
sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB
diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
index 6f3668715b..0cee106014 100644
--- a/package/uclibc/uclibc.mk
+++ b/package/uclibc/uclibc.mk
@@ -4,7 +4,7 @@
#
################################################################################
-UCLIBC_VERSION = 1.0.58
+UCLIBC_VERSION = 1.0.59
UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz
UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION)
UCLIBC_LICENSE = LGPL-2.1+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Buildroot] [PATCH] package/uclibc: bump to 1.0.59
2026-08-08 12:52 [Buildroot] [PATCH] package/uclibc: bump to 1.0.59 Waldemar Brodkorb
@ 2026-08-08 15:06 ` Julien Olivain via buildroot
0 siblings, 0 replies; 2+ messages in thread
From: Julien Olivain via buildroot @ 2026-08-08 15:06 UTC (permalink / raw)
To: Waldemar Brodkorb; +Cc: buildroot
On 08/08/2026 14:52, Waldemar Brodkorb wrote:
> Changes made in this release:
>
> Ben Wolsieffer (1):
> nptl: fix getting main stack size on no-MMU
>
> Max Filippov (4):
> stdio: fix %a formatting of inf and nan
> stdio: fix radix point output for %a
> stdio: output sign with NaNs
> stdio: restrict first digit of %a output to 0 or 1
>
> Ramin Moussavi (19):
> libintl.h: route stubs through format_arg inlines; fix
> gettext_noop
> build: scope .NOTPARALLEL to locale targets only, restore
> parallel build
> limits.h: define PAGE_SIZE/PAGESIZE like musl, fixing the gdb
> build
> wait4: fall back to waitid(2) at runtime when wait4 returns
> ENOSYS
> pagesize: restore PAGE_SHIFT fallback for binfmt_flat (no auxv)
> buildsys: build locale headers in-tree, not via a recursive
> sub-make
> extra/locale: skip locales the build host cannot provide
> csky: fix struct semid_ds layout for TIME64
> csky: make __kernel_uid_t/__kernel_gid_t 32-bit
> hppa: fix inotify/signalfd/timerfd flag values
> hppa: do not set IPC_64 for the SysV IPC *ctl commands
> x86: fix struct semid_ds layout for TIME64
> i386: add CFI to __libc_i386_syscall6 for cancellation unwinding
> i386: do not set IPC_64 for the SysV IPC *ctl commands on 5.1+
> kernels
> buildsys: terminate .eh_frame in shared objects
> m68k: make the __jmp_buf layout match what setjmp.S actually
> saves
> inet: use the direct accept4 syscall when __NR_accept is missing
> m68k: implement atomic operations with the CAS instruction
> libc: fix struct shmid_ds layout for TIME64
>
> Waldemar Brodkorb (10):
> netinet/in.h: sync with glibc
> bits/fcntl-linux.h: sync with glibc
> add copy_file_range syscall wrapper
> sys/fanotify.h: drop include to fix c-sky compilation
> adjtimex: fix for architectures lacking __NR_clock_adjtime, f.e.
> frv
> sys/user.h: restore required macros
> netinet/tcp.h: sync with glibc
> loongarch: add basic static only support
> riscv: setcontext: fix linking error
> bump version for 1.0.59 release
>
> ramin (16):
> ldso: harden _dl_tls_get_addr_soft against an unusable DTV
> microblaze: implement atomic operations with lwx/swx
> ldso: microblaze: add missing addend to R_MICROBLAZE_TLSDTPREL32
> ldso: make the _dl_tls_get_addr_soft DTV check
> microblaze-specific
> microblaze: fix struct semid_ds layout for TIME64
> m68k: fix struct semid_ds layout for TIME64
> mips: fix fallocate() 64-bit argument passing on n32
> mips: fix mmap64() for large offsets on n32
> mips: fix setjmp() on n32/n64 (.cpreturn, not .cprestore)
> mips: always set IPC_64 for the SysV IPC *ctl commands
> libc: fix struct msqid_ds layout for TIME64 on all common-header
> arches
> linuxthreads: fix SIGSEGV in MIPS cancellable wrappers (waitpid,
> nanosleep)
> ldso: serialize dl_iterate_phdr to fix concurrent unwind hang on
> SMP
> nptl: cancel the current thread directly instead of via SIGCANCEL
> mips: only n32/n64 always need IPC_64, not o32
> m68k: use the kernel cmpxchg helper for atomics on ColdFire
>
> Patch 0001 is applied upstream and is removed here.
>
> Fixes:
> -
> https://autobuild.buildroot.net/results/2bd/2bd73b0060cad4f44649ffe4ea60c4775160d86e
>
> Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Applied to master, thanks.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-08-08 15:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-08 12:52 [Buildroot] [PATCH] package/uclibc: bump to 1.0.59 Waldemar Brodkorb
2026-08-08 15:06 ` Julien Olivain via buildroot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox