2003-03-15 Roland McGrath <roland@redhat.com>
[kopensolaris-gnu/glibc.git] / resolv / res_libc.c
index 67a3467..763a887 100644 (file)
@@ -77,8 +77,11 @@ 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;
+/* 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")));
 
 /* We declare this with compat_symbol so that it's not
    visible at link time.  Programs must use the accessor functions.  */
@@ -92,7 +95,8 @@ compat_symbol (libc, _res, _res, GLIBC_2_0);
 
 #if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2)
 # undef res_init
-strong_alias (__res_init, __res_init_weak);
+extern int __res_init_weak (void);
 weak_extern (__res_init_weak);
+strong_alias (__res_init, __res_init_weak);
 compat_symbol (libc, __res_init_weak, res_init, GLIBC_2_0);
 #endif