From 190da1cd0c221438c563b5b605ff811e9075e210 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 23 Aug 2006 23:20:30 +0000 Subject: sync with psm: update errno handling to be the same on all arches --- libc/sysdeps/linux/common/bits/uClibc_errno.h | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 libc/sysdeps/linux/common/bits/uClibc_errno.h (limited to 'libc/sysdeps/linux/common/bits/uClibc_errno.h') 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 + * + * 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 +# 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 +#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 -- cgit v1.2.3