On Thu, Feb 4, 2010 at 10:45 PM, Bernhard Reutner-Fischer <[email protected]> wrote:
>> Pulling in stuff people don't need is going the way of the glibc, and >>the uClibc FAQ explicitly claims that uClibc does things differently. >> Please make sure it keeps living up to that claim. Please do not be >>careless. > > Be assured that we will not instroduce bloat, in contrast, we continue > to cut down on it. I'll have one more attempt at a simple fix for the problem. This change makes _stdio_init weak only in non-PIC builds. This allows building of a minimal static library as before, and it also allows linking the PIC library statically without a crash. The one case where one gets stdio unnecessarily is where uClibc is built PIC (i.e. built with .so support), the app is not using stdio and the user does a static link. >From 629195d44f1ef2082f46e2f323f2217af46d51d4 Mon Sep 17 00:00:00 2001 From: Will Newton <[email protected]> Date: Fri, 5 Feb 2010 11:43:57 +0000 Subject: [PATCH] uClibc: Make _stdio_init weak only when building non-PIC. This allows users to build a minimal non-PIC static uClibc, but also avoids a crash when linking statically with the PIC library. --- include/libc-symbols.h | 6 ++++++ libc/misc/internals/__uClibc_main.c | 2 +- 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/include/libc-symbols.h b/include/libc-symbols.h index 2729d30..3908b57 100644 --- a/include/libc-symbols.h +++ b/include/libc-symbols.h @@ -195,6 +195,12 @@ # define weak_function __attribute__ ((weak)) # define weak_const_function __attribute__ ((weak, __const__)) +# ifdef __PIC__ +# define weak_nonpic_function +# else +# define weak_nonpic_function __attribute__ ((weak)) +# endif + # ifdef HAVE_WEAK_SYMBOLS /* Define ALIASNAME as a weak alias for NAME. diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c index 6e520fa..a835296 100644 --- a/libc/misc/internals/__uClibc_main.c +++ b/libc/misc/internals/__uClibc_main.c @@ -68,7 +68,7 @@ libc_hidden_proto(__errno_location) extern int *weak_const_function __h_errno_location(void); libc_hidden_proto(__h_errno_location) -extern void weak_function _stdio_init(void) attribute_hidden; +extern void weak_nonpic_function _stdio_init(void) attribute_hidden; #ifdef __UCLIBC_HAS_LOCALE__ extern void weak_function _locale_init(void) attribute_hidden; #endif -- 1.5.5.2
0001-uClibc-Make-_stdio_init-weak-only-when-building-non.patch
Description: Binary data
_______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
