Clean up _res declaration to use __thread unconditionally.
authorRoland McGrath <roland@hack.frob.com>
Tue, 27 Aug 2013 18:04:46 +0000 (11:04 -0700)
committerRoland McGrath <roland@hack.frob.com>
Tue, 27 Aug 2013 18:04:46 +0000 (11:04 -0700)
ChangeLog
include/resolv.h
resolv/res_libc.c

index e73a301..d5fc59b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2013-08-27  Roland McGrath  <roland@hack.frob.com>
 
+       * include/resolv.h [_RESOLV_H_]:
+       Don't include <tls.h>.
+       (__resp, _res): Move declaration and macro out of [_LIBC_REENTRANT].
+       * resolv/res_libc.c: Don't include <tls.h>.
+       (_res): Use __attribute__ ((nocommon)) in place of
+       __attribute__ ((section (".bss"))).
+
        * Makefile ($(common-objpfx)linkobj/libc_pic.a):
        If [sunrpc not in $(subdirs)], define to use libc_pic.a directly.
 
index 30ea877..87b3598 100644 (file)
 
 #ifdef _RESOLV_H_
 
-# ifdef _LIBC_REENTRANT
-#  include <tls.h>
-#  undef _res
-#  ifndef NOT_IN_libc
-#   define __resp __libc_resp
-#  endif
-#  define _res (*__resp)
-extern __thread struct __res_state *__resp attribute_tls_model_ie;
-# else
-#  ifndef __BIND_NOSTATIC
-#   undef _res
-extern struct __res_state _res;
-#  endif
+# ifndef NOT_IN_libc
+#  define __resp __libc_resp
 # endif
+extern __thread struct __res_state *__resp attribute_tls_model_ie;
+# undef _res
+# define _res (*__resp)
 
 /* Now define the internal interfaces.  */
 extern int __res_vinit (res_state, int);
index 48d3200..0b37f46 100644 (file)
@@ -122,9 +122,7 @@ libc_hidden_def (__res_maybe_init)
    This differs from plain `struct __res_state _res;' 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")));
-
-#include <tls.h>
+struct __res_state _res __attribute__ ((nocommon));
 
 #undef __resp
 __thread struct __res_state *__resp = &_res;