From 41d518360fd2da0f19d6a2f8d8c5f226b201c1e9 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 24 Feb 2011 16:37:21 -0500 Subject: various changes in preparation for dynamic linking support prefer using visibility=hidden for __libc internal data, rather than an accessor function, if the compiler has visibility. optimize with -O3 for PIC targets (shared library). without heavy inlining, reloading the GOT register in small functions kills performance. 20-30% size increase for a single libc.so is not a big deal, compared to comparaible size increase in every static binaries. use -Bsymbolic-functions, not -Bsymbolic. global variables are subject to COPY relocations, and thus binding their addresses in the library at link time will cause library functions to read the wrong (original) copies instead of the copies made in the main program's bss section. add entry point, _start, for dynamic linker. --- src/internal/libc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/internal/libc.c') diff --git a/src/internal/libc.c b/src/internal/libc.c index 954efedf..5f12e295 100644 --- a/src/internal/libc.c +++ b/src/internal/libc.c @@ -1,6 +1,6 @@ #include "libc.h" -#ifdef __PIC__ +#ifdef USE_LIBC_ACCESSOR struct __libc *__libc_loc() { static struct __libc __libc; -- cgit v1.2.1