From patchwork Wed Oct 25 07:36:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Modra X-Patchwork-Id: 830122 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-86321-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="fW8pFQCl"; dkim-atps=neutral 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 3yMMQy14Zjz9sRW for ; Wed, 25 Oct 2017 18:36:57 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id; q=dns; s= default; b=BmfL5Q5rRa20Vis6vGMFXbovHOxPT0EwXsN8IBmJ/K423DNX//j3d 5/wF3Y+B2ri786YLl+eZEi4ahGWkj59/yfWLFOoAGLWHwHgka0nCkRjeHllz4jFm mDnbywB9fOlvaWtxlnLbdOfp0VvF30xwpClr2r8m0WfXy1V6KsBE94= 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:from:to:cc:subject:date:message-id; s=default; bh=C71z3RH2PfeXGHfGqKxGjhEBjcQ=; b=fW8pFQCl1KJarUpx1YvcF3Jli0Op jYoi/QuYfUkYb2ubPbWacNK0gswmS55jkRq4YPIfGQ0+zRLXSvY1Unzb7DxoTQul TFCK2oeqFKDB7JsX5y6vXr9QfVH5JafZUEGGSYMI7YzMQOkdns1MGzBuWNnwf5W9 Kv8cFxhFQjzPS2U= Received: (qmail 32185 invoked by alias); 25 Oct 2017 07:36:45 -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 32147 invoked by uid 89); 25 Oct 2017 07:36:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-7.7 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_2, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=meat, needless X-HELO: mail-pf0-f181.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=5OXS573oZVz93Xfrl/nPVbQS31cAR+E9kALHdIBt0j4=; b=awL8+TYPm8BtNCdM8Gm0mHayQXbU/tQ3nMMQGb4af0wzLRvdtAGIDpF6nlhbSHLInp 2sPqFsqLELPApEhtFNkk/dFKG0azIBTCXr1LW61zwqJwnZ0PFYAlDQzJ4v4O/0ssPMJD b9bkWCLtQB+8E3X1l6kpbRAsymakyaIMRnumU4vBtM7Sugdhu/nKIydZOWXTrCtYCEwo tmWlLAXiDmTQcR6U41Q66RyCb4QrBEyimY6/xiD9BP1T6d6nWe+TSCZXisvOdDWnhkhZ RRnIh7GY5J2YW8wEhjD/Nxg0KgD7VpE8OdUivEpugIxC30UY7g6f9Q/aGzYfhQ+4D6Pj OKiw== X-Gm-Message-State: AMCzsaWbnwnIdNfjpBcuSf9VPAnNC+Nbmi+IaWb4gNzPETHA4NQWZrOZ vQaZjXFuY2OpafJ9lQKGfwFpYw== X-Google-Smtp-Source: ABhQp+T/U3oYV3f/FPzvR+o4KOQrLBM+957bdKc4ERKL/hbLOp3FwkTiC3myDsq6gF+ohuL+lLbkTQ== X-Received: by 10.84.254.79 with SMTP id a15mr1072123pln.413.1508916999252; Wed, 25 Oct 2017 00:36:39 -0700 (PDT) From: Alan Modra To: libc-alpha@sourceware.org Cc: Alan Modra Subject: [PATCH 0/7] PowerPC64le multi-arch Date: Wed, 25 Oct 2017 18:06:17 +1030 Message-Id: powerpc64le is only supported on power8 hardware and later, so it doesn't really make sense at the moment to build glibc for powerpc64le with --enable-multi-arch. You get a whole lot of code for older processors that won't ever be executed, bloating glibc, and needless ifunc indirection. This patch series sets about fixing this for powerpc64le. I haven't made it possible to select any base architecture, as that looked like too much work to tackle, but hopefully I've written this patch in a way that could be extended. The first few patches tidy assorted nits, the last one is the meat of the patch. Alan Modra (7): [PowerPC64] Don't define __GI_ variant of isnan for static lib [PowerPC64] Remove duplicate define in stpncpy-power8.S [PowerPC64] Wrap str{,n}cmp-power{8,9}.S in IS_IN(libc) [PowerPC64] Tidy strcasecmp_l-power7.S symbols [PowerPC64] strncase_l-power7.c should use strncase_l.c [PowerPC64] sysdep.h doesn't need to be included in multiarch files [PowerPC64] Multi-arch powerpc64le base arch is power8 sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile | 91 ++++++++++++----- .../powerpc64/fpu/multiarch/e_expf-power8.S | 10 +- sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c | 8 +- .../powerpc64/fpu/multiarch/e_hypot-power7.c | 9 +- sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c | 10 +- .../powerpc64/fpu/multiarch/e_hypotf-power7.c | 9 +- sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c | 10 +- .../powerpc64/fpu/multiarch/s_ceil-power5+.S | 19 ++-- .../powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S | 3 +- sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c | 16 +-- .../powerpc64/fpu/multiarch/s_ceilf-power5+.S | 10 +- .../powerpc64/fpu/multiarch/s_ceilf-ppc64.S | 2 - sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c | 10 +- .../powerpc64/fpu/multiarch/s_copysign-power6.S | 23 +++-- .../powerpc64/fpu/multiarch/s_copysign-ppc64.S | 3 +- .../powerpc/powerpc64/fpu/multiarch/s_copysign.c | 28 +++--- .../powerpc/powerpc64/fpu/multiarch/s_copysignf.c | 8 +- .../powerpc64/fpu/multiarch/s_cosf-power8.S | 10 +- .../powerpc/powerpc64/fpu/multiarch/s_cosf-ppc64.c | 2 - sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c | 8 +- .../powerpc64/fpu/multiarch/s_finite-power7.S | 3 +- .../powerpc64/fpu/multiarch/s_finite-power8.S | 23 +++-- sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c | 44 ++++---- .../powerpc/powerpc64/fpu/multiarch/s_finitef.c | 12 ++- .../powerpc64/fpu/multiarch/s_floor-power5+.S | 19 ++-- .../powerpc64/fpu/multiarch/s_floor-ppc64.S | 3 +- sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c | 16 +-- .../powerpc64/fpu/multiarch/s_floorf-power5+.S | 10 +- .../powerpc64/fpu/multiarch/s_floorf-ppc64.S | 3 - sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c | 10 +- .../powerpc64/fpu/multiarch/s_isinf-power7.S | 3 +- .../powerpc64/fpu/multiarch/s_isinf-power8.S | 23 +++-- sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c | 34 ++++--- sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c | 14 +-- .../powerpc64/fpu/multiarch/s_isnan-power5.S | 3 +- .../powerpc64/fpu/multiarch/s_isnan-power6.S | 3 +- .../powerpc64/fpu/multiarch/s_isnan-power6x.S | 3 +- .../powerpc64/fpu/multiarch/s_isnan-power7.S | 3 +- .../powerpc64/fpu/multiarch/s_isnan-power8.S | 23 +++-- .../powerpc64/fpu/multiarch/s_isnan-ppc64.S | 11 +- sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c | 34 ++++--- sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c | 6 +- .../powerpc64/fpu/multiarch/s_llrint-power6x.S | 3 +- .../powerpc64/fpu/multiarch/s_llrint-power8.S | 19 ++-- .../powerpc64/fpu/multiarch/s_llrint-ppc64.S | 3 +- sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c | 32 +++--- .../powerpc/powerpc64/fpu/multiarch/s_llrintf.c | 15 +-- .../powerpc64/fpu/multiarch/s_llround-power5+.S | 3 +- .../powerpc64/fpu/multiarch/s_llround-power6x.S | 21 ++-- .../powerpc64/fpu/multiarch/s_llround-power8.S | 19 ++-- .../powerpc64/fpu/multiarch/s_llround-ppc64.S | 3 +- .../powerpc/powerpc64/fpu/multiarch/s_llround.c | 32 +++--- .../powerpc64/fpu/multiarch/s_llroundf-ppc64.S | 3 +- .../powerpc/powerpc64/fpu/multiarch/s_llroundf.c | 15 +-- .../powerpc64/fpu/multiarch/s_logb-power7.c | 15 ++- sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c | 16 +-- .../powerpc64/fpu/multiarch/s_logbf-power7.c | 9 +- sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c | 10 +- .../powerpc64/fpu/multiarch/s_logbl-power7.c | 6 +- sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c | 10 +- .../powerpc64/fpu/multiarch/s_modf-power5+.c | 15 ++- sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c | 22 ++-- .../powerpc64/fpu/multiarch/s_modff-power5+.c | 9 +- sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c | 6 +- .../powerpc64/fpu/multiarch/s_round-power5+.S | 19 ++-- .../powerpc64/fpu/multiarch/s_round-ppc64.S | 3 +- sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c | 16 +-- .../powerpc64/fpu/multiarch/s_roundf-power5+.S | 10 +- .../powerpc64/fpu/multiarch/s_roundf-ppc64.S | 2 - sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c | 10 +- .../powerpc64/fpu/multiarch/s_sinf-power8.S | 10 +- .../powerpc/powerpc64/fpu/multiarch/s_sinf-ppc64.c | 2 - sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c | 8 +- .../powerpc64/fpu/multiarch/s_trunc-power5+.S | 19 ++-- .../powerpc64/fpu/multiarch/s_trunc-ppc64.S | 3 +- sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c | 16 +-- .../powerpc64/fpu/multiarch/s_truncf-power5+.S | 10 +- .../powerpc64/fpu/multiarch/s_truncf-ppc64.S | 2 - sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c | 10 +- sysdeps/powerpc/powerpc64/multiarch/Makefile | 112 ++++++++++++++------- sysdeps/powerpc/powerpc64/multiarch/bcopy.c | 6 +- sysdeps/powerpc/powerpc64/multiarch/bzero.c | 2 +- .../powerpc/powerpc64/multiarch/ifunc-impl-list.c | 58 +++++++---- .../powerpc/powerpc64/multiarch/memchr-power7.S | 2 - .../powerpc/powerpc64/multiarch/memchr-power8.S | 14 +-- sysdeps/powerpc/powerpc64/multiarch/memchr.c | 8 +- .../powerpc/powerpc64/multiarch/memcmp-power4.S | 2 - .../powerpc/powerpc64/multiarch/memcmp-power7.S | 2 - .../powerpc/powerpc64/multiarch/memcmp-power8.S | 14 +-- sysdeps/powerpc/powerpc64/multiarch/memcmp.c | 8 +- sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S | 2 - sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S | 2 - .../powerpc/powerpc64/multiarch/memcpy-power4.S | 2 - .../powerpc/powerpc64/multiarch/memcpy-power6.S | 2 - .../powerpc/powerpc64/multiarch/memcpy-power7.S | 10 +- sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S | 2 - sysdeps/powerpc/powerpc64/multiarch/memcpy.c | 4 +- .../powerpc/powerpc64/multiarch/memmove-power7.S | 14 +-- sysdeps/powerpc/powerpc64/multiarch/memmove.c | 8 +- .../powerpc/powerpc64/multiarch/mempcpy-power7.S | 14 +-- sysdeps/powerpc/powerpc64/multiarch/mempcpy.c | 6 +- .../powerpc/powerpc64/multiarch/memrchr-power7.S | 2 - .../powerpc/powerpc64/multiarch/memrchr-power8.S | 14 +-- sysdeps/powerpc/powerpc64/multiarch/memrchr.c | 8 +- .../powerpc/powerpc64/multiarch/memset-power4.S | 2 - .../powerpc/powerpc64/multiarch/memset-power6.S | 2 - .../powerpc/powerpc64/multiarch/memset-power7.S | 2 - .../powerpc/powerpc64/multiarch/memset-power8.S | 14 +-- sysdeps/powerpc/powerpc64/multiarch/memset.c | 4 +- .../powerpc/powerpc64/multiarch/rawmemchr-power7.S | 6 +- sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c | 8 +- .../powerpc/powerpc64/multiarch/stpcpy-power8.S | 10 +- sysdeps/powerpc/powerpc64/multiarch/stpcpy.c | 6 +- .../powerpc/powerpc64/multiarch/stpncpy-power7.S | 2 - .../powerpc/powerpc64/multiarch/stpncpy-power8.S | 18 ++-- sysdeps/powerpc/powerpc64/multiarch/stpncpy.c | 2 +- .../powerpc64/multiarch/strcasecmp-power7.S | 2 - .../powerpc64/multiarch/strcasecmp-power8.S | 14 +-- sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c | 8 +- .../powerpc64/multiarch/strcasecmp_l-power7.S | 16 +-- sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c | 8 +- .../powerpc64/multiarch/strcasestr-power8.S | 16 +-- sysdeps/powerpc/powerpc64/multiarch/strcasestr.c | 8 +- .../powerpc/powerpc64/multiarch/strcat-power8.c | 15 +-- sysdeps/powerpc/powerpc64/multiarch/strcat.c | 2 +- .../powerpc/powerpc64/multiarch/strchr-power7.S | 2 - .../powerpc/powerpc64/multiarch/strchr-power8.S | 10 +- sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S | 2 - sysdeps/powerpc/powerpc64/multiarch/strchr.c | 2 +- .../powerpc/powerpc64/multiarch/strchrnul-power7.S | 2 - .../powerpc/powerpc64/multiarch/strchrnul-power8.S | 10 +- sysdeps/powerpc/powerpc64/multiarch/strchrnul.c | 8 +- .../powerpc/powerpc64/multiarch/strcmp-power7.S | 12 +-- .../powerpc/powerpc64/multiarch/strcmp-power8.S | 24 +++-- .../powerpc/powerpc64/multiarch/strcmp-power9.S | 12 +-- sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S | 2 - sysdeps/powerpc/powerpc64/multiarch/strcmp.c | 15 ++- .../powerpc/powerpc64/multiarch/strcpy-power8.S | 10 +- sysdeps/powerpc/powerpc64/multiarch/strcpy.c | 4 +- .../powerpc/powerpc64/multiarch/strcspn-power8.S | 10 +- sysdeps/powerpc/powerpc64/multiarch/strcspn.c | 10 +- .../powerpc/powerpc64/multiarch/strlen-power7.S | 2 - .../powerpc/powerpc64/multiarch/strlen-power8.S | 10 +- sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S | 2 - sysdeps/powerpc/powerpc64/multiarch/strlen.c | 4 +- .../powerpc/powerpc64/multiarch/strncase-power8.S | 14 +-- sysdeps/powerpc/powerpc64/multiarch/strncase.c | 8 +- .../powerpc64/multiarch/strncase_l-power7.c | 12 ++- sysdeps/powerpc/powerpc64/multiarch/strncase_l.c | 8 +- .../powerpc/powerpc64/multiarch/strncat-power8.c | 12 ++- sysdeps/powerpc/powerpc64/multiarch/strncat.c | 2 +- .../powerpc/powerpc64/multiarch/strncmp-power4.S | 2 - .../powerpc/powerpc64/multiarch/strncmp-power7.S | 2 - .../powerpc/powerpc64/multiarch/strncmp-power8.S | 24 +++-- .../powerpc/powerpc64/multiarch/strncmp-power9.S | 12 +-- .../powerpc/powerpc64/multiarch/strncmp-ppc64.S | 2 - sysdeps/powerpc/powerpc64/multiarch/strncmp.c | 19 ++-- .../powerpc/powerpc64/multiarch/strncpy-power7.S | 2 - .../powerpc/powerpc64/multiarch/strncpy-power8.S | 16 +-- sysdeps/powerpc/powerpc64/multiarch/strncpy.c | 3 +- .../powerpc/powerpc64/multiarch/strnlen-power7.S | 2 - .../powerpc/powerpc64/multiarch/strnlen-power8.S | 14 +-- sysdeps/powerpc/powerpc64/multiarch/strnlen.c | 9 +- .../powerpc/powerpc64/multiarch/strrchr-power7.S | 2 - .../powerpc/powerpc64/multiarch/strrchr-power8.S | 10 +- sysdeps/powerpc/powerpc64/multiarch/strrchr.c | 4 +- .../powerpc/powerpc64/multiarch/strspn-power8.S | 10 +- sysdeps/powerpc/powerpc64/multiarch/strspn.c | 4 +- .../powerpc/powerpc64/multiarch/strstr-power7.S | 28 +++--- sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c | 10 +- sysdeps/powerpc/powerpc64/multiarch/strstr.c | 2 +- .../powerpc/powerpc64/multiarch/wcschr-power7.c | 9 +- sysdeps/powerpc/powerpc64/multiarch/wcschr.c | 12 ++- .../powerpc/powerpc64/multiarch/wcscpy-power7.c | 6 +- sysdeps/powerpc/powerpc64/multiarch/wcscpy.c | 8 +- .../powerpc/powerpc64/multiarch/wcsrchr-power7.c | 6 +- sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c | 8 +- 177 files changed, 1096 insertions(+), 840 deletions(-)