]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
* sysdeps/generic/errno.c [! USE___THREAD]
authorRoland McGrath <roland@gnu.org>
Thu, 14 Nov 2002 21:23:12 +0000 (21:23 +0000)
committerRoland McGrath <roland@gnu.org>
Thu, 14 Nov 2002 21:23:12 +0000 (21:23 +0000)
[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>

ChangeLog
csu/Versions
inet/herrno.c
resolv/Versions
resolv/res_libc.c
sysdeps/generic/errno.c

index 6a643229a927c016306a5f48500f3883afb2782e..1f6afc8ecbb31df7f9d562ef16ff5be46546ddfe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,29 @@
+2002-11-14  Roland McGrath  <roland@redhat.com>
+
+       * 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>
 
        * Makerules (%.dynsym): Remove $(objpfx) from target and dep.
index f0dfe91ca645ec59248f699c44bb2284e46508fc..bd82a96149306785c6950eef6a3219b88680e662 100644 (file)
@@ -17,10 +17,14 @@ libc {
     # New special glibc functions.
     gnu_get_libc_release; gnu_get_libc_version;
   }
-  GLIBC_2.3 {
+  GLIBC_PRIVATE {
 %if USE_TLS && HAVE___THREAD
     # This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
     errno;
+%else
+    # This internal alias is solely to give libpthread access
+    # to the variable that is not directly user-visible at link time.
+    __libc_errno;
 %endif
   }
 }
index 406e91ec4baafa4689488fc3c9152d462e529511..f0ee81b804065ef4351af3130f30c1bc690835cb 100644 (file)
@@ -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.  */
index 09dca6aa2a82cd4541d70054c6cf5b3c604a2e29..238d579d8cf55fc4e771e0852694beeb28db3e99 100644 (file)
@@ -29,15 +29,18 @@ libc {
     # r*
     __res_state; __res_init; __res_nclose; __res_ninit; _res_hconf;
   }
-  GLIBC_2.3 {
+  GLIBC_PRIVATE {
+    __gai_sigqueue;
+
 %if USE_TLS && HAVE___THREAD
     # This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
     h_errno; _res;
+%else
+    # These internal aliases are solely to give libpthread access
+    # to the variables that are not directly user-visible.
+    __libc_h_errno; __libc_res;
 %endif
   }
-  GLIBC_PRIVATE {
-    __gai_sigqueue;
-  }
 }
 
 libresolv {
index 60f7febf056c59fe9593b4c0a87e96bd9e8b406c..b1132b0ffd08323162d2b65c32dac810ed276abd 100644 (file)
@@ -31,8 +31,22 @@ extern __thread struct __res_state __libc_res __attribute__ ((alias ("_res")))
   attribute_hidden;
 # define _res __libc_res
 #else
-/* The resolver state for use by single-threaded programs.  */
-struct __res_state _res;
+/* The resolver state for use by single-threaded programs.
+
+   This differs from a plain uninitialized definition in that it doesn't
+   create a common definition, but a plain symbol that resides in .bss,
+   which can have an alias.  */
+struct __res_state _res __attribute__ ((section (".bss")));
+
+/* This alias is needed by libpthread.  */
+strong_alias (_res, __libc_res)
+
+/* We declare this with compat_symbol so that it's 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, _res, _res, GLIBC_2_0);
+# endif
 #endif
 
 /* This function is used to access the resolver state in
index e33c6b88ad5dc1b4ef49d8c41991d3942d6265c3..45c9639095089c98a2328ffed8da4fc8c418de40 100644 (file)
@@ -31,4 +31,15 @@ extern __thread int __libc_errno __attribute__ ((alias ("errno")))
    which can have an alias.  */
 int errno __attribute__ ((section (".bss")));
 strong_alias (errno, _errno)
+
+/* This alias is needed by libpthread.  */
+strong_alias (errno, __libc_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, errno, errno, GLIBC_2_0);
+compat_symbol (libc, _errno, _errno, GLIBC_2_0);
+# endif
 #endif