From 87936cd0130414cccc8a7427498dd5491ec2664f Mon Sep 17 00:00:00 2001 From: "Peter S. Mazinger" Date: Wed, 23 Mar 2011 17:08:07 +0100 Subject: errno and *_init cleanup Define a common view of __errno_location, __h_errno_location in common header and use that everywhere, __uClibc_main.c is no special. The rule adopted: for enabled threads we make in libc the __GI_x() variants strong, x() weak and (should) provide another strong x() in libpthread. If threads are disabled, even the __GI_x() variants are weak. _stdio_init,_stdio_term,_locale_init: make all hidden weak in common header Signed-off-by: Peter S. Mazinger Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/common/bits/errno.h | 5 +++++ libc/sysdeps/linux/common/bits/uClibc_locale.h | 2 +- libc/sysdeps/linux/common/bits/uClibc_stdio.h | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'libc/sysdeps/linux') diff --git a/libc/sysdeps/linux/common/bits/errno.h b/libc/sysdeps/linux/common/bits/errno.h index 0bf6354fb..459cc7058 100644 --- a/libc/sysdeps/linux/common/bits/errno.h +++ b/libc/sysdeps/linux/common/bits/errno.h @@ -43,6 +43,11 @@ # ifndef __ASSEMBLER__ /* Function to get address of global `errno' variable. */ extern int *__errno_location (void) __THROW __attribute__ ((__const__)); +# ifdef _LIBC +# ifndef __UCLIBC_HAS_THREADS__ +extern int weak_const_function *__errno_location(void); +# endif +# endif libc_hidden_proto(__errno_location) # ifdef __UCLIBC_HAS_THREADS__ diff --git a/libc/sysdeps/linux/common/bits/uClibc_locale.h b/libc/sysdeps/linux/common/bits/uClibc_locale.h index 05d9b4d40..6273fa392 100644 --- a/libc/sysdeps/linux/common/bits/uClibc_locale.h +++ b/libc/sysdeps/linux/common/bits/uClibc_locale.h @@ -93,7 +93,7 @@ typedef struct __uclibc_locale_struct *__locale_t; #ifdef _LIBC /* extern void _locale_set(const unsigned char *p); */ -/* extern void _locale_init(void); */ +extern void weak_function _locale_init(void) attribute_hidden; #include #include diff --git a/libc/sysdeps/linux/common/bits/uClibc_stdio.h b/libc/sysdeps/linux/common/bits/uClibc_stdio.h index 06000a85c..095220aa6 100644 --- a/libc/sysdeps/linux/common/bits/uClibc_stdio.h +++ b/libc/sysdeps/linux/common/bits/uClibc_stdio.h @@ -327,8 +327,8 @@ struct __STDIO_FILE_STRUCT { **********************************************************************/ #if defined _LIBC && (defined IS_IN_libc || defined NOT_IN_libc) -extern void _stdio_init(void) attribute_hidden; -extern void _stdio_term(void) attribute_hidden; +extern void weak_function _stdio_init(void) attribute_hidden; +extern void weak_function _stdio_term(void) attribute_hidden; #ifdef __STDIO_HAS_OPENLIST -- cgit v1.2.3