From patchwork Mon May 30 21:06:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tulio Magno Quites Machado Filho X-Patchwork-Id: 627955 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3rJThy32K1z9t6M for ; Tue, 31 May 2016 07:07:30 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b=VhWavTBm; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:from:to:subject:date; q=dns; s= default; b=PvGZHwRZlpxx72xPor7cDoLTZ6HdokRbfewV4K3XS7L5p0zLj6ooP 1Xckm0NLirFu0tVLmH1nUSNIgRNT3ddk2QRlDXQXqLJAIW+orzGyQ5IIJDkkiGwE tnbImOI2swkRmKIAk3bRpftzGpOFMhmF3sjomEx6D8jUcTo9BmE2/4= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:from:to:subject:date; s=default; bh=9toMgT5HpOIQeYCys3mHIY5l9f4=; b=VhWavTBmJt28AZVD0EaZ5d9r9rl3 eNX0WpVYeH7/6RN8CSNOZFXE9r5tu/1f8EKHsXbgUwNH77+voDVJrzbJqAsiSRf9 37YrS9MGw3kFudWM9oRnFKwPkbx9QcaVDv17enVHWdBneK1vYXDA8j3b/z4+i68l MBB2gIFUJ7JNkIA= Received: (qmail 92734 invoked by alias); 30 May 2016 21:07:24 -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 92724 invoked by uid 89); 30 May 2016 21:07:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=BAYES_00, KAM_LAZY_DOMAIN_SECURITY, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 spammy=Implements, (unknown), Machado, machado X-HELO: mx0a-001b2d01.pphosted.com Message-Id: <201605302107.u4UL3v4e048424@mx0a-001b2d01.pphosted.com> X-IBM-Helo: d24dlp01.br.ibm.com X-IBM-MailFrom: tuliom@linux.vnet.ibm.com X-IBM-RcptTo: libc-alpha@sourceware.org From: "Tulio Magno Quites Machado Filho" To: libc-alpha@sourceware.org Subject: [PATCH] powerpc: Fix --disable-multi-arch build on POWER8 Date: Mon, 30 May 2016 18:06:31 -0300 X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16053021-0032-0000-0000-00000250B2F7 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16053021-0033-0000-0000-00000E6EFD17 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-05-30_11:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=13 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1605300254 Add missing symbols of stpncpy and strcasestr when multi-arch is disabled. Fix memset call from strncpy/stpncpy when multi-arch is disabled. 2016-05-30 Tulio Magno Quites Machado Filho * sysdeps/powerpc/powerpc64/power8/strcasestr.S (__strcasestr): New symbol defined as libc_hidden_def. (strcasestr): Became a weak alias to __strcasestr. * sysdeps/powerpc/powerpc64/power8/strncpy.S: Handle memset calls according to multi-arch support. Move __stpncpy hidden definition from here to... * sysdeps/powerpc/powerpc64/power8/stpncpy.S: ...here. Add symbol stpncpy. * sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S: Undefine libc_hidden_builtin_def. * sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S: Specify which memset symbol to use when multi-arch support is available. --- sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S | 3 +++ sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S | 3 +++ sysdeps/powerpc/powerpc64/power8/stpncpy.S | 4 ++++ sysdeps/powerpc/powerpc64/power8/strcasestr.S | 7 +++++-- sysdeps/powerpc/powerpc64/power8/strncpy.S | 16 ++++++++++++---- 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S index 804e499..e08fbe5 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S @@ -36,4 +36,7 @@ TRACEBACK(__stpncpy_power8) \ END_2(__stpncpy_power8) +#undef libc_hidden_builtin_def +#define libc_hidden_builtin_def(name) + #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S index 3263bbd..7522155 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S @@ -37,4 +37,7 @@ #undef libc_hidden_builtin_def #define libc_hidden_builtin_def(name) +/* memset is used to pad the end of the string. */ +#define MEMSET __memset_power8 + #include diff --git a/sysdeps/powerpc/powerpc64/power8/stpncpy.S b/sysdeps/powerpc/powerpc64/power8/stpncpy.S index 067910b..9393dd4 100644 --- a/sysdeps/powerpc/powerpc64/power8/stpncpy.S +++ b/sysdeps/powerpc/powerpc64/power8/stpncpy.S @@ -18,3 +18,7 @@ #define USE_AS_STPNCPY #include + +weak_alias (__stpncpy, stpncpy) +libc_hidden_def (__stpncpy) +libc_hidden_builtin_def (stpncpy) diff --git a/sysdeps/powerpc/powerpc64/power8/strcasestr.S b/sysdeps/powerpc/powerpc64/power8/strcasestr.S index 24b2b76..60015ae 100644 --- a/sysdeps/powerpc/powerpc64/power8/strcasestr.S +++ b/sysdeps/powerpc/powerpc64/power8/strcasestr.S @@ -81,7 +81,7 @@ /* TODO: change this to .machine power8 when the minimum required binutils allows it. */ .machine power7 -EALIGN (strcasestr, 4, 0) +EALIGN (__strcasestr, 4, 0) CALL_MCOUNT 2 mflr r0 /* Load link register LR to r0. */ std r31, -8(r1) /* Save callers register r31. */ @@ -527,5 +527,8 @@ L(end): cfi_restore(r31) mtlr r0 /* Branch to link register. */ blr -END (strcasestr) +END (__strcasestr) + +weak_alias (__strcasestr, strcasestr) +libc_hidden_def (__strcasestr) libc_hidden_builtin_def (strcasestr) diff --git a/sysdeps/powerpc/powerpc64/power8/strncpy.S b/sysdeps/powerpc/powerpc64/power8/strncpy.S index 437edeb..b7fae6d 100644 --- a/sysdeps/powerpc/powerpc64/power8/strncpy.S +++ b/sysdeps/powerpc/powerpc64/power8/strncpy.S @@ -24,6 +24,16 @@ # define FUNC_NAME strncpy #endif +#ifndef MEMSET +/* For builds without IFUNC support, local calls should be made to internal + GLIBC symbol (created by libc_hidden_builtin_def). */ +# ifdef SHARED +# define MEMSET __GI_memset +# else +# define MEMSET memset +# endif +#endif + #define FRAMESIZE (FRAME_MIN_SIZE+48) /* Implements the function @@ -223,7 +233,7 @@ L(zero_pad_start_1): stdu r1,-FRAMESIZE(r1) cfi_adjust_cfa_offset(FRAMESIZE) - bl __memset_power8 + bl MEMSET nop /* Restore the stack frame. */ @@ -442,8 +452,6 @@ L(zero_pad_start_prepare_1): b L(zero_pad_start_1) END (FUNC_NAME) -#ifdef USE_AS_STPNCPY -libc_hidden_def (__stpncpy) -#else +#ifndef USE_AS_STPNCPY libc_hidden_builtin_def (strncpy) #endif