This is the mail archive of the mailing list for the glibc project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[COMMITTED PATCH] Clean up _res declaration to use __thread unconditionally.

There is bit rot in the [!_LIBC_REENTRANT] case for _res.  Since we already
use __thread unconditionally for errno, I've just made its use for _res be
unconditional too.


	* 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"))).

--- a/include/resolv.h
+++ b/include/resolv.h
@@ -13,20 +13,12 @@
 #ifdef _RESOLV_H_
-#  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);
--- 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;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]