#ifndef _ERRNO_H
-
#include <stdlib/errno.h>
+#if !defined _ISOMAC && !defined __ASSEMBLER__
-#if defined _ERRNO_H && !defined _ISOMAC && !defined __cplusplus
-
-# ifdef IS_IN_rtld
+# if IS_IN (rtld)
# include <dl-sysdep.h>
+# ifndef RTLD_PRIVATE_ERRNO
+# error "dl-sysdep.h must define RTLD_PRIVATE_ERRNO!"
+# endif
+# else
+# define RTLD_PRIVATE_ERRNO 0
# endif
# if RTLD_PRIVATE_ERRNO
# define errno rtld_errno
extern int rtld_errno attribute_hidden;
-# else
+# elif IS_IN_LIB
# include <tls.h>
-# if USE___THREAD
-# undef errno
-# ifndef NOT_IN_libc
-# define errno __libc_errno
-# else
-# define errno errno /* For #ifndef errno tests. */
-# endif
-extern __thread int errno attribute_tls_model_ie;
+# undef errno
+# if IS_IN (libc)
+# define errno __libc_errno
+# else
+# define errno errno /* For #ifndef errno tests. */
# endif
+extern __thread int errno attribute_tls_model_ie;
-# endif /* RTLD_PRIVATE_ERRNO */
+# endif /* IS_IN_LIB */
# define __set_errno(val) (errno = (val))
-# ifndef __ASSEMBLER__
-extern int *__errno_location (void) __THROW __attribute__ ((__const__))
+extern int *__errno_location (void) __THROW __attribute_const__
# if RTLD_PRIVATE_ERRNO
attribute_hidden
# endif
;
libc_hidden_proto (__errno_location)
-# endif
-
-#endif /* _ERRNO_H */
-#endif /* ! _ERRNO_H */
+#endif /* !_ISOMAC && !__ASSEMBLER__ */
+#endif /* !_ERRNO_H */