diff options
Diffstat (limited to 'include/resolv.h')
-rw-r--r-- | include/resolv.h | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/include/resolv.h b/include/resolv.h index fc2fa9b99..e0cd35db1 100644 --- a/include/resolv.h +++ b/include/resolv.h @@ -279,14 +279,10 @@ struct res_sym { /* 0x00008000 */ /* Things involving an internal (static) resolver context. */ -#if 0 __BEGIN_DECLS extern struct __res_state *__res_state(void) __attribute__ ((__const__)); __END_DECLS #define _res (*__res_state()) -#else -extern struct __res_state _res; -#endif #define fp_nquery __fp_nquery #define fp_query __fp_query @@ -425,6 +421,24 @@ int res_nsend (res_state, const u_char *, int, u_char *, int) __THROW; void res_nclose (res_state) __THROW; __END_DECLS -#endif + +# if _LIBC +# ifdef __UCLIBC_HAS_THREADS__ +# if defined __UCLIBC_HAS_TLS__ \ + && (!defined NOT_IN_libc || defined IS_IN_libpthread) +# undef _res +# ifndef NOT_IN_libc +# define __resp __libc_resp +# endif +# define _res (*__resp) +extern __thread struct __res_state *__resp attribute_tls_model_ie; +# endif +# else +# undef _res +# define _res (*__resp) +extern struct __res_state *__resp; +# endif /* __UCLIBC_HAS_TLS__ */ +# endif /* __UCLIBC_HAS_THREADS__ */ +# endif /* _LIBC */ #endif /* !_RESOLV_H_ */ |