From patchwork Fri Jan 23 16:34:34 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 4779 X-Patchwork-Delegate: azanella@linux.vnet.ibm.com Received: (qmail 30781 invoked by alias); 23 Jan 2015 16:35:03 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 30173 invoked by uid 89); 23 Jan 2015 16:34:47 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL, BAYES_00, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: e24smtp02.br.ibm.com Message-ID: <54C2781A.6080700@linux.vnet.ibm.com> Date: Fri, 23 Jan 2015 14:34:34 -0200 From: Adhemerval Zanella User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 MIME-Version: 1.0 To: "GNU C. Library" CC: "Carlos O'Donell" Subject: [PATCH] powerpc: Fix powerpc64 build failure with binutils 2.22 X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15012316-0021-0000-0000-000001B1480C 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. Tested on powerpc64 and powerpc64le. Carlos, I would like to push it to 2.21. --- [BZ #17869] * sysdeps/powerpc/powerpc64/power8/memset.S: Use power7 instead of power8 in .machine directive. -- diff --git a/NEWS b/NEWS index 00115a7..903d925 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. + 17844, 17848, 17869. * 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 4596926..eaff0e6 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