summaryrefslogtreecommitdiffstats
path: root/libc/inet/resolv.c
diff options
context:
space:
mode:
author"Steven J. Hill" <sjhill@realitydiluted.com>2006-01-15 05:30:47 +0000
committer"Steven J. Hill" <sjhill@realitydiluted.com>2006-01-15 05:30:47 +0000
commit402cb6dedfb3d271c7aab269ad9b79b04c21b62d (patch)
tree003ce7df109ff21b4561376c4c4bc690b8b7ba3d /libc/inet/resolv.c
parent46850f098985cb7ca49b7617dd49257634da8561 (diff)
downloaduClibc-alpine-402cb6dedfb3d271c7aab269ad9b79b04c21b62d.tar.bz2
uClibc-alpine-402cb6dedfb3d271c7aab269ad9b79b04c21b62d.tar.xz
Clean up '_res' such that it will now work for, NPTL, linuxthreads and
even no threads. Fix 'pthread_atfork' function and clean up duplicate of '__set_errno' that is not needed.
Diffstat (limited to 'libc/inet/resolv.c')
-rw-r--r--libc/inet/resolv.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
index 0f6cd3532..28ebfd88b 100644
--- a/libc/inet/resolv.c
+++ b/libc/inet/resolv.c
@@ -1191,15 +1191,17 @@ void res_close( void )
/* This needs to be after the use of _res in res_init, above. */
#undef _res
+#ifndef __UCLIBC_HAS_THREADS__
/* 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")));
+#else
+struct __res_state _res __attribute__((section (".bss"))) attribute_hidden;
-#if defined __UCLIBC_HAS_THREADS_NATIVE__ \
- && (!defined NOT_IN_libc || defined IS_IN_libpthread)
-# undef __resp
+# if defined __UCLIBC_HAS_THREADS_NATIVE__
+# undef __resp
__thread struct __res_state *__resp = &_res;
/*
* FIXME: Add usage of hidden attribute for this when used in the shared
@@ -1208,13 +1210,22 @@ __thread struct __res_state *__resp = &_res;
*/
extern __thread struct __res_state *__libc_resp
__attribute__ ((alias ("__resp")));
+# else
+# undef __resp
+struct __res_state *__resp = &_res;
+# endif
#endif
#endif
#ifdef L_res_state
-# if defined __UCLIBC_HAS_THREADS_NATIVE__ \
- && (!defined NOT_IN_libc || defined IS_IN_libpthread)
+# if defined __UCLIBC_HAS_THREADS__
+struct __res_state *
+__res_state (void)
+{
+ return __resp;
+}
+# else
# undef _res
extern struct __res_state _res;
@@ -1225,13 +1236,6 @@ __res_state (void)
{
return &_res;
}
-
-# else
-struct __res_state *
-__res_state (void)
-{
- return __resp;
-}
# endif
#endif