[v8,6/8] nptl: Add abilist symbols for C11 threads
Commit Message
This patch adds the required abilist symbols for C11 thread support.
Checked with a build for all major ABI (aarch64-linux-gnu, alpha-linux-gnu,
arm-linux-gnueabi, i386-linux-gnu, ia64-linux-gnu, m68k-linux-gnu,
microblaze-linux-gnu [1], mips{64}-linux-gnu, nios2-linux-gnu,
powerpc{64le}-linux-gnu, s390{x}-linux-gnu, sparc{64}-linux-gnu,
tile{pro,gx}-linux-gnu, and x86_64-linux-gnu).
Also ran a full check on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu,
arm-linux-gnueabhf, and powerpc64le-linux-gnu.
* sysdeps/unix/sysv/linux/aarch64/libpthread.abilist: Add C11 thread
symbols.
* sysdeps/unix/sysv/linux/alpha/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread.abilist:
Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist: Likewise.
* sysdpes/unix/sysv/linux/s390/s390-32/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libpthread.abilist:
Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libpthread.abilist:
Likewise.
* sysdeps/unix/sysv/linux/tile/tilepro/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist: Likewise.
---
ChangeLog | 33 ++++++++++++++++++++++
sysdeps/unix/sysv/linux/aarch64/libpthread.abilist | 26 +++++++++++++++++
sysdeps/unix/sysv/linux/alpha/libpthread.abilist | 26 +++++++++++++++++
sysdeps/unix/sysv/linux/arm/libpthread.abilist | 26 +++++++++++++++++
sysdeps/unix/sysv/linux/hppa/libpthread.abilist | 26 +++++++++++++++++
sysdeps/unix/sysv/linux/i386/libpthread.abilist | 26 +++++++++++++++++
sysdeps/unix/sysv/linux/ia64/libpthread.abilist | 26 +++++++++++++++++
.../sysv/linux/m68k/coldfire/libpthread.abilist | 26 +++++++++++++++++
.../unix/sysv/linux/m68k/m680x0/libpthread.abilist | 26 +++++++++++++++++
.../unix/sysv/linux/microblaze/libpthread.abilist | 26 +++++++++++++++++
.../unix/sysv/linux/mips/mips32/libpthread.abilist | 26 +++++++++++++++++
.../unix/sysv/linux/mips/mips64/libpthread.abilist | 26 +++++++++++++++++
sysdeps/unix/sysv/linux/nios2/libpthread.abilist | 26 +++++++++++++++++
.../linux/powerpc/powerpc32/libpthread.abilist | 26 +++++++++++++++++
.../linux/powerpc/powerpc64/libpthread-le.abilist | 26 +++++++++++++++++
.../linux/powerpc/powerpc64/libpthread.abilist | 26 +++++++++++++++++
.../unix/sysv/linux/riscv/rv64/libpthread.abilist | 26 +++++++++++++++++
.../sysv/linux/s390/s390-32/libpthread.abilist | 26 +++++++++++++++++
.../sysv/linux/s390/s390-64/libpthread.abilist | 26 +++++++++++++++++
sysdeps/unix/sysv/linux/sh/libpthread.abilist | 26 +++++++++++++++++
.../sysv/linux/sparc/sparc32/libpthread.abilist | 26 +++++++++++++++++
.../sysv/linux/sparc/sparc64/libpthread.abilist | 26 +++++++++++++++++
.../sysv/linux/tile/tilegx32/libpthread.abilist | 26 +++++++++++++++++
.../sysv/linux/tile/tilegx64/libpthread.abilist | 26 +++++++++++++++++
.../unix/sysv/linux/x86_64/64/libpthread.abilist | 26 +++++++++++++++++
.../unix/sysv/linux/x86_64/x32/libpthread.abilist | 26 +++++++++++++++++
26 files changed, 683 insertions(+)
Comments
On 02/02/2018 06:04 PM, Adhemerval Zanella wrote:
> This patch adds the required abilist symbols for C11 thread support.
I manually compared the definitions in the <threads.h> header with the
C11 standard. The ABI looks good, with the exception of the once_flag
definition and the possible change of the error encoding.
Thanks,
Florian
On 13/07/2018 06:50, Florian Weimer wrote:
> On 02/02/2018 06:04 PM, Adhemerval Zanella wrote:
>> This patch adds the required abilist symbols for C11 thread support.
>
> I manually compared the definitions in the <threads.h> header with the C11 standard. The ABI looks good, with the exception of the once_flag definition and the possible change of the error encoding.
>
> Thanks,
> Florian
Thanks for all the reviews, I have updated my personal branch [1] with
all you required changes:
- ABI fixes for mips-gnu-linux-soft.
- pthread_create / pthread_join cast inconsistency.
- sysdeps/nptl/threads.h moved to nptl/threads.h.
- thrd_sleep is now a cancellable entrypoint.
- once_flag and ONCE_FLAG_INIT and __ONCE_ALIGNMENT definition.
- thread_local guards for C++.
- TSS_DTOR_ITERATIONS assert check.
I am not sure about the thread error code mapping to errno, it will
required tying POSIX error code to C11 use some internal mechanism
It will most like require generate a platform-specific file
auto-generated from errno definitions (more build complexity), and
I am not sure if this micro-optimization will really yields any
measurable gain.
If you prefer I can resend the patches on maillist with a different
version tag (I did not sent to avoid clobber the mailist).
[1] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/azanella/c11-threads
On 07/13/2018 05:49 PM, Adhemerval Zanella wrote:
> Thanks for all the reviews, I have updated my personal branch [1] with
> all you required changes:
Thank you for your patience. This is looking really good now.
> - ABI fixes for mips-gnu-linux-soft.
I can confirm that these are fixed.
> - pthread_create / pthread_join cast inconsistency.
> - sysdeps/nptl/threads.h moved to nptl/threads.h.
> - thrd_sleep is now a cancellable entrypoint.
> - once_flag and ONCE_FLAG_INIT and __ONCE_ALIGNMENT definition.
Should the type be a struct?
I think ONCE_FLAG_INIT needs to be a compound literal, not an
initializer, at least that's how I read the standard (“which expands to
a value that can be used to initialize an object”).
> - thread_local guards for C++.
Missing indentation of the #define. The manual could mention that for
C++, C++11 or later needs to be used to get the thread_local keyword
(not the macro).
> - TSS_DTOR_ITERATIONS assert check.
>
> I am not sure about the thread error code mapping to errno, it will
> required tying POSIX error code to C11 use some internal mechanism
> It will most like require generate a platform-specific file
> auto-generated from errno definitions (more build complexity), and
> I am not sure if this micro-optimization will really yields any
> measurable gain.
I'm fine with leaving it as is.
Thanks,
Florian
On 13/07/2018 14:49, Florian Weimer wrote:
> On 07/13/2018 05:49 PM, Adhemerval Zanella wrote:
>
>> Thanks for all the reviews, I have updated my personal branch [1] with
>> all you required changes:
>
> Thank you for your patience. This is looking really good now.
>
>> - ABI fixes for mips-gnu-linux-soft.
>
> I can confirm that these are fixed.
>
>> - pthread_create / pthread_join cast inconsistency.
>> - sysdeps/nptl/threads.h moved to nptl/threads.h.
>> - thrd_sleep is now a cancellable entrypoint.
>> - once_flag and ONCE_FLAG_INIT and __ONCE_ALIGNMENT definition.
>
> Should the type be a struct?
>
> I think ONCE_FLAG_INIT needs to be a compound literal, not an initializer, at least that's how I read the standard (“which expands to a value that can be used to initialize an object”).
Right, you are correct, this will prevent ONCE_FLAG_INIT to be wrongly
used to initialize other objects than once_flag. I adjust to be a
struct as well.
>
>> - thread_local guards for C++.
>
> Missing indentation of the #define. The manual could mention that for C++, C++11 or later needs to be used to get the thread_local keyword (not the macro).
Ack and I added a note on manual about C++11 requirement.
>
>> - TSS_DTOR_ITERATIONS assert check.
>>
>> I am not sure about the thread error code mapping to errno, it will
>> required tying POSIX error code to C11 use some internal mechanism
>> It will most like require generate a platform-specific file
>> auto-generated from errno definitions (more build complexity), and
>> I am not sure if this micro-optimization will really yields any
>> measurable gain.
>
> I'm fine with leaving it as is.
* Adhemerval Zanella:
>> I think ONCE_FLAG_INIT needs to be a compound literal, not an
>> initializer, at least that's how I read the standard (“which expands
>> to a value that can be used to initialize an object”).
>
> Right, you are correct, this will prevent ONCE_FLAG_INIT to be wrongly
> used to initialize other objects than once_flag. I adjust to be a
> struct as well.
Sorry, I forgot that this needs another __cplusplus conditional.
Something like this:
#ifdef __cplusplus
# define ONCE_FLAG_INIT (once_flag {})
#else
# define ONCE_FLAG_INIT (once_flag) { 0 }
#endif
Compound literals in C++ are a GCC extension.
>>> - thread_local guards for C++.
>>
>> Missing indentation of the #define. The manual could mention that
>> for C++, C++11 or later needs to be used to get the thread_local
>> keyword (not the macro).
>
> Ack and I added a note on manual about C++11 requirement.
Thanks.
On 13/07/2018 16:56, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>>> I think ONCE_FLAG_INIT needs to be a compound literal, not an
>>> initializer, at least that's how I read the standard (“which expands
>>> to a value that can be used to initialize an object”).
>>
>> Right, you are correct, this will prevent ONCE_FLAG_INIT to be wrongly
>> used to initialize other objects than once_flag. I adjust to be a
>> struct as well.
>
> Sorry, I forgot that this needs another __cplusplus conditional.
>
> Something like this:
>
> #ifdef __cplusplus
> # define ONCE_FLAG_INIT (once_flag {})
> #else
> # define ONCE_FLAG_INIT (once_flag) { 0 }
> #endif
>
> Compound literals in C++ are a GCC extension.
Fixed.
* Adhemerval Zanella:
> On 13/07/2018 16:56, Florian Weimer wrote:
>> * Adhemerval Zanella:
>>
>>>> I think ONCE_FLAG_INIT needs to be a compound literal, not an
>>>> initializer, at least that's how I read the standard (“which expands
>>>> to a value that can be used to initialize an object”).
>>>
>>> Right, you are correct, this will prevent ONCE_FLAG_INIT to be wrongly
>>> used to initialize other objects than once_flag. I adjust to be a
>>> struct as well.
>>
>> Sorry, I forgot that this needs another __cplusplus conditional.
>>
>> Something like this:
>>
>> #ifdef __cplusplus
>> # define ONCE_FLAG_INIT (once_flag {})
>> #else
>> # define ONCE_FLAG_INIT (once_flag) { 0 }
>> #endif
>>
>> Compound literals in C++ are a GCC extension.
>
> Fixed.
This looks fine to me now.
On Fri, 13 Jul 2018, Florian Weimer wrote:
> I think ONCE_FLAG_INIT needs to be a compound literal, not an initializer, at
> least that's how I read the standard (“which expands to a value that can be
> used to initialize an object”).
I think it has to be valid as a static initializer. Which means it can't
be a compound literal, because standard C doesn't allow those in static
initializers. (I read "value" as meaning "expansion of the macro" not
"value of an object type".)
On 18/07/2018 14:40, Joseph Myers wrote:
> On Fri, 13 Jul 2018, Florian Weimer wrote:
>
>> I think ONCE_FLAG_INIT needs to be a compound literal, not an initializer, at
>> least that's how I read the standard (“which expands to a value that can be
>> used to initialize an object”).
>
> I think it has to be valid as a static initializer. Which means it can't
> be a compound literal, because standard C doesn't allow those in static
> initializers. (I read "value" as meaning "expansion of the macro" not
> "value of an object type".)
>
Right, we should not enforce the compiler to support compound literal
as a static initializer as GCC does as an extension. I will change
back to static initializer.
* Joseph Myers:
> On Fri, 13 Jul 2018, Florian Weimer wrote:
>
>> I think ONCE_FLAG_INIT needs to be a compound literal, not an initializer, at
>> least that's how I read the standard (“which expands to a value that can be
>> used to initialize an object”).
>
> I think it has to be valid as a static initializer. Which means it can't
> be a compound literal, because standard C doesn't allow those in static
> initializers. (I read "value" as meaning "expansion of the macro" not
> "value of an object type".)
Indeed, the standard uses “value” for macro expansion results in other
contexts. Sorry for the misdirection.
@@ -224,3 +224,29 @@ GLIBC_2.17 write F
GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
@@ -216,6 +216,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -9,6 +9,32 @@ GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 _IO_flockfile F
GLIBC_2.4 _IO_ftrylockfile F
@@ -204,6 +204,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -216,6 +216,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -204,6 +204,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -9,6 +9,32 @@ GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 _IO_flockfile F
GLIBC_2.4 _IO_ftrylockfile F
@@ -216,6 +216,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -223,3 +223,29 @@ GLIBC_2.18 vfork F
GLIBC_2.18 wait F
GLIBC_2.18 waitpid F
GLIBC_2.18 write F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
@@ -213,6 +213,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -213,6 +213,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -221,3 +221,29 @@ GLIBC_2.21 tcdrain F
GLIBC_2.21 wait F
GLIBC_2.21 waitpid F
GLIBC_2.21 write F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
@@ -216,6 +216,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -224,3 +224,29 @@ GLIBC_2.17 write F
GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
+GLIBC_2.27 GLIBC_2.27 A
+GLIBC_2.27 call_once F
+GLIBC_2.27 cnd_broadcast F
+GLIBC_2.27 cnd_destroy F
+GLIBC_2.27 cnd_init F
+GLIBC_2.27 cnd_signal F
+GLIBC_2.27 cnd_timedwait F
+GLIBC_2.27 cnd_wait F
+GLIBC_2.27 mtx_destroy F
+GLIBC_2.27 mtx_init F
+GLIBC_2.27 mtx_lock F
+GLIBC_2.27 mtx_timedlock F
+GLIBC_2.27 mtx_trylock F
+GLIBC_2.27 mtx_unlock F
+GLIBC_2.27 thrd_create F
+GLIBC_2.27 thrd_current F
+GLIBC_2.27 thrd_detach F
+GLIBC_2.27 thrd_equal F
+GLIBC_2.27 thrd_exit F
+GLIBC_2.27 thrd_join F
+GLIBC_2.27 thrd_sleep F
+GLIBC_2.27 thrd_yield F
+GLIBC_2.27 tss_create F
+GLIBC_2.27 tss_delete F
+GLIBC_2.27 tss_get F
+GLIBC_2.27 tss_set F
@@ -9,6 +9,32 @@ GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 _IO_flockfile F
GLIBC_2.3 _IO_ftrylockfile F
@@ -215,3 +215,29 @@ GLIBC_2.27 tcdrain F
GLIBC_2.27 wait F
GLIBC_2.27 waitpid F
GLIBC_2.27 write F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
@@ -219,6 +219,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -207,6 +207,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -204,6 +204,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -216,6 +216,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -204,6 +204,32 @@ GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -224,3 +224,29 @@ GLIBC_2.12 write F
GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
@@ -224,3 +224,29 @@ GLIBC_2.12 write F
GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
@@ -203,6 +203,32 @@ GLIBC_2.2.5 waitpid F
GLIBC_2.2.5 write F
GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
@@ -224,3 +224,29 @@ GLIBC_2.16 write F
GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
+GLIBC_2.28 GLIBC_2.28 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F