aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2025-05-15powerpc: Remove check for -mabi=ibmlongdoubleAndreas Schwab2-60/+2
The -mabi=ibmlongdouble option has been added in gcc 4.2, thus can be assumed to always exist.
2025-05-15aarch64: update tests for SMEYury Khrustalev4-79/+222
Add test that checks that ZA state is disabled after setjmp and sigsetjmp Update existing SME test that uses setjmp Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
2025-05-15aarch64: Disable ZA state of SME in setjmp and sigsetjmpYury Khrustalev1-0/+23
Due to the nature of the ZA state, setjmp() should clear it in the same manner as it is already done by longjmp. Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
2025-05-15benchtest: malloc tcache hotpath benchtestCupertino Miranda3-0/+205
Existing benchtests for malloc infrastructure seem to be rather generic to test global malloc implementation performance. This new benchtest focus on reducing any non tcache related side effects, allowing to more realistically predict performance impacts of tcache code changes. The test was inpired in bench-[cm]alloc-thread code, with severe simplifications: - forces single thread execution, reducing concurrency side-effects, like cache incoherence penalties due simultaneous writes to the same cache pages; - Focus on allocating and deallocating a single size for all the duration of the benchmark. Since all it does is allocate and deallocate, it will measure the tcache hotpath without any side-effects. - Allows to specify the allocation size as input argument. Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>
2025-05-14Implement C23 rootn.Joseph Myers48-2/+14473
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the rootn functions, which compute the Yth root of X for integer Y (with a domain error if Y is 0, even if X is a NaN). The integer exponent has type long long int in C23; it was intmax_t in TS 18661-4, and as with other interfaces changed after their initial appearance in the TS, I don't think we need to support the original version of the interface. As with pown and compoundn, I strongly encourage searching for worst cases for ulps error for these implementations (necessarily non-exhaustively, given the size of the input space). I also expect a custom implementation for a given format could be much faster as well as more accurate, although the implementation is simpler than those for pown and compoundn. This completes adding to glibc those TS 18661-4 functions (ignoring DFP) that are included in C23. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118592 regarding the C23 mathematical functions (not just the TS 18661-4 ones) missing built-in functions in GCC, where such functions might usefully be added. Tested for x86_64 and x86, and with build-many-glibcs.py.
2025-05-14malloc: Improve performance of __libc_callocWilco Dijkstra1-27/+43
Improve performance of __libc_calloc by splitting it into 2 parts: first handle the tcache fastpath, then do the rest in a separate tailcalled function. This results in significant performance gains since __libc_calloc doesn't need to setup a frame. On Neoverse V2, bench-calloc-simple improves by 5.0% overall. Bench-calloc-thread 1 improves by 24%. Reviewed-by: DJ Delorie <dj@redhat.com>
2025-05-14S390: Use cfi_val_offset instead of cfi_escape.Stefan Liebler2-5/+4
Due to raising the minimum binutils version to version >=2.28, the used cfi_escape for cfi_val_offset can now be ommitted. Checked with "objdump -WF" / "objdump -Wf" that the previous cfi_escape and the new cfi_val_offset are equal.
2025-05-14powerpc64le: Remove configure check for objcopy >= 2.26.Stefan Liebler4-85/+0
Due to raising the minimum binutils version to >= 2.26, the configure check for testing support of --update-section is not needed anymore. Reviewed-by: Peter Bergner <bergner@tenstorrent.com>
2025-05-14Raise the minimum binutils version to 2.39Stefan Liebler5-11/+8
The recent commit 27b96e069aad17cefea9437542180bff448ac3a0 raises the minimum GCC version to 12.1 which was released in 2022. The current minimum bintuils version 2.25 was released end of 2014. This patch now raises the minimum binutils version to 2.39 which was also released in 2022. The hint for ARC is not needed anymore. In sysdeps/[alpha|hppa|csky]/configure.ac, PIE is unsupported with this comment: PIE builds fail on binutils 2.37 and earlier, see: https://sourceware.org/bugzilla/show_bug.cgi?id=28672 This patch keeps PIE unsupported and let the machine maintainers test and enable it later. In sysdeps/arm/configure.ac, there is a check whether TPOFF relocs with addends are assembled correctly, which is known to be broken in binutils 2.24 and 2.25. See: https://sourceware.org/bugzilla/show_bug.cgi?id=18383 This patch keeps the check as is and let the machine maintainers check if it still required. According to Florian Weimer: Having at least binutils 2.38 will allow us to assume that this linker bug is fixed: Bug 28743 - -z relro creats holes in the process image on GNU/Linux <https://sourceware.org/bugzilla/show_bug.cgi?id=28743> Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-05-13added benchtest inputs for log2lPaul Zimmermann2-0/+1005
2025-05-13added benchtest inputs for explPaul Zimmermann2-0/+1005
2025-05-13aarch64: fix unwinding in longjmpYury Khrustalev1-22/+23
Previously, longjmp() on aarch64 was using CFI directives around the call to __libc_arm_za_disable() after CFA was redefined at the start of longjmp(). This may result in unwinding issues. Move the call and surrounding CFI directives to the beginning of longjmp(). Suggested-by: Wilco Dijkstra <wilco.dijkstra@arm.com>
2025-05-13added benchtest inputs for powlPaul Zimmermann2-0/+1004
changes in v2: * fixed the missing Makefile entry in the first version Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-05-13added benchtest inputs for fmalPaul Zimmermann2-0/+1004
2025-05-12manual: fix typo for sched_[sg]etattrDJ Delorie1-2/+2
Originally added in 41a90f3f5f which says it's adding sched_getattr and sched_setattr. Reviewed-by: Collin Funk <collin.funk1@gmail.com>
2025-05-12malloc: Improve malloc initializationWilco Dijkstra5-61/+15
Move malloc initialization to __libc_early_init. Use a hidden __ptmalloc_init for initialization and a weak call to avoid pulling in the system malloc in a static binary. All previous initialization checks can now be removed. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-05-12Document all CLOCK_* valuesJoseph Myers1-1/+30
The manual documents CLOCK_REALTIME and CLOCK_MONOTONIC but not other CLOCK_* values. Add documentation of the POSIX clocks CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID, along with a reference to the Linux man pages for the semantics of the Linux-specific clocks supported (as with some other functionality coming direct from the Linux kernel where the man pages can be considered the main documentation). Note: CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE and CLOCK_MONOTONIC_COARSE are also defined in the toplevel bits/time.h, as used for Hurd. Nevertheless, I see no sign that the Hurd code in glibc actually has any support for those clocks, so I think it is correct to document them as Linux-specific (and to refer only to the Linux man pages for their semantics). Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-05-12malloc: Improved double free detection in the tcacheDavid Lau3-14/+76
The previous double free detection did not account for an attacker to use a terminating null byte overflowing from the previous chunk to change the size of a memory chunk is being sorted into. So that the check in 'tcache_double_free_verify' would pass even though it is a double free. Solution: Let 'tcache_double_free_verify' iterate over all tcache entries to detect double frees. This patch only protects from buffer overflows by one byte. But I would argue that off by one errors are the most common errors to be made. Alternatives Considered: Store the size of a memory chunk in big endian and thus the chunk size would not get overwritten because entries in the tcache are not that big. Move the tcache_key before the actual memory chunk so that it does not have to be checked at all, this would work better in general but also it would increase the memory usage. Signed-off-by: David Lau <david.lau@fau.de> Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
2025-05-12Correct spelling mistake in test filepanzhe03281-1/+1
There are some spelling mistakes in the test file. Fix them Reviewed-by: guoce <guoce@kylinos.cn> Signed-off-by: panzhe0328 <panzhe@kylinos.cn> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-05-12hurd: Make rename refuse trailing slashes [BZ #32570]Samuel Thibault1-3/+16
As tested by Gnulib's renameatu module. Reported by Collin Funk on https://sourceware.org/bugzilla/show_bug.cgi?id=32570
2025-05-09Implement C23 compoundnJoseph Myers52-4/+11082
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the compoundn functions, which compute (1+X) to the power Y for integer Y (and X at least -1). The integer exponent has type long long int in C23; it was intmax_t in TS 18661-4, and as with other interfaces changed after their initial appearance in the TS, I don't think we need to support the original version of the interface. Note that these functions are "compoundn" with a trailing "n", *not* "compound" (CORE-MATH has the wrong name, for example). As with pown, I strongly encourage searching for worst cases for ulps error for these implementations (necessarily non-exhaustively, given the size of the input space). I also expect a custom implementation for a given format could be much faster as well as more accurate (I haven't tested or benchmarked the CORE-MATH implementation for binary32); this is one of the more complicated and less efficient functions to implement in a type-generic way. As with exp2m1 and exp10m1, this showed up places where the powerpc64le IFUNC setup is not as self-contained as one might hope (in this case, without the changes specific to powerpc64le, there were undefined references to __GI___expf128). Tested for x86_64 and x86, and with build-many-glibcs.py.
2025-05-09hurd: Fix tst-stack2 test build on HurdAdhemerval Zanella1-0/+1
It requires $(shared-thread-library). Fixes 0c342594237. Checked on a i686-gnu build.
2025-05-06nss: remove undefined behavior and optimize getaddrinfoCollin Funk1-20/+9
On x86-64 and compiling with -O2 using stdc_leading_zeros compiles to the bsr instruction. The fls function removed by this patch is inlined but still loops while checking each bit individually. * nss/getaddrinfo.c: Include <stdbit.h>. (fls): Remove function. This function contains a left shift of 31 on an 'int' which is undefined. (rfc3484_sort): Use stdc_leading_zeros instead of fls. Signed-off-by: Collin Funk <collin.funk1@gmail.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-05-06powerpc: Remove POWER7 strncasecmp optimizationAdhemerval Zanella12-270/+4
These routines are not extensively used (gnulib documentation even recommend use a replacement [1]), and there is already a POWER8 version that uses proper vectorized instructions. [1] https://www.gnu.org/software/gnulib/manual/gnulib.html#C-strings Checked with a build for some powerpc variations. Reviewed-by: Peter Bergner <bergner@linux.ibm.com>
2025-05-05manual: add more pthread functionsDJ Delorie1-0/+396
Add stubs and partial docs for many undocumented pthreads functions. While neither exhaustive nor complete, gives minimal usage docs for many functions and expands the pthreads chapters, making it easier to continue improving this section in the future. Reviewed-by: Collin Funk <collin.funk1@gmail.com>
2025-05-05S390: Add new s390 platform z17.Stefan Liebler12-56/+249
The glibc-hwcaps subdirectories are extended by "z17". Libraries are loaded if the z17 facility bits are active: - Miscellaneous-instruction-extensions facility 4 - Vector-enhancements-facility 3 - Vector-Packed-Decimal-Enhancement Facility 3 - CPU: Concurrent-Functions Facility tst-glibc-hwcaps.c is extended in order to test z17 via new marker6. In case of running on a z17 with a kernel not recognizing z17 yet, AT_PLATFORM will be z900 but vector-bit in AT_HWCAP is set. This situation is now recognized and this testcase does not fail. A fatal glibc error is dumped if glibc was build with architecture level set for z17, but run on an older machine (See dl-hwcap-check.h). Note, you might get an SIGILL before this check if you don't use: configure --with-rtld-early-cflags=-march=<older-machine> ld.so --list-diagnostics now also dumps information about s390.cpu_features. Independent from z17, the s390x kernel won't introduce new HWCAP-Bits if there is no special handling needed in kernel itself. For z17, we don't have new HWCAP flags, but have to check the facility bits retrieved by stfle-instruction. Instead of storing all the stfle-bits (currently four 64bit values) in the cpu_features struct, we now only store those bits, which are needed within glibc itself. Note that we have this list twice, one with original values and the other one which can be filtered with GLIBC_TUNABLES=glibc.cpu.hwcaps. Those new fields are stored in so far reserved space in cpu_features struct. Thus processes started in between the update of glibc package and we e.g. have a new ld.so and an old libc.so, won't crash. The glibc internal ifunc-resolvers would not select the best optimized variant. The users of stfle-bits are also updated: - parsing of GLIBC_TUNABLES=glibc.cpu.hwcaps - glibc internal ifunc-resolvers - __libc_ifunc_impl_list - sysconf
2025-05-01Correct test descriptors in libm-test-pown.incJoseph Myers1-94/+94
While working on implementing compoundn, I noticed that libm-test-pown.inc was wrongly using TEST_ff_f and AUTO_TESTS_ff_f when the actual types involved meant fL_f should be used instead of ff_f; fix to use the correct descriptor strings for pown. (These strings affect how gen-libm-test.py generates a C file in some cases. The structure type test_fL_f_data for expected results and the use of RUN_TEST_LOOP_fL_f in the ALL_RM_TEST call were already correct.) Tested for x86_64. The generated libm-test-pown.c was actually unchanged, but the old descriptor strings were still logically incorrect.
2025-05-01malloc: Inline tcache_try_mallocWilco Dijkstra1-44/+7
Inline tcache_try_malloc into calloc since it is the only caller. Also fix usize2tidx and use it in __libc_malloc, __libc_calloc and _mid_memalign. The result is simpler, cleaner code. Reviewed-by: DJ Delorie <dj@redhat.com>
2025-04-29math: Fix UB on sinpif (BZ 32925)Adhemerval Zanella1-4/+4
The left shift overflows for 'int', use uint32_t instead. It syncs with CORE-MATH commit bbfabd99. Checked on aarch64-linux-gnu, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-04-29math: Fix UB on erfcf (BZ 32924)Adhemerval Zanella1-2/+2
The left shift overflows for 'int', use uint64_t instead. It syncs with CORE-MATH commit d0a2be200cbc1344d800d9ef0ebee9ad67dd3ad8. Checked on aarch64-linux-gnu, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-04-29math: Fix UB on cospif (BZ 32923)Adhemerval Zanella1-3/+3
The left shift overflows for 'int', use uint32_t instead. It syncs with CORE-MATH commit bbfabd993a71b049c210b0febfd06d18369fadc1. Checked on aarch64-linux-gnu, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-04-29math: Fix UB on cbrtf (BZ 32922)Adhemerval Zanella1-3/+3
The left shift overflows for 'int64_t', use unsigned instead. It syncs with CORE-MATH commit f7c7408d1749ec2859ea249495af699359ae559b. Checked on aarch64-linux-gnu, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-04-29math: Fix UB on sinhf (BZ 32921)Adhemerval Zanella1-3/+3
The left shift overflows for 'int', use uint64_t instead. It syncs with CORE-MATH commit bbfabd99. Checked on aarch64-linux-gnu, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-04-29math: Fix UB on logf (BZ 32920)Adhemerval Zanella1-1/+1
The left shift overflows for 'int', use a literal instead. It syncs with OPTIMIZED-ROUTINES commit 0f87f607b976820ef41fe64d004fe67dc7af8236. Checked on aarch64-linux-gnu, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-04-29math: Fix UB on coshf (BZ 32919)Adhemerval Zanella1-3/+3
The left shift overflows for 'int', use uint64_t instead. It syncs with CORE-MATH commit 4d6192d2. Checked on aarch64-linux-gnu, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-04-29math: Fix UB on atanhf (BZ 32918)Adhemerval Zanella1-2/+2
The left shift overflows for 'int', use unsigned instead. It syncs with CORE-MATH commit 4d6192d2. Checked on aarch64-linux-gnu, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-04-28nptl: Fix pthread_getattr_np when modules with execstack are allowed (BZ 32897)Adhemerval Zanella9-13/+104
The BZ 32653 fix (12a497c716f0a06be5946cabb8c3ec22a079771e) kept the stack pointer zeroing from make_main_stack_executable on _dl_make_stack_executable. However, previously the 'stack_endp' pointed to temporary variable created before the call of _dl_map_object_from_fd; while now we use the __libc_stack_end directly. Since pthread_getattr_np relies on correct __libc_stack_end, if _dl_make_stack_executable is called (for instance, when glibc.rtld.execstack=2 is set) __libc_stack_end will be set to zero, and the call will always fail. The __libc_stack_end zero was used a mitigation hardening, but since 52a01100ad011293197637e42b5be1a479a2f4ae it is used solely on pthread_getattr_np code. So there is no point in zeroing anymore. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Sam James <sam@gentoo.org>
2025-04-28RISC-V: Use builtin for ffs and ffsll while supported extension availableJulian Zhu1-0/+10
Hardware ctz instructions are available in the RISC-V Zbb and XTheadBb extension. With special `-march` flags defined, we can generate more simplified code compared to the generic implementation of `ffs`/`ffsll`. Signed-off-by: Julian Zhu <julian.oerv@isrc.iscas.ac.cn> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-04-28stdio: Remove UB on printf_fpAdhemerval Zanella1-9/+9
The __printf_fp_buffer_1 issues count_leading_zeros with 0 argument, which might leads to call __builtin_ctz depending of the ABI. Replace with stdbit.h function instead. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Paul Eggert <eggert@cs.ucla.edu>
2025-04-25benchtest: Correct shell script related to bench-malloc-threadCupertino Miranda1-1/+1
This patch changes the shell script that selects which arguments are used for the execution of bench-malloc-thread. The problem seems to have been introduced in commit: commit 2d6427a63cad8056ba6bcaaaa8df21977c8dde3d Author: Wangyang Guo <wangyang.guo@intel.com> Date: Fri Nov 29 16:05:35 2024 +0800 benchtests: Add calloc test With current condition, the following error "/bin/sh: 3: [[: not found" occurs when executing `make bench BENCHSET="malloc-thread"` and the else path is taken, using incorrect arguments for bench test execution. Error is reproducible in Debian based distros. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-04-25linux/termio: remove <termio.h> and struct termioH. Peter Anvin6-46/+5
The <termio.h> interface is absolutely ancient: it was obsoleted by <termios.h> already in the first version of POSIX (1988) and thus predates the very first version of Linux. Unfortunately, some constant macros are used both by <termio.h> and <termios.h>; particularly problematic is the baud rate constants since the termio interface *requires* that the baud rate is set via an enumeration as part of c_cflag. In preparation of revamping the termios interface to support the arbitrary baud rate capability that the Linux kernel has supported since 2008, remove <termio.h> in the hope that no one still uses this archaic interface. Note that there is no actual code in glibc to support termio: it is purely an unabstracted ioctl() interface. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com> Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-04-22elf: tst-audit10: split AVX512F code into dedicated functions [BZ #32882]Aurelien Jarno2-55/+55
"Recent" GCC versions (since commit fc62716fe8d1, backported to stable branches) emit a vzeroupper instruction at the end of functions containing AVX instructions. This causes the tst-audit10 test to fail on CPUs lacking AVX instructions, despite the AVX512F check. The crash occurs in the pltenter function of tst-auditmod10b.c. Fix that by moving the code guarded by the check_avx512 function into specific functions using the target ("avx512f") attribute. Note that since commit 5359c3bc91cc ("x86-64: Remove compiler -mavx512f check") it is safe to assume that the compiler has AVX512F support, thus the __AVX512F__ checks can be dropped. Tested on non-AVX, AVX2 and AVX512F machines. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-04-22Add NT_ARM_GCS and NT_RISCV_TAGGED_ADDR_CTRL from Linux 6.13 to elf.hJoseph Myers1-0/+3
Linux 6.13 adds new ELF note types NT_ARM_GCS and NT_RISCV_TAGGED_ADDR_CTRL. Add these to glibc's elf.h. Tested for x86_64.
2025-04-22Add AT_* constants from Linux 6.12Joseph Myers2-0/+5
Linux 6.12 adds AT_RENAME_* aliases for RENAME_* flags for renameat2, and also AT_HANDLE_MNT_ID_UNIQUE. Add the first set of aliases to stdio.h alongside the RENAME_* names, and AT_HANDLE_MNT_ID_UNIQUE to bits/fcntl-linux.h. Tested for x86_64.
2025-04-21hurd: Make symlink return EEXIST on existing target directorySamuel Thibault1-1/+1
8ef17919509e ("hurd: Fix EINVAL error on linking to a slash-trailing path [BZ #32569]) made symlink return ENOTDIR, but the gnulib testsuite does not recognize it for such a situation, and EEXIST is indeed more comprehensible to users.
2025-04-21hurd: Clear FP exceptions before calling signal handlerSamuel Thibault1-4/+10
This avoids SIGFPE handlers (or code longjmp-ed to) getting disturbed by the exception that generated it. Note: gcc's unwinding depends on the rpc_wait_trampoline/trampoline exact code, so we here avoid breaking it.
2025-04-21hurd: Do not check for xstate level if it was not initializedSamuel Thibault1-1/+1
If __thread_get_state failed, there is no xstate level to check. ok is 0 already and the memory exists, but better not read uninitialized memory.
2025-04-21hurd: Do not restore xstate when it is not initializedSamuel Thibault2-34/+40
If the process has never used fp before getting a signal, xstate is set (and thus the x87 state is not initialized) but xstate->initialized is still 0, and we should not restore anything.
2025-04-20hurd: Make *utime*s catch invalid times [BZ #32802, BZ #32803]Samuel Thibault3-12/+66
2025-04-18hurd: save xstate during signal handlingLuca Dariz9-25/+458
* hurd/Makefile: add new tests * hurd/test-sig-rpc-interrupted.c: check xstate save and restore in the case where a signal is delivered to a thread which is waiting for an rpc. This test implements the rpc interruption protocol used by the hurd servers. It was so far passing on Debian thanks to the local-intr-msg-clobber.diff patch, which is now obsolete. * hurd/test-sig-xstate.c: check xstate save and restore in the case where a signal is delivered to a running thread, making sure that the xstate is modified in the signal handler. * hurd/test-xstate.h: add helpers to test xstate * sysdeps/mach/hurd/i386/bits/sigcontext.h: add xstate to the sigcontext structure. + sysdeps/mach/hurd/i386/sigreturn.c: restore xstate from the saved context * sysdeps/mach/hurd/x86/trampoline.c: save xstate if supported. Otherwise we fall back to the previous behaviour of ignoring xstate. * sysdeps/mach/hurd/x86_64/bits/sigcontext.h: add xstate to the sigcontext structure. * sysdeps/mach/hurd/x86_64/sigreturn.c: restore xstate from the saved context Signed-off-by: Luca Dariz <luca@orpolo.org> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Message-ID: <20250319171118.142163-1-luca@orpolo.org>