diff options
author | Mike Frysinger <vapier@gentoo.org> | 2006-08-23 23:20:30 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2006-08-23 23:20:30 +0000 |
commit | 190da1cd0c221438c563b5b605ff811e9075e210 (patch) | |
tree | ca5177a27d154dfa08b85d678ce6e33ac0672522 /libc/sysdeps/linux/common/bits/uClibc_errno.h | |
parent | e0605c73da33c6f06b13c4bdf5cb42db97cd4b30 (diff) |
sync with psm: update errno handling to be the same on all arches
Diffstat (limited to 'libc/sysdeps/linux/common/bits/uClibc_errno.h')
-rw-r--r-- | libc/sysdeps/linux/common/bits/uClibc_errno.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/common/bits/uClibc_errno.h b/libc/sysdeps/linux/common/bits/uClibc_errno.h new file mode 100644 index 000000000..9da9f8155 --- /dev/null +++ b/libc/sysdeps/linux/common/bits/uClibc_errno.h @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org> + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + */ +#ifndef _BITS_UCLIBC_ERRNO_H +#define _BITS_UCLIBC_ERRNO_H 1 + +#ifdef IS_IN_rtld +# undef errno +# define errno _dl_errno +extern int _dl_errno; // attribute_hidden; +#elif defined __UCLIBC_HAS_THREADS__ +# include <tls.h> +# if USE___THREAD +# undef errno +# ifndef NOT_IN_libc +# define errno __libc_errno +# else +# define errno errno +# endif +extern __thread int errno __attribute_tls_model_ie; +# endif /* USE___THREAD */ +#endif /* IS_IN_rtld */ + +#define __set_errno(val) (errno = (val)) + +#ifndef __ASSEMBLER__ +extern int *__errno_location (void) __THROW __attribute__ ((__const__)) +# ifdef IS_IN_rtld + attribute_hidden +# endif +; +#include <tls.h> +#if USE___THREAD +libc_hidden_proto(__errno_location) +#endif + +/* We now need a declaration of the `errno' variable. */ +# ifndef __UCLIBC_HAS_THREADS__ +/*extern int errno;*/ +libc_hidden_proto(errno) +# endif +#endif /* !__ASSEMBLER__ */ + +#endif |