summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--include/resolv.h18
-rw-r--r--resolv/res_libc.c4
3 files changed, 13 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index e73a301361..d5fc59bd79 100644
--- 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.
diff --git a/include/resolv.h b/include/resolv.h
index 30ea8776b5..87b3598330 100644
--- a/include/resolv.h
+++ b/include/resolv.h
@@ -13,20 +13,12 @@
#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);
diff --git a/resolv/res_libc.c b/resolv/res_libc.c
index 48d3200b7e..0b37f46aea 100644
--- a/resolv/res_libc.c
+++ b/resolv/res_libc.c
@@ -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;