diff --git a/NEWS b/NEWS index 8a5c197d42..244f7613d8 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,8 @@ Major new features: * The ISO C23 memset_explicit function has been added. +* The ISO C23 memalignment function has been added. + Deprecated and removed features, and other changes affecting compatibility: * Support for dumped heaps has been removed - malloc_set_state() now always diff --git a/manual/memory.texi b/manual/memory.texi index 6a70168e61..dd6c7f9996 100644 --- a/manual/memory.texi +++ b/manual/memory.texi @@ -1135,6 +1135,61 @@ The @code{valloc} function is obsolete and @code{aligned_alloc} or @code{posix_memalign} should be used instead. @end deftypefun +You can determine the alignment of a pointer with the +@code{memalignment} function. + +@deftypefun size_t memalignment (void *@var{p}) +@standards{C23, stdlib.h} +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} + +This function, defined in C23, returns the alignment of @var{p}, as a +power of two. If @var{p} is a null pointer, it returns zero. C23 +requires @var{p} to be a valid pointer to an object or a null pointer; +as a GNU extension, @theglibc{} supports this function on arbitrary +bit patterns of pointer type. + +This function was added to the C23 standard to support unconventional +platforms where a pointer's low-order bits are unrelated to alignment. +For conventional platforms, one can instead cast the pointer to +@code{uintptr_t} and then test the low order bits: +this is portable to pre-C23 and is typically a bit faster. + +For example, if you want to read an @code{int} +addressed by possibly-misaligned pointer @code{p}, +the following pre-C23 code works on all conventional platforms: + +@smallexample +int i; +if (((uintptr_t) p & (alignof (int) - 1)) != 0) + memcpy (&i, p, sizeof i); +else + i = *p; +@end smallexample + +However, it might not work on unconventional platforms, where one +would need something like the following C23 code: + +@smallexample +int i; +if (memalignment (p) < alignof (int)) + memcpy (&i, p, sizeof i); +else + i = *p; +@end smallexample + +However, for this particular case, performance does not improve if +different code is used for aligned and unaligned pointers, +and the following code is preferable: + +@smallexample +int i; +memcpy (&i, p, sizeof i); +@end smallexample + +The compiler will generate the most efficient way to access unaligned +data for the architecture, optimizing away the @code{memcpy} call. +@end deftypefun + @node Malloc Tunable Parameters @subsubsection Malloc Tunable Parameters diff --git a/stdlib/Makefile b/stdlib/Makefile index d2c594885a..8d9a98602c 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -97,6 +97,7 @@ routines := \ mblen \ mbstowcs \ mbtowc \ + memalignment \ mrand48 \ mrand48_r \ nrand48 \ @@ -299,6 +300,7 @@ tests := \ tst-makecontext-align \ tst-makecontext2 \ tst-makecontext3 \ + tst-memalignment \ tst-on_exit \ tst-qsort \ tst-qsort2 \ @@ -441,6 +443,8 @@ CFLAGS-tst-stdc_bit_width.c += -fno-builtin CFLAGS-tst-stdc_bit_floor.c += -fno-builtin CFLAGS-tst-stdc_bit_ceil.c += -fno-builtin +CFLAGS-tst-memalignment.c += -fno-builtin + ifeq ($(have-cxx-thread_local),yes) CFLAGS-tst-quick_exit.o = -std=c++11 LDLIBS-tst-quick_exit = -lstdc++ diff --git a/stdlib/Versions b/stdlib/Versions index 6d024000f8..da7019a7ed 100644 --- a/stdlib/Versions +++ b/stdlib/Versions @@ -229,6 +229,9 @@ libc { ulabs; ullabs; } + GLIBC_2.43 { + memalignment; + } GLIBC_PRIVATE { # functions which have an additional interface since they are # are cancelable. diff --git a/stdlib/memalignment.c b/stdlib/memalignment.c new file mode 100644 index 0000000000..fb3eef96fe --- /dev/null +++ b/stdlib/memalignment.c @@ -0,0 +1,27 @@ +/* Return the alignment of a pointer. + Copyright (C) 2025 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + +/* Return the alignment of P. */ +size_t +memalignment (const void *p) +{ + size_t i = (size_t) p; + return i & -i; +} diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h index 1d6a83a22c..8d4d194a46 100644 --- a/stdlib/stdlib.h +++ b/stdlib/stdlib.h @@ -1164,6 +1164,9 @@ extern int ttyslot (void) __THROW; /* Call function __FUNC exactly once, even if invoked from several threads. All calls must be made with the same __FLAGS object. */ extern void call_once (once_flag *__flag, void (*__func)(void)); + +/* Return the alignment of P. */ +extern size_t memalignment (const void *__p); #endif #include diff --git a/stdlib/tst-memalignment.c b/stdlib/tst-memalignment.c new file mode 100644 index 0000000000..518b83cc6b --- /dev/null +++ b/stdlib/tst-memalignment.c @@ -0,0 +1,43 @@ +/* Test memalignment. + Copyright (C) 2025 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include + +static int +do_test (void) +{ + void *null = NULL; + TEST_COMPARE (memalignment (NULL), 0); + TEST_COMPARE (memalignment (null), 0); + char ca[256]; + array_foreach (p, ca) + TEST_VERIFY (memalignment (p) >= 1); + TEST_VERIFY (memalignment (&ca[0]) == 1 || memalignment (&ca[1]) == 1); + TEST_VERIFY (memalignment (&ca[0]) == 2 || memalignment (&ca[1]) == 2 + || memalignment (&ca[2]) == 2 || memalignment (&ca[3]) == 2); + long long int lla[256]; + array_foreach (p, lla) + TEST_VERIFY (memalignment (p) >= _Alignof (long long int)); + TEST_VERIFY (memalignment (&lla[0]) <= sizeof (long long int) + || memalignment (&lla[1]) <= sizeof (long long int)); + return 0; +} + +#include diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index e0dc8aea28..a9d0e625af 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -2663,6 +2663,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.43 pthread_cancel F GLIBC_2.43 pthread_clockjoin_np F diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist index c0cac6d507..2440c8f669 100644 --- a/sysdeps/mach/hurd/x86_64/libc.abilist +++ b/sysdeps/mach/hurd/x86_64/libc.abilist @@ -2344,6 +2344,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.43 pthread_cancel F GLIBC_2.43 pthread_clockjoin_np F diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index bde5e66ce0..cd7d7e7f3f 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -2768,4 +2768,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index 0060616d20..c772aa126c 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -3115,6 +3115,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist index 79895b9b37..773a94f23a 100644 --- a/sysdeps/unix/sysv/linux/arc/libc.abilist +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -2529,4 +2529,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index 3426d99f1e..b6767ebce3 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -2821,6 +2821,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index eca31a2e27..34c59b8f0f 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -2818,6 +2818,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index 7c5ebdf3ba..045f0daafc 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2805,4 +2805,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index 742118e65e..3e868398ba 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2842,6 +2842,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index 8a8ff34e35..4ac5171f46 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -3025,6 +3025,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist index 86b0246ad1..b2f68316de 100644 --- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist +++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist @@ -2289,4 +2289,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index 92cef27d98..feb34915a1 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -2801,6 +2801,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 3b74574560..c497daba54 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2968,6 +2968,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index ae2d13ad8f..e8b15834e2 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2854,4 +2854,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index 1b0264df27..8dc0f9d54f 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2851,4 +2851,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index 8923228090..53950e67d9 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2931,6 +2931,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index 9ce80245f6..b60839335e 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2929,6 +2929,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index e3c971367d..ed12fb7352 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2937,6 +2937,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index db707fad52..6ac6778e65 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2839,6 +2839,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist index 0780d53978..7639a50bc4 100644 --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist @@ -2279,4 +2279,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index f4f1551054..07171e7f6f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -3158,6 +3158,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index 34ec11f685..8cadb158d3 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -3203,6 +3203,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index b790b43f4b..af449c5420 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -2912,6 +2912,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist index b7de3f95a8..4ae1fd8477 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist @@ -2988,4 +2988,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist index 2680eabc7c..42a37e3e84 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -2532,4 +2532,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist index 074ca2f280..66561593df 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist @@ -2732,4 +2732,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index 0573db9f50..99090f39a2 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -3156,6 +3156,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index 55760b901f..8b37af8f76 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -2949,6 +2949,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index a15b4df221..db85b97e47 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2848,6 +2848,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index b490e1064c..733d6aaffa 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2845,6 +2845,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index 8fd42d21d0..85e15e34c1 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -3179,6 +3179,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index b62dec6a63..fb90d0ab15 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -2815,6 +2815,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index fe23ac6682..aa3cdd6c69 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -2764,6 +2764,7 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index 986dfcca2a..1aeb3429c7 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -2783,4 +2783,5 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F