[PATCH] Enable hidden visibility in libc.a compiled with PIE
H.J. Lu
hongjiu.lu@intel.com
Tue Aug 8 16:40:00 GMT 2017
When building libc.a with PIE, enable hidden visibility to allow direct
access to definitions within libc.a without using GOT.
Size comparison of elf/ldconfig when the compiler defaults to -fPIE:
On x86-64:
text data bss dec hex
Before: 619206 20132 5488 644826 9d6da
After : 619062 20132 5488 644682 9d64a
On i686:
text data bss dec hex
Before: 556305 10816 3056 570177 8b341
After : 553688 10756 3056 567500 8a8cc
OK for master?
H.J.
---
* include/libc-symbols.h (attribute_hidden): Enable hidden
visibility in libc.a compiled with PIE.
---
include/libc-symbols.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index fe3ab81c51..d6a1c260f6 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -363,7 +363,8 @@ for linking")
strong_alias(real, name)
#endif
-#if defined SHARED || defined LIBC_NONSHARED
+#if defined SHARED || defined LIBC_NONSHARED \
+ || (BUILD_PIE_DEFAULT && IS_IN (libc))
# define attribute_hidden __attribute__ ((visibility ("hidden")))
#else
# define attribute_hidden
--
2.13.4
More information about the Libc-alpha
mailing list