summaryrefslogtreecommitdiff
path: root/inet/herrno.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-11-14 21:23:12 +0000
committerRoland McGrath <roland@gnu.org>2002-11-14 21:23:12 +0000
commitd8b8842b047cf1119609fa24b2ee59ddc69da7fb (patch)
treee8b8367c6b1d00c850fd44dfa2f9b12e8f6ed4d6 /inet/herrno.c
parent6c0b2972dc2d92093a42d5f9bb6857fb65b1b078 (diff)
downloadglibc-d8b8842b047cf1119609fa24b2ee59ddc69da7fb.tar.gz
* sysdeps/generic/errno.c [! USE___THREAD]
[HAVE_ELF && SHARED && DO_VERSIONING] (errno, _errno): Declare these with compat_symbol so they are not link-time visible. [! USE___THREAD] (__libc_errno): New alias for errno. * csu/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE): Add __libc_errno here. * inet/herrno.c [USE___THREAD]: Use this conditional in place of [USE_TLS && HAVE___THREAD]. [! USE___THREAD] [HAVE_ELF && SHARED && DO_VERSIONING] (h_errno, _h_errno): Declare these with compat_symbol so they are not link-time visible. [! USE___THREAD] (__libc_h_errno): New alias for h_errno. * resolv/res_libc.c [! USE___THREAD] [HAVE_ELF && SHARED && DO_VERSIONING] (_res): Likewise. (_res): Use __attribute__ ((section (".bss"))) so we can have an alias. (__libc_res): Define as alias for _res. * resolv/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE): Add __libc_h_errno and __libc_res here. 2002-11-14 Jakub Jelinek <jakub@redhat.com> * csu/Versions (errno): Move STT_TLS symbol to GLIBC_PRIVATE for now. * resolv/Versions (h_errno, _res): Likewise. 2002-11-14 Roland McGrath <roland@redhat.com>
Diffstat (limited to 'inet/herrno.c')
-rw-r--r--inet/herrno.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/inet/herrno.c b/inet/herrno.c
index 406e91ec4b..f0ee81b804 100644
--- a/inet/herrno.c
+++ b/inet/herrno.c
@@ -25,7 +25,7 @@
/* We need to have the error status variable of the resolver
accessible in the libc. */
-#if USE_TLS && HAVE___THREAD
+#if USE___THREAD
__thread int h_errno;
extern __thread int __libc_h_errno __attribute__ ((alias ("h_errno")))
attribute_hidden;
@@ -33,6 +33,17 @@ extern __thread int __libc_h_errno __attribute__ ((alias ("h_errno")))
#else
int h_errno = 0;
weak_alias (h_errno, _h_errno)
+
+/* This alias is needed by libpthread. */
+strong_alias (h_errno, __libc_h_errno)
+
+/* We declare these with compat_symbol so that they are not
+ visible at link time. Programs must use the accessor functions. */
+# if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
+# include <shlib-compat.h>
+compat_symbol (libc, h_errno, h_errno, GLIBC_2_0);
+compat_symbol (libc, _h_errno, _h_errno, GLIBC_2_0);
+# endif
#endif
/* When threaded, h_errno may be a per-thread variable. */