mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef _ERRNO_H
 | 
						|
 | 
						|
#include <stdlib/errno.h>
 | 
						|
 | 
						|
#if defined _ERRNO_H && !defined _ISOMAC && !defined __cplusplus
 | 
						|
 | 
						|
# ifdef 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
 | 
						|
/* The dynamic linker uses its own private errno variable.
 | 
						|
   All access to errno inside the dynamic linker is serialized,
 | 
						|
   so a single (hidden) global variable is all it needs.  */
 | 
						|
 | 
						|
#  undef  errno
 | 
						|
#  define errno rtld_errno
 | 
						|
extern int rtld_errno attribute_hidden;
 | 
						|
 | 
						|
# elif !defined NOT_IN_libc || defined IN_LIB
 | 
						|
 | 
						|
#  include <tls.h>
 | 
						|
 | 
						|
#  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;
 | 
						|
 | 
						|
# endif	/* !NOT_IN_libc || IN_LIB */
 | 
						|
 | 
						|
# define __set_errno(val) (errno = (val))
 | 
						|
 | 
						|
# ifndef __ASSEMBLER__
 | 
						|
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 */
 |