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:
2
NEWS
2
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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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++
|
||||
|
||||
@@ -229,6 +229,9 @@ libc {
|
||||
ulabs;
|
||||
ullabs;
|
||||
}
|
||||
GLIBC_2.43 {
|
||||
memalignment;
|
||||
}
|
||||
GLIBC_PRIVATE {
|
||||
# functions which have an additional interface since they are
|
||||
# are cancelable.
|
||||
|
||||
27
stdlib/memalignment.c
Normal file
27
stdlib/memalignment.c
Normal 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;
|
||||
}
|
||||
@@ -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 <bits/stdlib-float.h>
|
||||
|
||||
43
stdlib/tst-memalignment.c
Normal file
43
stdlib/tst-memalignment.c
Normal 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>
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user