zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

errno.h (1110B) - Raw


      1 #ifndef _ERRNO_H
      2 #include <stdlib/errno.h>
      3 #if !defined _ISOMAC && !defined __ASSEMBLER__
      4 
      5 # if IS_IN (rtld)
      6 #  include <dl-sysdep.h>
      7 #  ifndef RTLD_PRIVATE_ERRNO
      8 #   error "dl-sysdep.h must define RTLD_PRIVATE_ERRNO!"
      9 #  endif
     10 # else
     11 #  define RTLD_PRIVATE_ERRNO	0
     12 # endif
     13 
     14 # if RTLD_PRIVATE_ERRNO
     15 /* The dynamic linker uses its own private errno variable.
     16    All access to errno inside the dynamic linker is serialized,
     17    so a single (hidden) global variable is all it needs.  */
     18 
     19 #  undef  errno
     20 #  define errno rtld_errno
     21 extern int rtld_errno attribute_hidden;
     22 
     23 # elif IS_IN_LIB && !IS_IN (rtld) && !defined LIBC_NONSHARED
     24 
     25 #  undef  errno
     26 #  if IS_IN (libc)
     27 #   define errno __libc_errno
     28 #  else
     29 #   define errno errno		/* For #ifndef errno tests.  */
     30 #  endif
     31 extern __thread int errno attribute_tls_model_ie;
     32 
     33 # endif	/* IS_IN_LIB */
     34 
     35 # define __set_errno(val) (errno = (val))
     36 
     37 extern int *__errno_location (void) __THROW __attribute_const__
     38 #  if RTLD_PRIVATE_ERRNO
     39      attribute_hidden
     40 #  endif
     41 ;
     42 libc_hidden_proto (__errno_location)
     43 
     44 #endif /* !_ISOMAC && !__ASSEMBLER__ */
     45 #endif /* !_ERRNO_H */