diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-01-04 19:37:53 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-01-04 19:37:53 +0100 |
commit | 25c084e0a7b5e8d604d0f86b55f343acadf7af5d (patch) | |
tree | 996be57c41ba2b7a08777e73c19a800431cc8bc6 /htl | |
parent | 50a78baa8e385fac36d54d51800dc5c61ef7f139 (diff) | |
download | glibc-25c084e0a7b5e8d604d0f86b55f343acadf7af5d.tar glibc-25c084e0a7b5e8d604d0f86b55f343acadf7af5d.tar.gz glibc-25c084e0a7b5e8d604d0f86b55f343acadf7af5d.tar.bz2 glibc-25c084e0a7b5e8d604d0f86b55f343acadf7af5d.zip |
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.
Diffstat (limited to 'htl')
-rw-r--r-- | htl/Makefile | 1 | ||||
-rw-r--r-- | htl/Versions | 1 | ||||
-rw-r--r-- | htl/herrno.c | 34 |
3 files changed, 36 insertions, 0 deletions
diff --git a/htl/Makefile b/htl/Makefile index e091077a28..b9d3831dd9 100644 --- a/htl/Makefile +++ b/htl/Makefile @@ -134,6 +134,7 @@ libpthread-routines := pt-attr pt-attr-destroy pt-attr-getdetachstate \ shm-directory \ \ cthreads-compat \ + herrno \ $(SYSDEPS) headers := \ diff --git a/htl/Versions b/htl/Versions index c5a616da10..1c306acf5c 100644 --- a/htl/Versions +++ b/htl/Versions @@ -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; diff --git a/htl/herrno.c b/htl/herrno.c new file mode 100644 index 0000000000..66174a03e9 --- /dev/null +++ b/htl/herrno.c @@ -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; +} |