about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2015-01-23 11:31:49 -0500
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2015-01-24 08:40:04 -0500
commitbea58013607c6507108bc73744a0bf63d735f259 (patch)
tree2dd6cbb498ca7e569407030085920937801f5fe3
parent0e87343e204b44468ffad0ec5dc8c8d6068f1227 (diff)
downloadglibc-bea58013607c6507108bc73744a0bf63d735f259.tar.gz
glibc-bea58013607c6507108bc73744a0bf63d735f259.tar.xz
glibc-bea58013607c6507108bc73744a0bf63d735f259.zip
powerpc: Fix powerpc64 build failure with binutils 2.22
GLIBC memset optimization for POWER8 uses the '.machine power8'
directive, which is only supported officially on binutils 2.24+.  This
causes a build failure on older binutils.

Since the requirement of .machine power8 is to correctly assembly the
'mtvsrd' instruction and it is already handled by the MTVSRD_V1_R4
macro, there is no really needed of using it.

The patch replaces the power8 with power7 for .machine directive.

It fixes BZ#17869.
-rw-r--r--ChangeLog4
-rw-r--r--NEWS2
-rw-r--r--sysdeps/powerpc/powerpc64/power8/memset.S5
3 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index cd093808ff..3c5ed3c1d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2015-01-24  Adhemerval Zanellla  <azanella@linux.vnet.ibm.com>
 
+	[BZ #17869]
+	* sysdeps/powerpc/powerpc64/power8/memset.S: Use power7 instead of
+	power8 in .machine directive.
+
 	[BZ #17868]
 	* sysdeps/powerpc/powerpc64/dl-machine.h (resolve_ifunc): Force value
 	set dependency from opd value.
diff --git a/NEWS b/NEWS
index f9ea7cf697..5ca959ee15 100644
--- a/NEWS
+++ b/NEWS
@@ -18,7 +18,7 @@ Version 2.21
   17664, 17665, 17668, 17682, 17702, 17717, 17719, 17722, 17723, 17724,
   17725, 17732, 17733, 17744, 17745, 17746, 17747, 17748, 17775, 17777,
   17780, 17781, 17782, 17791, 17793, 17796, 17797, 17803, 17806, 17834,
-  17844, 17848, 17868, 17870
+  17844, 17848, 17868, 17869, 17870
 
 * A new semaphore algorithm has been implemented in generic C code for all
   machines. Previous custom assembly implementations of semaphore were
diff --git a/sysdeps/powerpc/powerpc64/power8/memset.S b/sysdeps/powerpc/powerpc64/power8/memset.S
index 4596926709..eaff0e6b81 100644
--- a/sysdeps/powerpc/powerpc64/power8/memset.S
+++ b/sysdeps/powerpc/powerpc64/power8/memset.S
@@ -23,7 +23,10 @@
 /* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
    Returns 's'.  */
 
-	.machine power8
+	/* No need to use .machine power8 since mtvsrd is already
+	   handled by the define.  It avoid breakage on binutils
+	   that does not support this machine specifier.  */
+	.machine power7
 EALIGN (memset, 5, 0)
 	CALL_MCOUNT 3