Index: sys-libs/zlib/files/zlib-1.2.3-visibility-support.patch |
diff --git a/sys-libs/zlib/files/zlib-1.2.3-visibility-support.patch b/sys-libs/zlib/files/zlib-1.2.3-visibility-support.patch |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ceb065e9c7bb90760757a59e33f27aff198f9226 |
--- /dev/null |
+++ b/sys-libs/zlib/files/zlib-1.2.3-visibility-support.patch |
@@ -0,0 +1,45 @@ |
+Only export symbols that should be exported. |
+ |
+Patch by Mike Frysinger |
+ |
+http://bugs.gentoo.org/32764 |
+http://bugs.gentoo.org/149929 |
+ |
+--- zlib-1.2.3/configure |
++++ zlib-1.2.3/configure |
+@@ -209,6 +209,20 @@ |
+ fi |
+ |
+ cat > $test.c <<EOF |
++int foo __attribute__ ((visibility ("hidden"))); |
++int main() |
++{ |
++ return 0; |
++} |
++EOF |
++if ($CC -c -fvisibility=hidden $CFLAGS $test.c) 2>/dev/null; then |
++ CFLAGS="$CFLAGS -DHAS_attribute_visibility -fvisibility=hidden" |
++ echo "Checking for attribute(visibility) support... Yes." |
++else |
++ echo "Checking for attribute(visibility) support... No." |
++fi |
++ |
++cat > $test.c <<EOF |
+ #include <stdio.h> |
+ #include <stdarg.h> |
+ #include "zconf.h" |
+--- zlib-1.2.3/zconf.in.h |
++++ zlib-1.2.3/zconf.in.h |
+@@ -244,7 +244,11 @@ |
+ #endif |
+ |
+ #ifndef ZEXTERN |
+-# define ZEXTERN extern |
++# if defined(ZLIB_INTERNAL) && defined(HAS_attribute_visibility) |
++# define ZEXTERN extern __attribute__ ((visibility("default"))) |
++# else |
++# define ZEXTERN extern |
++# endif |
+ #endif |
+ #ifndef ZEXPORT |
+ # define ZEXPORT |