about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--resolv/res_libc.c44
2 files changed, 25 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index 8cf0aef018..a128a8018d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2002-12-29  Roland McGrath  <roland@redhat.com>
 
+	* resolv/res_libc.c: Move _res defn magic after res_init defn
+	so _res macro is in effect for that code.
+
 	* Makerules ($(common-objpfx)%.h $(common-objpfx)%.h.d): Fix sed
 	pattern for prepending $(..) so it doesn't affect $(foo).
 
diff --git a/resolv/res_libc.c b/resolv/res_libc.c
index 4f67a31785..67a3467aa7 100644
--- a/resolv/res_libc.c
+++ b/resolv/res_libc.c
@@ -20,28 +20,6 @@
 #include <arpa/nameser.h>
 #include <resolv.h>
 
-#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.  */
-struct __res_state _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
-
 
 /* The following bit is copied from res_data.c (where it is #ifdef'ed
    out) since res_init() should go into libc.so but the rest of that
@@ -87,6 +65,28 @@ res_init(void) {
 	return (__res_vinit(&_res, 1));
 }
 
+/* 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.  */
+struct __res_state _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
 
 #include <shlib-compat.h>