[klibc] [ANNOUNCE] klibc 2.0.13

Greg Thelen gthelen at google.com
Sun Jul 30 22:29:20 PDT 2023

Ben Hutchings <ben at decadent.org.uk> wrote:

> I have released version 2.0.13.  This is available in the git
> repository at:

>     https://git.kernel.org/pub/scm/libs/klibc/klibc.git

> and as a tarball at:

>     https://mirrors.kernel.org/pub/linux/libs/klibc/2.0/

> New features:
> - The statx() and clock_{gettime,settime,nanosleep}() system calls are
>    supported.
> - time_t is 64-bit on all architectures.
> - The LoongArch64 architecture is supported.
> - kinit supports kernel parameter root=PARTLABEL=...

> Bug fixes:
> - select() with a NULL timeout works correctly when select() is a
>    wrapper function.
> - ipconfig no longer busy-polls in certain conditions.
> - It's possible to build for MIPS64 R6 with newer gcc versions.
> - The command aliases of gzip and halt are installed as links instead
>    of copies.

> Other changes:
> - All architectures use the RT signals API (i386, m68k, and s390(x)
>    previously did not).
> - The address layout for arm and riscv64 has been changed to work
>    around a QEMU bug.
> - ipconfig retries failed sends after 1 second instead of 10 seconds.

> A git shortlog of changes since version 2.0.12 follows.

> Ben.

> Ben Hutchings (20):
>        [klibc] 2.0.12 released, next version is 2.0.13
>        [klibc] m68k,s390,x86: signal: Stop using broken <asm/signal.h>
>        [klibc] i386,m68k,s390: signal: Switch to RT signal API
>        [klibc] signal: Make RT signals mandatory
>        [klibc] resource: Avoid using <linux/resource.h>
>        [klibc] stat: Make all stat calls wrappers for statx()
>        [klibc] utimes: Make all utimes calls wrappers for utimensat()
>        [klibc] select: Remove support for pselect7() syscall
>        [klibc] select: Fix handling of NULL timeout when wrapping pselect()
>        [klibc] select: Make all select calls wrappers for pselect6()
>        [klibc] time: Use clock_* system calls for time-of-day and sleep
>        [klibc] time: Use 64-bit time types on all architectures
>        Merge branch 'time64'
>        [klibc] ipconfig: Do not poll sockets we don't intend to read from
>        [klibc] ipconfig: Handle error events from poll
>        [klibc] ipconfig: Retry failed send after 1 second
>        [klibc] mips64: Compatibility with R6 compact branches
>        [klibc] arm: Move shared library below executables
>        [klibc] riscv64: Move shared library below executables
>        [klibc] Install command links as appropriate

> Feiyang Chen (1):
>        [klibc] Add LoongArch64 port

> Rob Vandermeulen (1):
>        [klibc] kinit: Support specifying root with PARTLABEL

Is there a minimum kernel that klibc is expected to build against? I ask
because klibc-2.0.13 includes a change that requires kernel 5.11+.

Klibc klibc-2.0.13 introduces build errors when built against 5.10
   In file included from usr/klibc/sysv_signal.c:5:
   usr/klibc/sysv_signal.c: In function ‘sysv_signal’:
error: ‘SA_ONESHOT’ undeclared (first use in this function)
      24 | # define SA_RESETHAND SA_ONESHOT
         |                       ^~~~~~~~~~
   usr/klibc/sysv_signal.c:10:42: note: in expansion of macro ‘SA_RESETHAND’
      10 |         return __signal(signum, handler, SA_RESETHAND);
         |                                          ^~~~~~~~~~~~

Bisecting kernel v5.10..v5.11 vs klibc-2.0.13 indicates 5.11 commit
1d82b7898f2a ("arch: move SA_* definitions to generic headers") is
required to build klibc-2.0.13.

Bisecting klibc-2.0.12..klibc-2.0.13 vs 5.10 indicates klibc-2.0.13
commit ea8e91a7db06 ("[klibc] m68k,s390,x86: signal: Stop using broken
<asm/signal.h>") is where 5.11+ is required.

More information about the klibc mailing list