1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-10-28 23:34:53 +03:00

Implement C23 memalignment

Add the C23 memalignment function (query the alignment of a pointer)
to glibc.

Given how simple this operation is, it would make sense for compilers
to inline calls to this function, but I'm treating that as a compiler
matter (compilers should add it as a built-in function) rather than
adding an inline version to glibc headers (although such an inline
version would be reasonable as well).  I've filed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122117 for this feature
in GCC.

Tested for x86_64 and x86.
This commit is contained in:
Joseph Myers
2025-10-17 16:56:59 +00:00
parent 850d93f514
commit ea18d5a4c2
41 changed files with 171 additions and 0 deletions

2
NEWS
View File

@@ -11,6 +11,8 @@ Major new features:
* The ISO C23 memset_explicit function has been added. * 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: Deprecated and removed features, and other changes affecting compatibility:
* Support for dumped heaps has been removed - malloc_set_state() now always * Support for dumped heaps has been removed - malloc_set_state() now always

View File

@@ -1135,6 +1135,61 @@ The @code{valloc} function is obsolete and @code{aligned_alloc} or
@code{posix_memalign} should be used instead. @code{posix_memalign} should be used instead.
@end deftypefun @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 @node Malloc Tunable Parameters
@subsubsection Malloc Tunable Parameters @subsubsection Malloc Tunable Parameters

View File

@@ -97,6 +97,7 @@ routines := \
mblen \ mblen \
mbstowcs \ mbstowcs \
mbtowc \ mbtowc \
memalignment \
mrand48 \ mrand48 \
mrand48_r \ mrand48_r \
nrand48 \ nrand48 \
@@ -299,6 +300,7 @@ tests := \
tst-makecontext-align \ tst-makecontext-align \
tst-makecontext2 \ tst-makecontext2 \
tst-makecontext3 \ tst-makecontext3 \
tst-memalignment \
tst-on_exit \ tst-on_exit \
tst-qsort \ tst-qsort \
tst-qsort2 \ 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_floor.c += -fno-builtin
CFLAGS-tst-stdc_bit_ceil.c += -fno-builtin CFLAGS-tst-stdc_bit_ceil.c += -fno-builtin
CFLAGS-tst-memalignment.c += -fno-builtin
ifeq ($(have-cxx-thread_local),yes) ifeq ($(have-cxx-thread_local),yes)
CFLAGS-tst-quick_exit.o = -std=c++11 CFLAGS-tst-quick_exit.o = -std=c++11
LDLIBS-tst-quick_exit = -lstdc++ LDLIBS-tst-quick_exit = -lstdc++

View File

@@ -229,6 +229,9 @@ libc {
ulabs; ulabs;
ullabs; ullabs;
} }
GLIBC_2.43 {
memalignment;
}
GLIBC_PRIVATE { GLIBC_PRIVATE {
# functions which have an additional interface since they are # functions which have an additional interface since they are
# are cancelable. # are cancelable.

27
stdlib/memalignment.c Normal file
View File

@@ -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
<https://www.gnu.org/licenses/>. */
#include <stdlib.h>
/* Return the alignment of P. */
size_t
memalignment (const void *p)
{
size_t i = (size_t) p;
return i & -i;
}

View File

@@ -1164,6 +1164,9 @@ extern int ttyslot (void) __THROW;
/* Call function __FUNC exactly once, even if invoked from several threads. /* Call function __FUNC exactly once, even if invoked from several threads.
All calls must be made with the same __FLAGS object. */ All calls must be made with the same __FLAGS object. */
extern void call_once (once_flag *__flag, void (*__func)(void)); extern void call_once (once_flag *__flag, void (*__func)(void));
/* Return the alignment of P. */
extern size_t memalignment (const void *__p);
#endif #endif
#include <bits/stdlib-float.h> #include <bits/stdlib-float.h>

43
stdlib/tst-memalignment.c Normal file
View File

@@ -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
<https://www.gnu.org/licenses/>. */
#include <stdlib.h>
#include <array_length.h>
#include <support/check.h>
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 <support/test-driver.c>

View File

@@ -2663,6 +2663,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.43 pthread_cancel F GLIBC_2.43 pthread_cancel F
GLIBC_2.43 pthread_clockjoin_np F GLIBC_2.43 pthread_clockjoin_np F

View File

@@ -2344,6 +2344,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.43 pthread_cancel F GLIBC_2.43 pthread_cancel F
GLIBC_2.43 pthread_clockjoin_np F GLIBC_2.43 pthread_clockjoin_np F

View File

@@ -2768,4 +2768,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F

View File

@@ -3115,6 +3115,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2529,4 +2529,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F

View File

@@ -2821,6 +2821,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2818,6 +2818,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2805,4 +2805,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F

View File

@@ -2842,6 +2842,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -3025,6 +3025,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2289,4 +2289,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F

View File

@@ -2801,6 +2801,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2968,6 +2968,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2854,4 +2854,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F

View File

@@ -2851,4 +2851,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F

View File

@@ -2931,6 +2931,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2929,6 +2929,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2937,6 +2937,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2839,6 +2839,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2279,4 +2279,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F

View File

@@ -3158,6 +3158,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -3203,6 +3203,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2912,6 +2912,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2988,4 +2988,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F

View File

@@ -2532,4 +2532,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F

View File

@@ -2732,4 +2732,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F

View File

@@ -3156,6 +3156,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2949,6 +2949,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2848,6 +2848,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2845,6 +2845,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -3179,6 +3179,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2815,6 +2815,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2764,6 +2764,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F
GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_append F

View File

@@ -2783,4 +2783,5 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F GLIBC_2.43 memset_explicit F