about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2012-09-03 14:06:27 +0200
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>2012-09-03 14:08:52 +0200
commit511fa2864a8d01a09b23a6b8b9a599429b7055f6 (patch)
tree1df5140de81d6f2fe46a29a8983d6978ab9ce93d
parent5f30cfec00f64edfc0ad932bf7065de13966b69d (diff)
downloadglibc-511fa2864a8d01a09b23a6b8b9a599429b7055f6.tar.gz
glibc-511fa2864a8d01a09b23a6b8b9a599429b7055f6.tar.xz
glibc-511fa2864a8d01a09b23a6b8b9a599429b7055f6.zip
S/390: Make IFUNC optimized mem* functions hidden.
-rw-r--r--ChangeLog7
-rw-r--r--sysdeps/s390/s390-32/multiarch/ifunc-resolve.c8
-rw-r--r--sysdeps/s390/s390-64/multiarch/ifunc-resolve.c8
3 files changed, 17 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index c130d9de87..ef7477d920 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-09-03  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+	* sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
+	(IFUNC_RESOLVE): Make pointers to the specialized implementations
+	hidden.
+	* sysdeps/s390/s390-64/multiarch/ifunc-resolve.c: Likewise.
+
 2012-09-02  H.J. Lu  <hongjiu.lu@intel.com>
 
 	[BZ #14538]
diff --git a/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c b/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
index fd6e367065..6a86c03c25 100644
--- a/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
+++ b/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
@@ -32,9 +32,11 @@
        ".globl __GI_" #FUNC "\n\t"					\
        ".set   __GI_" #FUNC "," #FUNC "\n");				\
 									\
-  extern void *FUNC##_z10;						\
-  extern void *FUNC##_z196;						\
-  extern void *FUNC##_g5;						\
+  /* Make the declarations of the optimized functions hidden in order
+     to prevent GOT slots being generated for them. */			\
+  extern __attribute__((visibility("hidden"))) void *FUNC##_z196;	\
+  extern __attribute__((visibility("hidden"))) void *FUNC##_z10;	\
+  extern __attribute__((visibility("hidden"))) void *FUNC##_g5;		\
 									\
   void *resolve_##FUNC (unsigned long int dl_hwcap)			\
   {									\
diff --git a/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c b/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
index f980bc9390..5f56764909 100644
--- a/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
+++ b/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
@@ -32,9 +32,11 @@
        ".globl __GI_" #FUNC "\n\t"					\
        ".set   __GI_" #FUNC "," #FUNC "\n");				\
 									\
-  extern void *FUNC##_z10;						\
-  extern void *FUNC##_z196;						\
-  extern void *FUNC##_z900;						\
+  /* Make the declarations of the optimized functions hidden in order
+     to prevent GOT slots being generated for them. */			\
+  extern __attribute__((visibility("hidden"))) void *FUNC##_z196;	\
+  extern __attribute__((visibility("hidden"))) void *FUNC##_z10;	\
+  extern __attribute__((visibility("hidden"))) void *FUNC##_z900;	\
 									\
   void *resolve_##FUNC (unsigned long int dl_hwcap)			\
   {									\