summaryrefslogtreecommitdiff
path: root/libc/sysdeps
diff options
context:
space:
mode:
authorPeter S. Mazinger <ps.m@gmx.net>2011-03-23 17:08:07 +0100
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2012-06-15 14:00:32 +0200
commit87936cd0130414cccc8a7427498dd5491ec2664f (patch)
treedd839ff1c4b64f9961309203c876f4378a98d4c1 /libc/sysdeps
parentcfe1298282b9b49f11c0002b1f9cc98da2ad0065 (diff)
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 <ps.m@gmx.net> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/sysdeps')
-rw-r--r--libc/sysdeps/linux/common/bits/errno.h5
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_locale.h2
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_stdio.h4
3 files changed, 8 insertions, 3 deletions
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 <stddef.h>
#include <stdint.h>
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