[PATCH 1/3] Linux: Add the pthread_gettid_np function
enh
enh@google.com
Tue Mar 11 12:58:43 GMT 2025
On Tue, Mar 11, 2025 at 8:54 AM enh <enh@google.com> wrote:
>
> On Tue, Mar 11, 2025 at 7:06 AM Florian Weimer <fweimer@redhat.com> wrote:
> >
> > There is no good match for this function in other libcs.
> > Bionic has pthread_gettid without error checking (and without the
> > _np suffix), but with the same prototype. Other systems use
> > a pointer argument for the value.
>
> you must have been looking at an 11+ year old version of bionic :-)
>
> no LP64 version of Android has pthread_gettid() (though ILP32 will do
> until it's removed, for app compat), and every version of Android
> since at least 2014's "L"/api level 21 has pthread_gettid_np().
>
> i'm not sure what error checking you think is missing?
ah, that's probably also an artifact of looking at an ancient
implementation: i just looked and the historical __pthread_gettid()
[note the leading underscores, which i'd forgotten about] did indeed
just cast the pthread_t to the internal thread type and dereference it
... though it seems like your implementation does the same? (i know
glibc has thread caching which bionic doesn't, but i assumed you had
some cache eviction policy?)
> > Tested on i686-linux-gnu and x86_64-linux-gnu.
> >
> > ---
> > NEWS | 2 +
> > manual/process.texi | 17 ++++
> > nptl/Makefile | 2 +
> > nptl/Versions | 3 +
> > nptl/pthread_gettid_np.c | 30 +++++++
> > nptl/tst-pthread_gettid_np.c | 79 +++++++++++++++++++
> > sysdeps/nptl/pthread.h | 5 ++
> > sysdeps/unix/sysv/linux/aarch64/libc.abilist | 1 +
> > sysdeps/unix/sysv/linux/alpha/libc.abilist | 1 +
> > sysdeps/unix/sysv/linux/arc/libc.abilist | 1 +
> > sysdeps/unix/sysv/linux/arm/be/libc.abilist | 1 +
> > sysdeps/unix/sysv/linux/arm/le/libc.abilist | 1 +
> > sysdeps/unix/sysv/linux/csky/libc.abilist | 1 +
> > sysdeps/unix/sysv/linux/hppa/libc.abilist | 1 +
> > sysdeps/unix/sysv/linux/i386/libc.abilist | 1 +
> > .../sysv/linux/loongarch/lp64/libc.abilist | 1 +
> > .../sysv/linux/m68k/coldfire/libc.abilist | 1 +
> > .../unix/sysv/linux/m68k/m680x0/libc.abilist | 1 +
> > .../sysv/linux/microblaze/be/libc.abilist | 1 +
> > .../sysv/linux/microblaze/le/libc.abilist | 1 +
> > .../sysv/linux/mips/mips32/fpu/libc.abilist | 1 +
> > .../sysv/linux/mips/mips32/nofpu/libc.abilist | 1 +
> > .../sysv/linux/mips/mips64/n32/libc.abilist | 1 +
> > .../sysv/linux/mips/mips64/n64/libc.abilist | 1 +
> > sysdeps/unix/sysv/linux/or1k/libc.abilist | 1 +
> > .../linux/powerpc/powerpc32/fpu/libc.abilist | 1 +
> > .../powerpc/powerpc32/nofpu/libc.abilist | 1 +
> > .../linux/powerpc/powerpc64/be/libc.abilist | 1 +
> > .../linux/powerpc/powerpc64/le/libc.abilist | 1 +
> > .../unix/sysv/linux/riscv/rv32/libc.abilist | 1 +
> > .../unix/sysv/linux/riscv/rv64/libc.abilist | 1 +
> > .../unix/sysv/linux/s390/s390-32/libc.abilist | 1 +
> > .../unix/sysv/linux/s390/s390-64/libc.abilist | 1 +
> > sysdeps/unix/sysv/linux/sh/be/libc.abilist | 1 +
> > sysdeps/unix/sysv/linux/sh/le/libc.abilist | 1 +
> > .../sysv/linux/sparc/sparc32/libc.abilist | 1 +
> > .../sysv/linux/sparc/sparc64/libc.abilist | 1 +
> > .../unix/sysv/linux/x86_64/64/libc.abilist | 1 +
> > .../unix/sysv/linux/x86_64/x32/libc.abilist | 1 +
> > 39 files changed, 170 insertions(+)
> > create mode 100644 nptl/pthread_gettid_np.c
> > create mode 100644 nptl/tst-pthread_gettid_np.c
> >
> > diff --git a/NEWS b/NEWS
> > index 29d3d47b64..0427eb3269 100644
> > --- a/NEWS
> > +++ b/NEWS
> > @@ -16,6 +16,8 @@ Major new features:
> >
> > - Power and absolute-value functions: rsqrt.
> >
> > +* On Linux, the pthread_gettid_np function has been added.
> > +
> > Deprecated and removed features, and other changes affecting compatibility:
> >
> > [Add deprecations, removals and changes affecting compatibility here]
> > diff --git a/manual/process.texi b/manual/process.texi
> > index 8254e5ee86..ae59da6f35 100644
> > --- a/manual/process.texi
> > +++ b/manual/process.texi
> > @@ -239,6 +239,23 @@ especially regarding reuse of the IDs of threads which have exited.
> > This function is specific to Linux.
> > @end deftypefun
> >
> > +@deftypefun pid_t pthread_gettid_np (pthread_t @var{thread})
> > +@standards{Linux, pthread.h}
> > +This function returns the same value that @code{gettid} would return if
> > +executed on the running thread @var{thread}.
> > +
> > +If @var{thread} is no longer running but it is joinable, it is
> > +unspecified whether this function returns -1, or if it returns the
> > +thread ID of the thread while it was running. If @var{thread} is not
> > +running and is not joinable, the behavior is undefined.
> > +
> > +@strong{Portability Note:} Linux thread IDs can be reused rather quickly,
> > +so this function differs from the @code{pthread_getunique_np} function
> > +found on other systems.
> > +
> > +This function is specific to Linux.
> > +@end deftypefun
> > +
> > @node Creating a Process
> > @section Creating a Process
> >
> > diff --git a/nptl/Makefile b/nptl/Makefile
> > index f70d1e55bd..eca00936d7 100644
> > --- a/nptl/Makefile
> > +++ b/nptl/Makefile
> > @@ -124,6 +124,7 @@ routines = \
> > pthread_getname \
> > pthread_getschedparam \
> > pthread_getspecific \
> > + pthread_gettid_np \
> > pthread_join \
> > pthread_join_common \
> > pthread_key_create \
> > @@ -326,6 +327,7 @@ tests = \
> > tst-pthread-timedlock-lockloop \
> > tst-pthread_exit-nothreads \
> > tst-pthread_exit-nothreads-static \
> > + tst-pthread_gettid_np \
> > tst-robust-fork \
> > tst-robustpi1 \
> > tst-robustpi2 \
> > diff --git a/nptl/Versions b/nptl/Versions
> > index 3221de89d1..ef55376dd9 100644
> > --- a/nptl/Versions
> > +++ b/nptl/Versions
> > @@ -378,6 +378,9 @@ libc {
> > tss_get;
> > tss_set;
> > }
> > + GLIBC_2.42 {
> > + pthread_gettid_np;
> > + }
> > GLIBC_PRIVATE {
> > __libc_alloca_cutoff;
> > __lll_lock_wake_private;
> > diff --git a/nptl/pthread_gettid_np.c b/nptl/pthread_gettid_np.c
> > new file mode 100644
> > index 0000000000..bf3a12cd52
> > --- /dev/null
> > +++ b/nptl/pthread_gettid_np.c
> > @@ -0,0 +1,30 @@
> > +/* Get the Linux TID from a pthread_t handle.
> > + 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; see the file COPYING.LIB. If
> > + not, see <https://www.gnu.org/licenses/>. */
> > +
> > +#include <errno.h>
> > +#include <pthreadP.h>
> > +
> > +pid_t
> > +pthread_gettid_np (pthread_t threadid)
> > +{
> > + /* The kernel may concurrently set this field. */
> > + pid_t tid = atomic_load_relaxed (&((struct pthread *) threadid)->tid);
> > + if (tid <= 0)
> > + return -1;
> > + return tid;
> > +}
> > diff --git a/nptl/tst-pthread_gettid_np.c b/nptl/tst-pthread_gettid_np.c
> > new file mode 100644
> > index 0000000000..6a98d864e2
> > --- /dev/null
> > +++ b/nptl/tst-pthread_gettid_np.c
> > @@ -0,0 +1,79 @@
> > +/* Test for pthread_gettid_np.
> > + 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; see the file COPYING.LIB. If
> > + not, see <https://www.gnu.org/licenses/>. */
> > +
> > +#include <errno.h>
> > +#include <pthread.h>
> > +#include <sched.h>
> > +#include <signal.h>
> > +#include <support/check.h>
> > +#include <support/xthread.h>
> > +#include <unistd.h>
> > +
> > +static pthread_barrier_t barrier;
> > +
> > +static pid_t thread_tid;
> > +
> > +static void *
> > +thread_func (void *ignored)
> > +{
> > + thread_tid = gettid ();
> > + TEST_VERIFY (thread_tid != getpid ());
> > + TEST_COMPARE (thread_tid, pthread_gettid_np (pthread_self ()));
> > + xpthread_barrier_wait (&barrier);
> > + /* The main thread calls pthread_gettid_np here. */
> > + xpthread_barrier_wait (&barrier);
> > + return NULL;
> > +}
> > +
> > +static int
> > +do_test (void)
> > +{
> > + TEST_COMPARE (pthread_gettid_np (pthread_self ()), getpid ());
> > + TEST_COMPARE (pthread_gettid_np (pthread_self ()), gettid ());
> > +
> > + xpthread_barrier_init (&barrier, NULL, 2);
> > +
> > + pthread_t thr = xpthread_create (NULL, thread_func, NULL);
> > + xpthread_barrier_wait (&barrier);
> > + TEST_COMPARE (thread_tid, pthread_gettid_np (thr));
> > + xpthread_barrier_wait (&barrier);
> > +
> > + while (true)
> > + {
> > + /* Check if the kernel thread is still running. */
> > + if (tgkill (getpid (), thread_tid, 0))
> > + {
> > + TEST_COMPARE (errno, ESRCH);
> > + break;
> > + }
> > +
> > + pid_t tid = pthread_gettid_np (thr);
> > + if (tid != thread_tid)
> > + {
> > + TEST_COMPARE (tid, -1);
> > + break;
> > + }
> > + TEST_COMPARE (sched_yield (), 0);
> > + }
> > +
> > + TEST_VERIFY (xpthread_join (thr) == NULL);
> > +
> > + return 0;
> > +}
> > +
> > +#include <support/test-driver.c>
> > diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
> > index 050b4ab8d1..b4d10a37c6 100644
> > --- a/sysdeps/nptl/pthread.h
> > +++ b/sysdeps/nptl/pthread.h
> > @@ -1317,6 +1317,11 @@ extern int pthread_getcpuclockid (pthread_t __thread_id,
> > __THROW __nonnull ((2));
> > #endif
> >
> > +#ifdef __USE_GNU
> > +/* Return the Linux TID for THREAD_ID. Returns -1 on failure. */
> > +extern pid_t pthread_gettid_np (pthread_t __thread_id);
> > +#endif
> > +
> >
> > /* Install handlers to be called when a new process is created with FORK.
> > The PREPARE handler is called in the parent process just before performing
> > diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> > index 38db77e4f7..0889725c79 100644
> > --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> > @@ -2750,3 +2750,4 @@ GLIBC_2.39 stdc_trailing_zeros_ull F
> > GLIBC_2.39 stdc_trailing_zeros_us F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> > index 637bfce9fb..b33a52db70 100644
> > --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> > @@ -3097,6 +3097,7 @@ GLIBC_2.4 wprintf F
> > GLIBC_2.4 wscanf F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> > index 4a305cf730..0c78cb6d9d 100644
> > --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> > @@ -2511,3 +2511,4 @@ GLIBC_2.39 stdc_trailing_zeros_ull F
> > GLIBC_2.39 stdc_trailing_zeros_us F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> > index 1d54f71b14..a4571bfcb3 100644
> > --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> > @@ -2803,6 +2803,7 @@ GLIBC_2.4 xprt_register F
> > GLIBC_2.4 xprt_unregister F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> > index ff7e8bc40b..060ab80000 100644
> > --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> > @@ -2800,6 +2800,7 @@ GLIBC_2.4 xprt_register F
> > GLIBC_2.4 xprt_unregister F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> > index c3ed65467d..5c4f912dd8 100644
> > --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> > @@ -2787,3 +2787,4 @@ GLIBC_2.39 stdc_trailing_zeros_ull F
> > GLIBC_2.39 stdc_trailing_zeros_us F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> > index 991475380c..f837bf9dd1 100644
> > --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> > @@ -2824,6 +2824,7 @@ GLIBC_2.4 unshare F
> > GLIBC_2.41 cacheflush F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> > index 4fedf775d4..9ea9e656c1 100644
> > --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> > @@ -3007,6 +3007,7 @@ GLIBC_2.4 unlinkat F
> > GLIBC_2.4 unshare F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
> > index 0024282289..243422f515 100644
> > --- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
> > @@ -2271,3 +2271,4 @@ GLIBC_2.39 stdc_trailing_zeros_ull F
> > GLIBC_2.39 stdc_trailing_zeros_us F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> > index 142595eb3e..88397ad130 100644
> > --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> > @@ -2783,6 +2783,7 @@ GLIBC_2.4 xprt_register F
> > GLIBC_2.4 xprt_unregister F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> > index 85e7746c10..81d6333345 100644
> > --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> > @@ -2950,6 +2950,7 @@ GLIBC_2.4 unlinkat F
> > GLIBC_2.4 unshare F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> > index 91dc1b8378..9522c31329 100644
> > --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> > @@ -2836,3 +2836,4 @@ GLIBC_2.39 stdc_trailing_zeros_ull F
> > GLIBC_2.39 stdc_trailing_zeros_us F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> > index 3440e90f6f..9e760428fb 100644
> > --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> > @@ -2833,3 +2833,4 @@ GLIBC_2.39 stdc_trailing_zeros_ull F
> > GLIBC_2.39 stdc_trailing_zeros_us F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> > index 5ee7b8c52f..8a2df86bed 100644
> > --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> > @@ -2911,6 +2911,7 @@ GLIBC_2.4 unlinkat F
> > GLIBC_2.4 unshare F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> > index 6cb6328e7c..491a9a8e15 100644
> > --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> > @@ -2909,6 +2909,7 @@ GLIBC_2.4 unlinkat F
> > GLIBC_2.4 unshare F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> > index ae7474c0f0..ee36f595a7 100644
> > --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> > @@ -2917,6 +2917,7 @@ GLIBC_2.4 unlinkat F
> > GLIBC_2.4 unshare F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> > index cdf040dec2..083709eb8a 100644
> > --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> > @@ -2819,6 +2819,7 @@ GLIBC_2.4 unlinkat F
> > GLIBC_2.4 unshare F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist
> > index c356a11b1c..dc2d61e45a 100644
> > --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist
> > @@ -2261,3 +2261,4 @@ GLIBC_2.40 setcontext F
> > GLIBC_2.40 swapcontext F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> > index 7937f94cf0..56dfb11160 100644
> > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> > @@ -3140,6 +3140,7 @@ GLIBC_2.4 wprintf F
> > GLIBC_2.4 wscanf F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> > index d6e35f31d2..4951295fd2 100644
> > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> > @@ -3185,6 +3185,7 @@ GLIBC_2.4 wprintf F
> > GLIBC_2.4 wscanf F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> > index 2268d6890d..d161a0e269 100644
> > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> > @@ -2894,6 +2894,7 @@ GLIBC_2.4 wprintf F
> > GLIBC_2.4 wscanf F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> > index 7f61b14bc8..b2354c9cbe 100644
> > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> > @@ -2970,3 +2970,4 @@ GLIBC_2.39 stdc_trailing_zeros_ull F
> > GLIBC_2.39 stdc_trailing_zeros_us F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> > index 4187241f50..931c7332d1 100644
> > --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> > @@ -2514,3 +2514,4 @@ GLIBC_2.39 stdc_trailing_zeros_us F
> > GLIBC_2.40 __riscv_hwprobe F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> > index 8935beccac..187d1849e9 100644
> > --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> > @@ -2714,3 +2714,4 @@ GLIBC_2.39 stdc_trailing_zeros_us F
> > GLIBC_2.40 __riscv_hwprobe F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> > index e69dc7ccf6..b05ab0b4f5 100644
> > --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> > @@ -3138,6 +3138,7 @@ GLIBC_2.4 wprintf F
> > GLIBC_2.4 wscanf F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> > index 7d860001d8..ed29d3ee12 100644
> > --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> > @@ -2931,6 +2931,7 @@ GLIBC_2.4 wprintf F
> > GLIBC_2.4 wscanf F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> > index fcb8161841..1f084b0046 100644
> > --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> > @@ -2830,6 +2830,7 @@ GLIBC_2.4 unlinkat F
> > GLIBC_2.4 unshare F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> > index 3fd078d125..13c45bc570 100644
> > --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> > @@ -2827,6 +2827,7 @@ GLIBC_2.4 unlinkat F
> > GLIBC_2.4 unshare F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> > index 1ce1fe9da7..ba9310be7a 100644
> > --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> > @@ -3159,6 +3159,7 @@ GLIBC_2.4 wprintf F
> > GLIBC_2.4 wscanf F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> > index 07507b86f6..13ac7f307b 100644
> > --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> > @@ -2795,6 +2795,7 @@ GLIBC_2.4 unlinkat F
> > GLIBC_2.4 unshare F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> > index 5acf49dbe8..46b6b616ac 100644
> > --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> > @@ -2746,6 +2746,7 @@ GLIBC_2.4 unlinkat F
> > GLIBC_2.4 unshare F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> > GLIBC_2.5 __readlinkat_chk F
> > GLIBC_2.5 inet6_opt_append F
> > GLIBC_2.5 inet6_opt_find F
> > diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> > index 02d1bb97dc..1f25723c4c 100644
> > --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> > +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> > @@ -2765,3 +2765,4 @@ GLIBC_2.39 stdc_trailing_zeros_ull F
> > GLIBC_2.39 stdc_trailing_zeros_us F
> > GLIBC_2.41 sched_getattr F
> > GLIBC_2.41 sched_setattr F
> > +GLIBC_2.42 pthread_gettid_np F
> >
> > base-commit: 443cb0b5f25129dd0f1e9f9101299d31c4700b7f
> > --
> > 2.48.1
> >
> >
More information about the Libc-alpha
mailing list