mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 21:40:12 +00:00
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 \
|
||||
\
|
||||
cthreads-compat \
|
||||
herrno \
|
||||
$(SYSDEPS)
|
||||
|
||||
headers := \
|
||||
|
@ -29,6 +29,7 @@ libc {
|
||||
libpthread {
|
||||
GLIBC_2.2.6 {
|
||||
_IO_flockfile; _IO_ftrylockfile; _IO_funlockfile;
|
||||
__errno_location; __h_errno_location;
|
||||
}
|
||||
GLIBC_2.12 {
|
||||
__pthread_errorcheck_mutexattr; __pthread_recursive_mutexattr;
|
||||
|
34
htl/herrno.c
Normal file
34
htl/herrno.c
Normal file
@ -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)
|
||||
librt-sysdep_routines += timer_routines
|
||||
endif
|
||||
|
@ -145,5 +145,7 @@ GLIBC_2.12 sem_wait F
|
||||
GLIBC_2.2.6 _IO_flockfile F
|
||||
GLIBC_2.2.6 _IO_ftrylockfile 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_wait_np F
|
||||
|
Loading…
Reference in New Issue
Block a user