mirror of git://sourceware.org/git/glibc.git
htl: Add __errno_location and __h_errno_location
As explained on https://sourceware.org/ml/libc-alpha/2020-01/msg00049.html the presence of __errno_location in libpthread.so on GNU/Linux makes libpthread getting linked in for libstdc++. This aligns on that behavior, to avoid issues that only GNU/Hurd would get.
This commit is contained in:
parent
50a78baa8e
commit
25c084e0a7
|
@ -134,6 +134,7 @@ libpthread-routines := pt-attr pt-attr-destroy pt-attr-getdetachstate \
|
||||||
shm-directory \
|
shm-directory \
|
||||||
\
|
\
|
||||||
cthreads-compat \
|
cthreads-compat \
|
||||||
|
herrno \
|
||||||
$(SYSDEPS)
|
$(SYSDEPS)
|
||||||
|
|
||||||
headers := \
|
headers := \
|
||||||
|
|
|
@ -29,6 +29,7 @@ libc {
|
||||||
libpthread {
|
libpthread {
|
||||||
GLIBC_2.2.6 {
|
GLIBC_2.2.6 {
|
||||||
_IO_flockfile; _IO_ftrylockfile; _IO_funlockfile;
|
_IO_flockfile; _IO_ftrylockfile; _IO_funlockfile;
|
||||||
|
__errno_location; __h_errno_location;
|
||||||
}
|
}
|
||||||
GLIBC_2.12 {
|
GLIBC_2.12 {
|
||||||
__pthread_errorcheck_mutexattr; __pthread_recursive_mutexattr;
|
__pthread_errorcheck_mutexattr; __pthread_recursive_mutexattr;
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
/* Copyright (C) 1996-2020 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 <features.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#undef h_errno
|
||||||
|
|
||||||
|
#include <tls.h>
|
||||||
|
|
||||||
|
/* We need to have the error status variable of the resolver
|
||||||
|
accessible in the libc. */
|
||||||
|
extern __thread int __h_errno;
|
||||||
|
|
||||||
|
|
||||||
|
/* When threaded, h_errno may be a per-thread variable. */
|
||||||
|
int *
|
||||||
|
__h_errno_location (void)
|
||||||
|
{
|
||||||
|
return &__h_errno;
|
||||||
|
}
|
|
@ -1,3 +1,7 @@
|
||||||
|
ifeq ($(subdir),htl)
|
||||||
|
libpthread-sysdep_routines += errno-loc
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(subdir),rt)
|
ifeq ($(subdir),rt)
|
||||||
librt-sysdep_routines += timer_routines
|
librt-sysdep_routines += timer_routines
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -145,5 +145,7 @@ GLIBC_2.12 sem_wait F
|
||||||
GLIBC_2.2.6 _IO_flockfile F
|
GLIBC_2.2.6 _IO_flockfile F
|
||||||
GLIBC_2.2.6 _IO_ftrylockfile F
|
GLIBC_2.2.6 _IO_ftrylockfile F
|
||||||
GLIBC_2.2.6 _IO_funlockfile F
|
GLIBC_2.2.6 _IO_funlockfile F
|
||||||
|
GLIBC_2.2.6 __errno_location F
|
||||||
|
GLIBC_2.2.6 __h_errno_location F
|
||||||
GLIBC_2.21 pthread_hurd_cond_timedwait_np F
|
GLIBC_2.21 pthread_hurd_cond_timedwait_np F
|
||||||
GLIBC_2.21 pthread_hurd_cond_wait_np F
|
GLIBC_2.21 pthread_hurd_cond_wait_np F
|
||||||
|
|
Loading…
Reference in New Issue