mirror of
https://sourceware.org/git/glibc.git
synced 2025-10-12 19:04:54 +03: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:
@@ -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;
|
||||||
|
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)
|
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
|
||||||
|
Reference in New Issue
Block a user