aboutsummaryrefslogtreecommitdiff
path: root/resolv/res_libc.c
diff options
context:
space:
mode:
Diffstat (limited to 'resolv/res_libc.c')
-rw-r--r--resolv/res_libc.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/resolv/res_libc.c b/resolv/res_libc.c
index 763a88725a..66da110d5f 100644
--- a/resolv/res_libc.c
+++ b/resolv/res_libc.c
@@ -68,27 +68,26 @@ res_init(void) {
/* This needs to be after the use of _res in res_init, above. */
#undef _res
-#include <tls.h>
-
-#if USE___THREAD
-/* With __thread support, this per-thread variable is used in all cases. */
-__thread struct __res_state _res;
-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.
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>
+
+#if USE___THREAD
+#undef __resp
+__thread struct __res_state *__resp = &_res;
+extern __thread struct __res_state *__libc_resp
+ __attribute__ ((alias ("__resp"))) attribute_hidden;
+#endif
+
/* 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>
+#if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
+# include <shlib-compat.h>
compat_symbol (libc, _res, _res, GLIBC_2_0);
-# endif
#endif
#include <shlib-compat.h>