From patchwork Wed Oct 25 07:36:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Modra X-Patchwork-Id: 23797 X-Patchwork-Delegate: azanella@linux.vnet.ibm.com Received: (qmail 35819 invoked by alias); 25 Oct 2017 07:37:23 -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 35564 invoked by uid 89); 25 Oct 2017 07:37:20 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.3 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=le, 1618, 3513 X-HELO: mail-pf0-f174.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:in-reply-to :references:in-reply-to:references; bh=682KPUuzS9BKNdbbds5VFhVu1CAptcB+jSlyi6lFnt8=; b=MrIDkjp7Qn1YgP3rc0tE9CB0G/KeMbAOuztiADThcPrJHNM66Wut7rGkLUSX4psne7 R3fCiKYAInCgdpCOe57g9T/pkqpBohObU3bvV0G7Ge2iMTvC5Z2JS0oYxhnwonGwveSf tuW7LlEHyahelq/3xIKyvoritZkH/o2Fxf1t+KvMc5G3DQwLPH7/DOOWFtpUFYQ0ziyG QtzluQF1yq3IlzpLrebVzzWShQzD1qWU3yIQ3DW1FzUyUyWVu8fyTwxfPdT9rzEhyk5l 834DLaEt6J9laehROa0hvYA7ybGmMngSlpEPM01RpH9Eh3PlzvGAFfulxoOEiiuoa7wC gHsw== X-Gm-Message-State: AMCzsaUzNDqGKVkymLYM3w/+kGfpYn4HswelU1inlmmTrtaFfidSTvBw qqjkXT4xgql7mINstilIe70Xdw== X-Google-Smtp-Source: ABhQp+SLLn/rgeWkZvYHdIJAqOp+8QhksZ0t9rNpfHskR+3Q/JvkcQSWZ70F3iY/pvkKllt8aXlYkQ== X-Received: by 10.99.114.93 with SMTP id c29mr1215142pgn.421.1508917021016; Wed, 25 Oct 2017 00:37:01 -0700 (PDT) From: Alan Modra To: libc-alpha@sourceware.org Cc: Alan Modra Subject: [PATCH 7/7] [PowerPC64] Multi-arch powerpc64le base arch is power8 Date: Wed, 25 Oct 2017 18:06:24 +1030 Message-Id: In-Reply-To: References: In-Reply-To: References: This patch changes the base code support to power8, resulting in just two ifuncs being used on powerpc64le. The idea is a) If a file produces code that wouldn't be compiled with a -mcpu=power8 non-multiarch build, then we don't want to compile it for multiarch. That's done by modifying sysdep_routines in the Makefiles. b) If discarding older cpu support would then result in an ifunc that selects just one function, kill the ifunc, and modify the -.{c,S} file to produce the standard function symbol rather than the - version. c) Where an ifunc selects two or more variants, keep just those we want for powerpc64le. Since we apparently don't emit ifuncs for libc.a that means the base -.{c,S} needs to be modified to emit the standard function symbol when non-shared. There are a few wrinkles. __strstr_power7 calls __strstr_ppc, so strstr-ppc64 needs to be added to sysdep_routines. The patch also fixes bugs in ifunc-impl-list.c. * sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile (sysdep-CPPFLAGS): Define MULTI_ARCH_POWER8. (sysdep_calls): Exclude all but power8 and later or most recent routines if no power8 support, for MULTI_ARCH_POWER8. (libm-sysdep_routines): Likewise. * sysdeps/powerpc/powerpc64/multiarch/Makefile (sysdep_routines): Likewise, but include strstr-ppc64 for powerpc64le. (sysdep-CPPFLAGS): Define MULTI_ARCH_POWER8. * sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c: Move placement of strcmp.c entry to SHARED section. Move strchrnul.c entry to !SHARED. Add MULTI_ARCH_POWER8 entries. * sysdeps/powerpc/powerpc64/multiarch/strcmp.c: Produce ifunc with just power8 and power9 variants when MULTI_ARCH_POWER8. * sysdeps/powerpc/powerpc64/multiarch/strncmp.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S: Don't produce anything when !MULTI_ARCH_POWER8. Arrange to emit __strcmp_power8 and __GI_strcmp for MULTI_ARCH_POWER8 SHARED, and strcmp when MULTI_ARCH_POWER8 !SHARED. * sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S: Formatting. * sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c: Don't output __GI_strstr for MULTI_ARCH_POWER8. * sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c: Don't produce anything when MULTI_ARCH_POWER8. * sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/bcopy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/bzero.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memcmp.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memcpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memmove.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/mempcpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memrchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memset.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/stpcpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/stpncpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcasestr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcat.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strchrnul.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcspn.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strlen.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncase.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncase_l.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncat.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strnlen.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strrchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strspn.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strstr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/wcschr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/wcscpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S: Don't define machine specific symbol or disable alias/compat/libc macros when MULTI_ARCH_POWER8. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-power8.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-power8.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memchr-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memcmp-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memrchr-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memset-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcspn-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncase-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strnlen-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strspn-power8.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c: Insert included file contents but don't include unnecessary header and don't define machine specific symbol or disable alias/compat/libc macros when MULTI_ARCH_POWER8. * sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c: Likewise. * sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c: Likewise. diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index 73f2f69..5296ce7 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -1,35 +1,74 @@ +ifeq (,$(findstring -DMULTI_ARCH,$(sysdep-CPPFLAGS))) +ifneq (,$(filter %le,$(config-machine))) +sysdep-CPPFLAGS += -DMULTI_ARCH_POWER8=1 +endif +endif + ifeq ($(subdir),math) # These functions are built both for libc and libm because they're required # by printf. While the libc objects have the prefix s_, the libm ones are # prefixed with m_. -sysdep_calls := s_copysign-power6 s_copysign-ppc64 \ - s_finite-power8 s_finite-power7 s_finite-ppc64 \ - s_finitef-ppc64 \ - s_isinf-power8 s_isinf-ppc64 \ - s_isinff-ppc64 s_isinf-power7 \ - s_isnan-power8 s_isnan-power7 s_isnan-power6x s_isnan-power6 \ - s_isnan-power5 s_isnan-ppc64 \ - s_modf-power5+ s_modf-ppc64 \ - s_modff-power5+ s_modff-ppc64 +sysdep_calls := \ + s_copysign-power6 \ + s_finite-power8 \ + s_isinf-power8 \ + s_isnan-power8 \ + s_modf-power5+ \ + s_modff-power5+ + +ifeq (,$(findstring -DMULTI_ARCH_POWER8=1,$(sysdep-CPPFLAGS))) +sysdep_calls += \ + s_copysign-ppc64 \ + s_finite-power7 s_finite-ppc64 s_finitef-ppc64 \ + s_isinf-power7 s_isinf-ppc64 s_isinff-ppc64 \ + s_isnan-power7 s_isnan-power6x s_isnan-power6 s_isnan-power5 \ + s_isnan-ppc64 \ + s_modf-ppc64 \ + s_modff-ppc64 +endif sysdep_routines += $(sysdep_calls) -libm-sysdep_routines += s_llround-power6x \ - s_llround-power5+ s_llround-ppc64 s_ceil-power5+ \ - s_ceil-ppc64 s_ceilf-power5+ s_ceilf-ppc64 \ - s_floor-power5+ s_floor-ppc64 s_floorf-power5+ \ - s_floorf-ppc64 s_round-power5+ s_round-ppc64 \ - s_roundf-power5+ s_roundf-ppc64 s_trunc-power5+ \ - s_trunc-ppc64 s_truncf-power5+ s_truncf-ppc64 \ - s_llrint-power6x s_llrint-ppc64 \ - s_logb-power7 s_logbf-power7 \ - s_logbl-power7 s_logb-ppc64 s_logbf-ppc64 \ - s_logbl-ppc64 e_hypot-ppc64 \ - e_hypot-power7 e_hypotf-ppc64 e_hypotf-power7 \ - s_llrint-power8 s_llround-power8 s_llroundf-ppc64 \ - e_expf-power8 e_expf-ppc64 \ - s_sinf-ppc64 s_sinf-power8 \ - s_cosf-ppc64 s_cosf-power8 \ - $(sysdep_calls:s_%=m_%) +libm-sysdep_routines += $(sysdep_calls:s_%=m_%) \ + e_expf-power8 \ + e_hypot-power7 \ + e_hypotf-power7 \ + s_ceil-power5+ \ + s_ceilf-power5+ \ + s_cosf-power8 \ + s_floor-power5+ \ + s_floorf-power5+ \ + s_llrint-power8 \ + s_llround-power8 \ + s_logb-power7 \ + s_logbf-power7 \ + s_logbl-power7 \ + s_round-power5+ \ + s_roundf-power5+ \ + s_sinf-power8 \ + s_trunc-power5+ \ + s_truncf-power5+ + +ifeq (,$(findstring -DMULTI_ARCH_POWER8=1,$(sysdep-CPPFLAGS))) +libm-sysdep_routines += \ + e_expf-ppc64 \ + e_hypot-ppc64 \ + e_hypotf-ppc64 \ + s_ceil-ppc64 \ + s_ceilf-ppc64 \ + s_cosf-ppc64 \ + s_floor-ppc64 \ + s_floorf-ppc64 \ + s_llrint-power6x s_llrint-ppc64 \ + s_llround-power6x s_llround-power5+ s_llround-ppc64 s_llroundf-ppc64 \ + s_logb-ppc64 \ + s_logbf-ppc64 \ + s_logbl-ppc64 \ + s_round-ppc64 \ + s_roundf-ppc64 \ + s_sinf-ppc64 \ + s_trunc-ppc64 \ + s_truncf-ppc64 +endif CFLAGS-s_logbf-power7.c = -mcpu=power7 CFLAGS-s_logbl-power7.c = -mcpu=power7 diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S index c0c3adc..928236f 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#undef strong_alias -#define strong_alias(a, b) +#ifndef MULTI_ARCH_POWER8 +# undef strong_alias +# define strong_alias(a, b) -#define __ieee754_expf __ieee754_expf_power8 +# define __ieee754_expf __ieee754_expf_power8 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c index 5770936..c738c89 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c @@ -16,9 +16,10 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include "init-arch.h" extern __typeof (__ieee754_expf) __ieee754_expf_ppc64 attribute_hidden; extern __typeof (__ieee754_expf) __ieee754_expf_power8 attribute_hidden; @@ -29,3 +30,4 @@ libc_ifunc (__ieee754_expf, : __ieee754_expf_ppc64); strong_alias (__ieee754_expf, __expf_finite) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c index dbe9b33..5e85126 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c @@ -16,4 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# undef strong_alias +# define strong_alias(a, b) + +# define __ieee754_hypot __ieee754_hypot_power7 +#endif + +#include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c index 6a3d60a..934d2ec 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__ieee754_hypot) __ieee754_hypot_ppc64 attribute_hidden; extern __typeof (__ieee754_hypot) __ieee754_hypot_power7 attribute_hidden; @@ -30,3 +31,4 @@ libc_ifunc (__ieee754_hypot, : __ieee754_hypot_ppc64); strong_alias (__ieee754_hypot, __hypot_finite) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c index 7058486..80e8f4d 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c @@ -16,4 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# undef strong_alias +# define strong_alias(a, b) + +# define __ieee754_hypotf __ieee754_hypotf_power7 +#endif + +#include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c index 2c8112d..a728d8e 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__ieee754_hypotf) __ieee754_hypotf_ppc64 attribute_hidden; extern __typeof (__ieee754_hypotf) __ieee754_hypotf_power7 attribute_hidden; @@ -30,3 +31,4 @@ libc_ifunc (__ieee754_hypotf, : __ieee754_hypotf_ppc64); strong_alias (__ieee754_hypotf, __hypotf_finite) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S index 535298d..7cb0201 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S @@ -16,15 +16,17 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef weak_alias -#define weak_alias(a,b) -#undef strong_alias -#define strong_alias(a,b) -#undef compat_symbol -#define compat_symbol(a,b,c,d) +# undef weak_alias +# define weak_alias(a,b) +# undef strong_alias +# define strong_alias(a,b) +# undef compat_symbol +# define compat_symbol(a,b,c,d) -#define __ceil __ceil_power5plus +# define __ceil __ceil_power5plus +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c index 968e8cb..9a7984d 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__ceil) __ceil_ppc64 attribute_hidden; extern __typeof (__ceil) __ceil_power5plus attribute_hidden; @@ -31,10 +32,11 @@ libc_ifunc (__ceil, weak_alias (__ceil, ceil) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__ceil, __ceill) weak_alias (__ceil, ceill) -#endif -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +# endif +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) compat_symbol (libm, __ceil, ceill, GLIBC_2_0); +# endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S index 9ac2771..45548df 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#undef weak_alias -#define weak_alias(a,b) +#ifndef MULTI_ARCH_POWER8 +# undef weak_alias +# define weak_alias(a,b) -#define __ceilf __ceilf_power5plus +# define __ceilf __ceilf_power5plus +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c index 7d4a028..2c2444c 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__ceilf) __ceilf_ppc64 attribute_hidden; extern __typeof (__ceilf) __ceilf_power5plus attribute_hidden; @@ -30,3 +31,4 @@ libc_ifunc (__ceilf, : __ceilf_ppc64); weak_alias (__ceilf, ceilf) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S index 7150c32..92a0438 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S @@ -16,17 +16,19 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef weak_alias -#define weak_alias(a,b) -#undef strong_alias -#define strong_alias(a,b) -#undef compat_symbol -#define compat_symbol(a, b, c, d) -#undef hidden_def -#define hidden_def(name) +# undef weak_alias +# define weak_alias(a,b) +# undef strong_alias +# define strong_alias(a,b) +# undef compat_symbol +# define compat_symbol(a, b, c, d) +# undef hidden_def +# define hidden_def(name) -#define __copysign __copysign_power6 +# define __copysign __copysign_power6 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c index 2bfb625..6c35ea5 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c @@ -16,15 +16,16 @@ License along with the GNU C Library; if not, see . */ +#ifndef MULTI_ARCH_POWER8 /* Redefine copysign so that the compiler won't complain about the type mismatch with the IFUNC selector in strong_alias below. */ -#undef __copysign -#define __copysign __redirect_copysign -#include -#include -#undef __copysign -#include -#include "init-arch.h" +# undef __copysign +# define __copysign __redirect_copysign +# include +# include +# undef __copysign +# include +# include "init-arch.h" extern __typeof (__redirect_copysign) __copysign_ppc64 attribute_hidden; extern __typeof (__redirect_copysign) __copysign_power6 attribute_hidden; @@ -38,14 +39,15 @@ libc_ifunc (__libm_copysign, strong_alias (__libm_copysign, __copysign) weak_alias (__copysign, copysign) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE weak_alias (__copysign,copysignl) strong_alias(__copysign,__copysignl) -#endif -#if IS_IN (libm) -# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) -compat_symbol (libm, __copysign, copysignl, GLIBC_2_0); # endif -#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) +# if IS_IN (libm) +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +compat_symbol (libm, __copysign, copysignl, GLIBC_2_0); +# endif +# elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) compat_symbol (libc, __copysign, copysignl, GLIBC_2_0); +# endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c index c9be2b6..12a3346 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c @@ -16,9 +16,10 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include "init-arch.h" /* It's safe to use double-precision implementation for single-precision. */ extern __typeof (__copysignf) __copysign_ppc64 attribute_hidden; @@ -30,3 +31,4 @@ libc_ifunc (__copysignf, : __copysign_ppc64); weak_alias (__copysignf, copysignf) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-power8.S index 29a59e9..87aca8e 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-power8.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-power8.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#undef weak_alias -#define weak_alias(a,b) +#ifndef MULTI_ARCH_POWER8 +# undef weak_alias +# define weak_alias(a,b) -#define __cosf __cosf_power8 +# define __cosf __cosf_power8 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c index acf2a59..ef162a6 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c @@ -16,9 +16,10 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include "init-arch.h" extern __typeof (__cosf) __cosf_ppc64 attribute_hidden; extern __typeof (__cosf) __cosf_power8 attribute_hidden; @@ -29,3 +30,4 @@ libc_ifunc (__cosf, : __cosf_ppc64); weak_alias (__cosf, cosf) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S index 686aa5a..0b1c5af 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S @@ -16,17 +16,19 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef hidden_def -#define hidden_def(name) -#undef weak_alias -#define weak_alias(name, alias) -#undef strong_alias -#define strong_alias(name, alias) -#undef compat_symbol -#define compat_symbol(lib, name, symbol, ver) +# undef hidden_def +# define hidden_def(name) +# undef weak_alias +# define weak_alias(name, alias) +# undef strong_alias +# define strong_alias(name, alias) +# undef compat_symbol +# define compat_symbol(lib, name, symbol, ver) -#define __finite __finite_power8 +# define __finite __finite_power8 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c index 7efc84b..6142ca8 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c @@ -16,29 +16,30 @@ License along with the GNU C Library; if not, see . */ -#define __finite __redirect___finite +#ifndef MULTI_ARCH_POWER8 +# define __finite __redirect___finite /* The following definitions, although not related to the 'double' version of 'finite', are required to guarantee macro expansions (e.g.: from __finitef to __redirect_finitef) in include/math.h, thus compensating for the unintended macro expansions in math/bits/mathcalls-helper-functions.h. */ -#define __finitef __redirect___finitef -#define __finitel __redirect___finitel -#define __finitef128 __redirect___finitef128 +# define __finitef __redirect___finitef +# define __finitel __redirect___finitel +# define __finitef128 __redirect___finitef128 -#include -#include -#include -#include "init-arch.h" +# include +# include +# include +# include "init-arch.h" extern __typeof (__finite) __finite_ppc64 attribute_hidden; extern __typeof (__finite) __finite_power7 attribute_hidden; extern __typeof (__finite) __finite_power8 attribute_hidden; -#undef __finite -#undef __finitef -#undef __finitel -#undef __finitef128 +# undef __finite +# undef __finitef +# undef __finitel +# undef __finitef128 libc_ifunc_redirected (__redirect___finite, __finite, (hwcap2 & PPC_FEATURE2_ARCH_2_07) @@ -49,21 +50,22 @@ libc_ifunc_redirected (__redirect___finite, __finite, weak_alias (__finite, finite) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__finite, __finitel) weak_alias (__finite, finitel) -#endif +# endif -#if IS_IN (libm) -# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0) +# if IS_IN (libm) +# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0) compat_symbol (libm, finite, finitel, GLIBC_2_0); -# endif -# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1) +# endif +# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1) compat_symbol (libm, __finite, __finitel, GLIBC_2_1); -# endif -#else -# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0) +# endif +# else +# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0) compat_symbol (libc, __finite, __finitel, GLIBC_2_0); compat_symbol (libc, finite, finitel, GLIBC_2_0); +# endif # endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c index cdd7824..ab6e9f1 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c @@ -16,16 +16,17 @@ License along with the GNU C Library; if not, see . */ -#define __finitef __redirect___finitef -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# define __finitef __redirect___finitef +# include +# include +# include "init-arch.h" extern __typeof (__finitef) __finitef_ppc64 attribute_hidden; /* The double-precision version also works for single-precision. */ extern __typeof (__finitef) __finite_power7 attribute_hidden; extern __typeof (__finitef) __finite_power8 attribute_hidden; -#undef __finitef +# undef __finitef libc_ifunc_redirected (__redirect___finitef, __finitef, (hwcap2 & PPC_FEATURE2_ARCH_2_07) @@ -35,3 +36,4 @@ libc_ifunc_redirected (__redirect___finitef, __finitef, : __finitef_ppc64); weak_alias (__finitef, finitef) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S index 33640b4..3a97f1b 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S @@ -16,15 +16,17 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef weak_alias -#define weak_alias(a,b) -#undef strong_alias -#define strong_alias(a,b) -#undef compat_symbol -#define compat_symbol(a,b,c,d) +# undef weak_alias +# define weak_alias(a,b) +# undef strong_alias +# define strong_alias(a,b) +# undef compat_symbol +# define compat_symbol(a,b,c,d) -#define __floor __floor_power5plus +# define __floor __floor_power5plus +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c index 6ab7a35..37ef5e7 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__floor) __floor_ppc64 attribute_hidden; extern __typeof (__floor) __floor_power5plus attribute_hidden; @@ -31,10 +32,11 @@ libc_ifunc (__floor, weak_alias (__floor, floor) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__floor, __floorl) weak_alias (__floor, floorl) -#endif -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +# endif +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) compat_symbol (libm, __floor, floorl, GLIBC_2_0); +# endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S index c7b3065..60ae06e 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#undef weak_alias -#define weak_alias(a,b) +#ifndef MULTI_ARCH_POWER8 +# undef weak_alias +# define weak_alias(a,b) -#define __floorf __floorf_power5plus +# define __floorf __floorf_power5plus +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c index ee96536..1b4d3ec 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__floorf) __floorf_ppc64 attribute_hidden; extern __typeof (__floorf) __floorf_power5plus attribute_hidden; @@ -30,3 +31,4 @@ libc_ifunc (__floorf, : __floorf_ppc64); weak_alias (__floorf, floorf) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S index 3545e20..e46af1c 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S @@ -16,17 +16,19 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef hidden_def -#define hidden_def(name) -#undef weak_alias -#define weak_alias(name, alias) -#undef strong_alias -#define strong_alias(name, alias) -#undef compat_symbol -#define compat_symbol(lib, name, alias, ver) +# undef hidden_def +# define hidden_def(name) +# undef weak_alias +# define weak_alias(name, alias) +# undef strong_alias +# define strong_alias(name, alias) +# undef compat_symbol +# define compat_symbol(lib, name, alias, ver) -#define __isinf __isinf_power8 +# define __isinf __isinf_power8 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c index b79bdd5..d5289f0 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c @@ -16,29 +16,30 @@ License along with the GNU C Library; if not, see . */ -#define __isinf __redirect___isinf +#ifndef MULTI_ARCH_POWER8 +# define __isinf __redirect___isinf /* The following definitions, although not related to the 'double' version of 'isinf', are required to guarantee macro expansions (e.g.: from __isinff to __redirect_isinff) in include/math.h, thus compensating for the unintended macro expansions in math/bits/mathcalls-helper-functions.h. */ -#define __isinff __redirect___isinff -#define __isinfl __redirect___isinfl -#define __isinff128 __redirect___isinff128 +# define __isinff __redirect___isinff +# define __isinfl __redirect___isinfl +# define __isinff128 __redirect___isinff128 -#include -#include -#include -#include "init-arch.h" +# include +# include +# include +# include "init-arch.h" extern __typeof (__isinf) __isinf_ppc64 attribute_hidden; extern __typeof (__isinf) __isinf_power7 attribute_hidden; extern __typeof (__isinf) __isinf_power8 attribute_hidden; -#undef __isinf -#undef __isinff -#undef __isinfl -#undef __isinff128 +# undef __isinf +# undef __isinff +# undef __isinfl +# undef __isinff128 libc_ifunc_redirected (__redirect___isinf, __isinf, (hwcap2 & PPC_FEATURE2_ARCH_2_07) @@ -49,14 +50,15 @@ libc_ifunc_redirected (__redirect___isinf, __isinf, weak_alias (__isinf, isinf) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__isinf, __isinfl) weak_alias (__isinf, isinfl) -#endif +# endif -#if !IS_IN (libm) -# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0) +# if !IS_IN (libm) +# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0) compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0); compat_symbol (libc, isinf, isinfl, GLIBC_2_0); +# endif # endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c index 439e0b8..7d8a2d3 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c @@ -16,17 +16,18 @@ License along with the GNU C Library; if not, see . */ -#define __isinff __redirect___isinff -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# define __isinff __redirect___isinff +# include +# include +# include +# include "init-arch.h" extern __typeof (__isinff) __isinff_ppc64 attribute_hidden; /* The double-precision version also works for single-precision. */ extern __typeof (__isinff) __isinf_power7 attribute_hidden; extern __typeof (__isinff) __isinf_power8 attribute_hidden; -#undef __isinff +# undef __isinff libc_ifunc_redirected (__redirect___isinff, __isinff, (hwcap2 & PPC_FEATURE2_ARCH_2_07) @@ -36,3 +37,4 @@ libc_ifunc_redirected (__redirect___isinff, __isinff, : __isinff_ppc64); weak_alias (__isinff, isinff) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S index db84dc0..f6ccbbe 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S @@ -16,17 +16,19 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef hidden_def -#define hidden_def(name) -#undef weak_alias -#define weak_alias(name, alias) -#undef strong_alias -#define strong_alias(name, alias) -#undef compat_symbol -#define compat_symbol(lib, name, symbol, ver) +# undef hidden_def +# define hidden_def(name) +# undef weak_alias +# define weak_alias(name, alias) +# undef strong_alias +# define strong_alias(name, alias) +# undef compat_symbol +# define compat_symbol(lib, name, symbol, ver) -#define __isnan __isnan_power8 +# define __isnan __isnan_power8 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c index a8127e8..b9ea291 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c @@ -16,21 +16,22 @@ License along with the GNU C Library; if not, see . */ -#define __isnan __redirect___isnan +#ifndef MULTI_ARCH_POWER8 +# define __isnan __redirect___isnan /* The following definitions, although not related to the 'double' version of 'isnan', are required to guarantee macro expansions (e.g.: from __isnanf to __redirect_isnanf) in include/math.h, thus compensating for the unintended macro expansions in math/bits/mathcalls-helper-functions.h. */ -#define __isnanf __redirect___isnanf -#define __isnanl __redirect___isnanl -#define __isnanf128 __redirect___isnanf128 +# define __isnanf __redirect___isnanf +# define __isnanl __redirect___isnanl +# define __isnanf128 __redirect___isnanf128 -#include -#include -#include -#include "init-arch.h" +# include +# include +# include +# include "init-arch.h" extern __typeof (__isnan) __isnan_ppc64 attribute_hidden; extern __typeof (__isnan) __isnan_power5 attribute_hidden; @@ -38,10 +39,10 @@ extern __typeof (__isnan) __isnan_power6 attribute_hidden; extern __typeof (__isnan) __isnan_power6x attribute_hidden; extern __typeof (__isnan) __isnan_power7 attribute_hidden; extern __typeof (__isnan) __isnan_power8 attribute_hidden; -#undef __isnan -#undef __isnanf -#undef __isnanl -#undef __isnanf128 +# undef __isnan +# undef __isnanf +# undef __isnanl +# undef __isnanf128 libc_ifunc_redirected (__redirect___isnan, __isnan, (hwcap2 & PPC_FEATURE2_ARCH_2_07) @@ -58,14 +59,15 @@ libc_ifunc_redirected (__redirect___isnan, __isnan, weak_alias (__isnan, isnan) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__isnan, __isnanl) weak_alias (__isnan, isnanl) -#endif +# endif -#if !IS_IN (libm) -# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) +# if !IS_IN (libm) +# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0); compat_symbol (libc, isnan, isnanl, GLIBC_2_0); +# endif # endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c index 958c373..d4fd10e 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c @@ -16,8 +16,9 @@ License along with the GNU C Library; if not, see . */ -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include "init-arch.h" /* The double-precision implementation also works for the single one. */ extern __typeof (__isnanf) __isnan_ppc64 attribute_hidden; @@ -42,3 +43,4 @@ libc_ifunc_hidden (__isnanf, __isnanf, hidden_def (__isnanf) weak_alias (__isnanf, isnanf) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S index 69aed9c8..7633405 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S @@ -16,15 +16,17 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef weak_alias -#define weak_alias(a,b) -#undef strong_alias -#define strong_alias(a,b) -#undef compat_symbol -#define compat_symbol(a,b,c,d) +# undef weak_alias +# define weak_alias(a,b) +# undef strong_alias +# define strong_alias(a,b) +# undef compat_symbol +# define compat_symbol(a,b,c,d) -#define __llrint __llrint_power8 +# define __llrint __llrint_power8 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c index 8db494c..8977d29 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c @@ -16,17 +16,18 @@ License along with the GNU C Library; if not, see . */ +#ifndef MULTI_ARCH_POWER8 /* Redefine lrint/__lrint so that the compiler won't complain about the type mismatch with the IFUNC selector in strong_alias below. */ -#define lrint __hidden_lrint -#define __lrint __hidden___lrint +# define lrint __hidden_lrint +# define __lrint __hidden___lrint -#include -#include -#undef lrint -#undef __lrint -#include -#include "init-arch.h" +# include +# include +# undef lrint +# undef __lrint +# include +# include "init-arch.h" extern __typeof (__llrint) __llrint_ppc64 attribute_hidden; extern __typeof (__llrint) __llrint_power6x attribute_hidden; @@ -40,21 +41,22 @@ libc_ifunc (__llrint, : __llrint_ppc64); weak_alias (__llrint, llrint) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__llrint, __llrintl) weak_alias (__llrint, llrintl) -#endif -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) +# endif +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) compat_symbol (libm, __llrint, llrintl, GLIBC_2_1); -#endif +# endif /* long has the same width as long long on PowerPC64. */ strong_alias (__llrint, __lrint) weak_alias (__lrint, lrint) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__lrint, __lrintl) weak_alias (__lrint, lrintl) -#endif -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) +# endif +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) compat_symbol (libm, __lrint, lrintl, GLIBC_2_1); +# endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c index 330fe96..96dd545 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c @@ -15,15 +15,17 @@ You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, see . */ + +#ifndef MULTI_ARCH_POWER8 /* Redefine lrintf/__lrintf so that the compiler won't complain about the type mismatch with the IFUNC selector in strong_alias below. */ -#define lrintf __hidden_lrintf -#define __lrintf __hidden___lrintf +# define lrintf __hidden_lrintf +# define __lrintf __hidden___lrintf -#include -#undef lrintf -#undef __lrintf -#include "init-arch.h" +# include +# undef lrintf +# undef __lrintf +# include "init-arch.h" extern __typeof (__llrintf) __llrint_ppc64 attribute_hidden; extern __typeof (__llrintf) __llrint_power6x attribute_hidden; @@ -44,3 +46,4 @@ libc_ifunc (__llrintf, weak_alias (__llrintf, llrintf) strong_alias (__llrintf, __lrintf) weak_alias (__lrintf, lrintf) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S index d301d7d..72a4957 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S @@ -16,16 +16,18 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef weak_alias -#define weak_alias(name, alias) -#undef strong_alias -#define strong_alias(name, alias) -#undef compat_symbol -#define compat_symbol(lib, name, alias, ver) +# undef weak_alias +# define weak_alias(name, alias) +# undef strong_alias +# define strong_alias(name, alias) +# undef compat_symbol +# define compat_symbol(lib, name, alias, ver) -#define __llround __llround_power6x -#define __lround __lround_power6x +# define __llround __llround_power6x +# define __lround __lround_power6x +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S index 5a2a2a6..a9541ec 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S @@ -16,15 +16,17 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef weak_alias -#define weak_alias(name, alias) -#undef strong_alias -#define strong_alias(name, alias) -#undef compat_symbol -#define compat_symbol(lib, name, alias, ver) +# undef weak_alias +# define weak_alias(name, alias) +# undef strong_alias +# define strong_alias(name, alias) +# undef compat_symbol +# define compat_symbol(lib, name, alias, ver) -#define __llround __llround_power8 +# define __llround __llround_power8 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c index cb1a446..1f906e2 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c @@ -16,13 +16,14 @@ License along with the GNU C Library; if not, see . */ -#define lround __hidden_lround -#define __lround __hidden___lround +#ifndef MULTI_ARCH_POWER8 +# define lround __hidden_lround +# define __lround __hidden___lround -#include -#include -#include -#include "init-arch.h" +# include +# include +# include +# include "init-arch.h" extern __typeof (__llround) __llround_ppc64 attribute_hidden; extern __typeof (__llround) __llround_power5plus attribute_hidden; @@ -40,24 +41,25 @@ libc_ifunc (__llround, weak_alias (__llround, llround) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE weak_alias (__llround, llroundl) strong_alias (__llround, __llroundl) -#endif -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) +# endif +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) compat_symbol (libm, __llround, llroundl, GLIBC_2_1); compat_symbol (libm, llround, lroundl, GLIBC_2_1); -#endif +# endif /* long has the same width as long long on PPC64. */ -#undef lround -#undef __lround +# undef lround +# undef __lround strong_alias (__llround, __lround) weak_alias (__llround, lround) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__llround, __llroundl) weak_alias (__llround, llroundl) -#endif -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) +# endif +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) compat_symbol (libm, __lround, lroundl, GLIBC_2_1); +# endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c index 1e34b5d..3bfe2c4 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c @@ -15,15 +15,17 @@ You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, see . */ + +#ifndef MULTI_ARCH_POWER8 /* Redefine lroundf/__lroundf so that the compiler won't complain about the type mismatch with the IFUNC selector in strong_alias below. */ -#define lroundf __hidden_lroundf -#define __lroundf __hidden___lroundf +# define lroundf __hidden_lroundf +# define __lroundf __hidden___lroundf -#include -#undef lroundf -#undef __lroundf -#include "init-arch.h" +# include +# undef lroundf +# undef __lroundf +# include "init-arch.h" extern __typeof (__llroundf) __llroundf_ppc64 attribute_hidden; extern __typeof (__llroundf) __llround_power6x attribute_hidden; @@ -44,3 +46,4 @@ libc_ifunc (__llroundf, weak_alias (__llroundf, llroundf) strong_alias (__llroundf, __lroundf) weak_alias (__lroundf, lroundf) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c index 73b5e2d..0907fb2 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c @@ -16,4 +16,17 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include + +# undef weak_alias +# define weak_alias(a, b) +# undef strong_alias +# define strong_alias(a, b) +# undef compat_symbol +# define compat_symbol(lib, name, alias, ver) + +# define __logb __logb_power7 +#endif + +#include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c index d70919e..c9f412e 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__logb) __logb_ppc64 attribute_hidden; extern __typeof (__logb) __logb_power7 attribute_hidden; @@ -31,11 +32,12 @@ libc_ifunc (__logb, weak_alias (__logb, logb) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__logb, __logbl) weak_alias (__logb, logbl) -#endif +# endif -#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0) +# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0) compat_symbol (libm, logb, logbl, GLIBC_2_0); +# endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c index 02e0431..e04cc06 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c @@ -16,4 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# undef weak_alias +# define weak_alias(a, b) + +# define __logbf __logbf_power7 +#endif + +#include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c index 1cacc8a..deecfcc 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__logbf) __logbf_ppc64 attribute_hidden; extern __typeof (__logbf) __logbf_power7 attribute_hidden; @@ -30,3 +31,4 @@ libc_ifunc (__logbf, : __logbf_ppc64); weak_alias (__logbf, logbf) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c index 60ec533..fa7201b 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c @@ -16,4 +16,8 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# define __logbl __logbl_power7 +#endif + +#include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c index 63b9c81..49a5ded 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__logbl) __logbl_ppc64 attribute_hidden; extern __typeof (__logbl) __logbl_power7 attribute_hidden; @@ -30,3 +31,4 @@ libc_ifunc (__logbl, : __logbl_ppc64); long_double_symbol (libm, __logbl, logbl); +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c index c923f84..6dcd22e 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c @@ -16,4 +16,17 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include + +# undef weak_alias +# define weak_alias(a,b) +# undef strong_alias +# define strong_alias(a,b) +# undef compat_symbol +# define compat_symbol(a,b,c,d) + +# define __modf __modf_power5plus +#endif + +#include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c index 3e79b2b..3f8dbde 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__modf) __modf_ppc64 attribute_hidden; extern __typeof (__modf) __modf_power5plus attribute_hidden; @@ -31,14 +32,15 @@ libc_ifunc (__modf, weak_alias (__modf, modf) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__modf, __modfl) weak_alias (__modf, modfl) -#endif -#if IS_IN (libm) -# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) -compat_symbol (libm, __modf, modfl, GLIBC_2_0); # endif -#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) +# if IS_IN (libm) +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +compat_symbol (libm, __modf, modfl, GLIBC_2_0); +# endif +# elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) compat_symbol (libc, __modf, modfl, GLIBC_2_0); +# endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c index 22dbf53..1741c9d 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c @@ -16,4 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# undef weak_alias +# define weak_alias(a,b) + +# define __modff __modff_power5plus +#endif + +#include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c index f57939c..b0248a1 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c @@ -16,8 +16,9 @@ License along with the GNU C Library; if not, see . */ -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include "init-arch.h" extern __typeof (__modff) __modff_ppc64 attribute_hidden; extern __typeof (__modff) __modff_power5plus attribute_hidden; @@ -28,3 +29,4 @@ libc_ifunc (__modff, : __modff_ppc64); weak_alias (__modff, modff) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S index e5bcd92..c2f45cd 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S @@ -16,15 +16,17 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef weak_alias -#define weak_alias(a,b) -#undef strong_alias -#define strong_alias(a,b) -#undef compat_symbol -#define compat_symbol(a,b,c,d) +# undef weak_alias +# define weak_alias(a,b) +# undef strong_alias +# define strong_alias(a,b) +# undef compat_symbol +# define compat_symbol(a,b,c,d) -#define __round __round_power5plus +# define __round __round_power5plus +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c index d440f6f..bf6257a 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__round) __round_ppc64 attribute_hidden; extern __typeof (__round) __round_power5plus attribute_hidden; @@ -31,10 +32,11 @@ libc_ifunc (__round, weak_alias (__round, round) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__round, __roundl) weak_alias (__round, roundl) -#endif -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +# endif +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) compat_symbol (libm, __round, roundl, GLIBC_2_0); +# endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S index b8a142e..220adb4 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#undef weak_alias -#define weak_alias(a,b) +#ifndef MULTI_ARCH_POWER8 +# undef weak_alias +# define weak_alias(a,b) -#define __roundf __roundf_power5plus +# define __roundf __roundf_power5plus +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c index 09609d3..7d4c85d 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__roundf) __roundf_ppc64 attribute_hidden; extern __typeof (__roundf) __roundf_power5plus attribute_hidden; @@ -30,3 +31,4 @@ libc_ifunc (__roundf, : __roundf_ppc64); weak_alias (__roundf, roundf) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-power8.S index aaf80e5..b8bb32a 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-power8.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-power8.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#undef weak_alias -#define weak_alias(a, b) +#ifndef MULTI_ARCH_POWER8 +# undef weak_alias +# define weak_alias(a, b) -#define __sinf __sinf_power8 +# define __sinf __sinf_power8 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c index 6d7d6ce..3c60a15 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c @@ -16,9 +16,10 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include "init-arch.h" extern __typeof (__sinf) __sinf_ppc64 attribute_hidden; extern __typeof (__sinf) __sinf_power8 attribute_hidden; @@ -29,3 +30,4 @@ libc_ifunc (__sinf, : __sinf_ppc64); weak_alias (__sinf, sinf) +#endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S index 83ed3c2..6c908db 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S @@ -16,15 +16,17 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#undef weak_alias -#define weak_alias(a,b) -#undef strong_alias -#define strong_alias(a,b) -#undef compat_symbol -#define compat_symbol(a,b,c,d) +# undef weak_alias +# define weak_alias(a,b) +# undef strong_alias +# define strong_alias(a,b) +# undef compat_symbol +# define compat_symbol(a,b,c,d) -#define __trunc __trunc_power5plus +# define __trunc __trunc_power5plus +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c index 54844d5..691fb20 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__trunc) __trunc_ppc64 attribute_hidden; extern __typeof (__trunc) __trunc_power5plus attribute_hidden; @@ -31,10 +32,11 @@ libc_ifunc (__trunc, weak_alias (__trunc, trunc) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__trunc, __truncl) weak_alias (__trunc, truncl) -#endif -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +# endif +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) compat_symbol (libm, __trunc, truncl, GLIBC_2_0); +# endif #endif diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S index 7c64ef5..b230d51 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#undef weak_alias -#define weak_alias(a,b) +#ifndef MULTI_ARCH_POWER8 +# undef weak_alias +# define weak_alias(a,b) -#define __truncf __truncf_power5plus +# define __truncf __truncf_power5plus +#endif #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c index 2c46525..104416f 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c @@ -16,10 +16,11 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include +# include "init-arch.h" extern __typeof (__truncf) __truncf_ppc64 attribute_hidden; extern __typeof (__truncf) __truncf_power5plus attribute_hidden; @@ -30,3 +31,4 @@ libc_ifunc (__truncf, : __truncf_ppc64); weak_alias (__truncf, truncf) +#endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile index dea49ac..badf5a7 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/Makefile +++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -1,44 +1,88 @@ +ifeq (,$(findstring -DMULTI_ARCH,$(sysdep-CPPFLAGS))) +ifneq (,$(filter %le,$(config-machine))) +sysdep-CPPFLAGS += -DMULTI_ARCH_POWER8=1 +endif +endif + ifeq ($(subdir),string) -sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ - memcpy-power4 memcpy-ppc64 \ - memcmp-power8 memcmp-power7 memcmp-power4 memcmp-ppc64 \ - memset-power7 memset-power6 memset-power4 \ - memset-ppc64 memset-power8 \ - mempcpy-power7 mempcpy-ppc64 \ - memchr-power8 memchr-power7 memchr-ppc64 \ - memrchr-power8 memrchr-power7 memrchr-ppc64 \ - rawmemchr-power7 rawmemchr-ppc64 \ - strlen-power7 strlen-ppc64 \ - strnlen-power8 strnlen-power7 strnlen-ppc64 \ - strcasecmp-power7 strcasecmp_l-power7 \ - strncase-power7 strncase_l-power7 \ - strncmp-power9 strncmp-power8 strncmp-power7 \ - strncmp-power4 strncmp-ppc64 \ - strchr-power8 strchr-power7 strchr-ppc64 \ - strchrnul-power8 strchrnul-power7 strchrnul-ppc64 \ - strcpy-power8 strcpy-power7 strcpy-ppc64 stpcpy-power8 \ - stpcpy-power7 stpcpy-ppc64 \ - strrchr-power8 strrchr-power7 strrchr-ppc64 \ - strncat-power8 strncat-power7 strncat-ppc64 \ - strncpy-power7 strncpy-ppc64 \ - stpncpy-power8 stpncpy-power7 stpncpy-ppc64 \ - strcmp-power9 strcmp-power8 strcmp-power7 strcmp-ppc64 \ - strcat-power8 strcat-power7 strcat-ppc64 \ - memmove-power7 memmove-ppc64 wordcopy-ppc64 bcopy-ppc64 \ - strncpy-power8 strstr-power7 strstr-ppc64 \ - strspn-power8 strspn-ppc64 strcspn-power8 strcspn-ppc64 \ - strlen-power8 strcasestr-power8 strcasestr-ppc64 \ - strcasecmp-ppc64 strcasecmp-power8 strncase-ppc64 \ - strncase-power8 +sysdep_routines += \ + memchr-power8 \ + memcmp-power8 \ + memcpy-power7 \ + memmove-power7 \ + mempcpy-power7 \ + memrchr-power8 \ + memset-power8 \ + rawmemchr-power7 \ + stpcpy-power8 \ + stpncpy-power8 \ + strcasecmp-power8 \ + strcasecmp_l-power7 \ + strcasestr-power8 \ + strcat-power8 \ + strchr-power8 \ + strchrnul-power8 \ + strcmp-power9 strcmp-power8 \ + strcpy-power8 \ + strcspn-power8 \ + strlen-power8 \ + strncase-power8 \ + strncase_l-power7 \ + strncat-power8 \ + strncmp-power9 strncmp-power8 \ + strncpy-power8 \ + strnlen-power8 \ + strrchr-power8 \ + strspn-power8 \ + strstr-power7 strstr-ppc64 + +ifeq (,$(findstring -DMULTI_ARCH_POWER8=1,$(sysdep-CPPFLAGS))) +sysdep_routines += \ + bcopy-ppc64 \ + memchr-power7 memchr-ppc64 \ + memcmp-power7 memcmp-power4 memcmp-ppc64 \ + memcpy-power6 memcpy-power4 memcpy-a2 memcpy-cell memcpy-ppc64 \ + memmove-ppc64 \ + mempcpy-ppc64 \ + memrchr-power7 memrchr-ppc64 \ + memset-power7 memset-power6 memset-power4 memset-ppc64 \ + rawmemchr-ppc64 \ + stpcpy-power7 stpcpy-ppc64 \ + stpncpy-power7 stpncpy-ppc64 \ + strcasecmp-power7 strcasecmp-ppc64 \ + strcasestr-ppc64 \ + strcat-power7 strcat-ppc64 \ + strchr-power7 strchr-ppc64 \ + strchrnul-power7 strchrnul-ppc64 \ + strcmp-power7 strcmp-ppc64 \ + strcpy-power7 strcpy-ppc64 \ + strcspn-ppc64 \ + strlen-power7 strlen-ppc64 \ + strncase-power7 strncase-ppc64 \ + strncat-power7 strncat-ppc64 \ + strncmp-power7 strncmp-power4 strncmp-ppc64 \ + strncpy-power7 strncpy-ppc64 \ + strnlen-power7 strnlen-ppc64 \ + strrchr-power7 strrchr-ppc64 \ + strspn-ppc64 \ + wordcopy-ppc64 +endif CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops CFLAGS-strncase_l-power7.c += -mcpu=power7 -funroll-loops endif ifeq ($(subdir),wcsmbs) -sysdep_routines += wcschr-power7 wcschr-power6 wcschr-ppc64 \ - wcsrchr-power7 wcsrchr-power6 wcsrchr-ppc64 \ - wcscpy-power7 wcscpy-power6 wcscpy-ppc64 \ +sysdep_routines += \ + wcschr-power7 \ + wcsrchr-power7 \ + wcscpy-power7 +ifeq (,$(findstring -DMULTI_ARCH_POWER8=1,$(sysdep-CPPFLAGS))) +sysdep_routines += \ + wcschr-power6 wcschr-ppc64 \ + wcsrchr-power6 wcsrchr-ppc64 \ + wcscpy-power6 wcscpy-ppc64 +endif CFLAGS-wcschr-power7.c += -mcpu=power7 CFLAGS-wcschr-power6.c += -mcpu=power6 diff --git a/sysdeps/powerpc/powerpc64/multiarch/bcopy.c b/sysdeps/powerpc/powerpc64/multiarch/bcopy.c index 05d46e2..1657ff2 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/bcopy.c +++ b/sysdeps/powerpc/powerpc64/multiarch/bcopy.c @@ -16,8 +16,9 @@ License along with the GNU C Library; if not, see . */ -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include "init-arch.h" extern __typeof (bcopy) __bcopy_ppc attribute_hidden; /* __bcopy_power7 symbol is implemented at memmove-power7.S */ @@ -27,3 +28,4 @@ libc_ifunc (bcopy, (hwcap & PPC_FEATURE_HAS_VSX) ? __bcopy_power7 : __bcopy_ppc); +#endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/bzero.c b/sysdeps/powerpc/powerpc64/multiarch/bzero.c index 83b224b..a759d79 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/bzero.c +++ b/sysdeps/powerpc/powerpc64/multiarch/bzero.c @@ -17,7 +17,7 @@ . */ /* Define multiple versions only for definition in libc. */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # include # include "init-arch.h" diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 6a88536..c04e1db 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -48,7 +48,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, else if (hwcap & PPC_FEATURE_POWER5) hwcap |= PPC_FEATURE_POWER4; -#ifdef SHARED +#ifndef MULTI_ARCH_POWER8 +# ifdef SHARED /* Support sysdeps/powerpc/powerpc64/multiarch/memcpy.c. */ IFUNC_IMPL (i, name, memcpy, IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_HAS_VSX, @@ -108,6 +109,20 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, strlen, 1, __strlen_ppc)) + /* Support sysdeps/powerpc/powerpc64/multiarch/strcmp.c. */ + IFUNC_IMPL (i, name, strcmp, + IFUNC_IMPL_ADD (array, i, strcmp, + hwcap2 & PPC_FEATURE2_ARCH_3_00, + __strcmp_power9) + IFUNC_IMPL_ADD (array, i, strcmp, + hwcap2 & PPC_FEATURE2_ARCH_2_07, + __strcmp_power8) + IFUNC_IMPL_ADD (array, i, strcmp, + hwcap & PPC_FEATURE_HAS_VSX, + __strcmp_power7) + IFUNC_IMPL_ADD (array, i, strcmp, 1, + __strcmp_ppc)) + /* Support sysdeps/powerpc/powerpc64/multiarch/strncmp.c. */ IFUNC_IMPL (i, name, strncmp, IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_3_00, @@ -131,6 +146,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, __strchr_power7) IFUNC_IMPL_ADD (array, i, strchr, 1, __strchr_ppc)) +# endif /* Support sysdeps/powerpc/powerpc64/multiarch/strchrnul.c. */ IFUNC_IMPL (i, name, strchrnul, @@ -142,7 +158,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, __strchrnul_power7) IFUNC_IMPL_ADD (array, i, strchrnul, 1, __strchrnul_ppc)) -#endif /* Support sysdeps/powerpc/powerpc64/multiarch/memcmp.c. */ IFUNC_IMPL (i, name, memcmp, @@ -267,7 +282,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, wcschr, 1, __wcschr_ppc)) - /* Support sysdeps/powerpc/powerpc64/multiarch/wcschr.c. */ + /* Support sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c. */ IFUNC_IMPL (i, name, wcsrchr, IFUNC_IMPL_ADD (array, i, wcsrchr, hwcap & PPC_FEATURE_HAS_VSX, @@ -333,20 +348,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, stpncpy, 1, __stpncpy_ppc)) - /* Support sysdeps/powerpc/powerpc64/multiarch/strcmp.c. */ - IFUNC_IMPL (i, name, strcmp, - IFUNC_IMPL_ADD (array, i, strcmp, - hwcap2 & PPC_FEATURE2_ARCH_3_00, - __strcmp_power9) - IFUNC_IMPL_ADD (array, i, strcmp, - hwcap2 & PPC_FEATURE2_ARCH_2_07, - __strcmp_power8) - IFUNC_IMPL_ADD (array, i, strcmp, - hwcap & PPC_FEATURE_HAS_VSX, - __strcmp_power7) - IFUNC_IMPL_ADD (array, i, strcmp, 1, - __strcmp_ppc)) - /* Support sysdeps/powerpc/powerpc64/multiarch/strcat.c. */ IFUNC_IMPL (i, name, strcat, IFUNC_IMPL_ADD (array, i, strcat, @@ -390,6 +391,29 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, __strcasestr_power8) IFUNC_IMPL_ADD (array, i, strcasestr, 1, __strcasestr_ppc)) +#endif + +#ifdef MULTI_ARCH_POWER8 +# ifdef SHARED + /* Support sysdeps/powerpc/powerpc64/multiarch/strcmp.c. */ + IFUNC_IMPL (i, name, strcmp, + IFUNC_IMPL_ADD (array, i, strcmp, + hwcap2 & PPC_FEATURE2_ARCH_3_00, + __strcmp_power9) + IFUNC_IMPL_ADD (array, i, strcmp, 1, + __strcmp_power8)) + + /* Support sysdeps/powerpc/powerpc64/multiarch/strncmp.c. */ + IFUNC_IMPL (i, name, strncmp, + IFUNC_IMPL_ADD (array, i, strncmp, + hwcap2 & PPC_FEATURE2_ARCH_3_00, + __strncmp_power9) + IFUNC_IMPL_ADD (array, i, strncmp, 1, + __strncmp_power8)) +# endif + (void) hwcap; + (void) hwcap2; +#endif return i; } diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/memchr-power8.S index 10a8420..a96b3ab 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memchr-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/memchr-power8.S @@ -16,11 +16,13 @@ License along with the GNU C Library; if not, see . */ -#define MEMCHR __memchr_power8 +#ifndef MULTI_ARCH_POWER8 +# define MEMCHR __memchr_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) -#undef weak_alias -#define weak_alias(name,alias) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +# undef weak_alias +# define weak_alias(name,alias) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr.c b/sysdeps/powerpc/powerpc64/multiarch/memchr.c index fa2cfd5..309557d 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memchr.c +++ b/sysdeps/powerpc/powerpc64/multiarch/memchr.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # include # include "init-arch.h" @@ -36,6 +36,8 @@ libc_ifunc (__memchr, weak_alias (__memchr, memchr) libc_hidden_builtin_def (memchr) -#else -#include +#endif + +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power8.S index 41c291a..d36e28e 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power8.S @@ -16,11 +16,13 @@ License along with the GNU C Library; if not, see . */ -#define MEMCMP __memcmp_power8 +#ifndef MULTI_ARCH_POWER8 +# define MEMCMP __memcmp_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) -#undef weak_alias -#define weak_alias(name,alias) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +# undef weak_alias +# define weak_alias(name,alias) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp.c b/sysdeps/powerpc/powerpc64/multiarch/memcmp.c index 0d315d5..d27e6cf 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memcmp.c +++ b/sysdeps/powerpc/powerpc64/multiarch/memcmp.c @@ -17,7 +17,7 @@ . */ /* Define multiple versions only for definition in libc. */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define memcmp __redirect_memcmp # include # include @@ -39,6 +39,8 @@ libc_ifunc_redirected (__redirect_memcmp, memcmp, : (hwcap & PPC_FEATURE_POWER4) ? __memcmp_power4 : __memcmp_ppc); -#else -#include +#endif + +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S index 503be8c..3cab727 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#define MEMCPY __memcpy_power7 +#ifndef MULTI_ARCH_POWER8 +# define MEMCPY __memcpy_power7 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy.c b/sysdeps/powerpc/powerpc64/multiarch/memcpy.c index 9f4286c..afd3444 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memcpy.c +++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy.c @@ -19,7 +19,7 @@ /* Define multiple versions only for the definition in lib and for DSO. In static binaries we need memcpy before the initialization happened. */ -#if defined SHARED && IS_IN (libc) +#if defined SHARED && IS_IN (libc) && !defined MULTI_ARCH_POWER8 /* Redefine memcpy so that the compiler won't complain about the type mismatch with the IFUNC selector in strong_alias, below. */ # undef memcpy @@ -49,7 +49,7 @@ libc_ifunc (__libc_memcpy, ? __memcpy_power4 : __memcpy_ppc); -#undef memcpy +# undef memcpy strong_alias (__libc_memcpy, memcpy); libc_hidden_ver (__libc_memcpy, memcpy); #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S index 90816ce..5d62f4b 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S @@ -16,12 +16,14 @@ License along with the GNU C Library; if not, see . */ -#define MEMMOVE __memmove_power7 +#ifndef MULTI_ARCH_POWER8 +# define MEMMOVE __memmove_power7 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) -#undef bcopy -#define bcopy __bcopy_power7 +# undef bcopy +# define bcopy __bcopy_power7 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/memmove.c b/sysdeps/powerpc/powerpc64/multiarch/memmove.c index db2bbc7..8a04000 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memmove.c +++ b/sysdeps/powerpc/powerpc64/multiarch/memmove.c @@ -19,7 +19,7 @@ /* Define multiple versions only for the definition in lib and for DSO. In static binaries we need memmove before the initialization happened. */ -#if defined SHARED && IS_IN (libc) +#if defined SHARED && IS_IN (libc) && !defined MULTI_ARCH_POWER8 /* Redefine memmove so that the compiler won't complain about the type mismatch with the IFUNC selector in strong_alias, below. */ # undef memmove @@ -37,9 +37,11 @@ libc_ifunc (__libc_memmove, ? __memmove_power7 : __memmove_ppc); -#undef memmove +# undef memmove strong_alias (__libc_memmove, memmove); libc_hidden_ver (__libc_memmove, memmove); -#else +#endif + +#if !(defined SHARED && IS_IN (libc)) && !defined MULTI_ARCH_POWER8 # include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S index d0eb400..1c53f50 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S @@ -16,11 +16,13 @@ License along with the GNU C Library; if not, see . */ -#define MEMPCPY __mempcpy_power7 +#ifndef MULTI_ARCH_POWER8 +# define MEMPCPY __mempcpy_power7 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) -#undef weak_alias -#define weak_alias(name, alias) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +# undef weak_alias +# define weak_alias(name, alias) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c b/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c index 92391d3..4fff7a6 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c +++ b/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define mempcpy __redirect_mempcpy # define __mempcpy __redirect___mempcpy # define NO_MEMPCPY_STPCPY_REDIRECT @@ -38,6 +38,8 @@ libc_ifunc_redirected (__redirect___mempcpy, __mempcpy, : __mempcpy_ppc); weak_alias (__mempcpy, mempcpy) -#else +#endif + +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/memrchr-power8.S index 469b129..0a07006 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memrchr-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/memrchr-power8.S @@ -16,11 +16,13 @@ License along with the GNU C Library; if not, see . */ -#define MEMRCHR __memrchr_power8 +#ifndef MULTI_ARCH_POWER8 +# define MEMRCHR __memrchr_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) -#undef weak_alias -#define weak_alias(name,alias) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +# undef weak_alias +# define weak_alias(name,alias) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr.c b/sysdeps/powerpc/powerpc64/multiarch/memrchr.c index 7d52af0..d0bc18c 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memrchr.c +++ b/sysdeps/powerpc/powerpc64/multiarch/memrchr.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # include # include "init-arch.h" @@ -35,6 +35,8 @@ libc_ifunc (__memrchr, : __memrchr_ppc); weak_alias (__memrchr, memrchr) -#else -#include +#endif + +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S index 45149e1..c0160b2 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S @@ -16,12 +16,14 @@ License along with the GNU C Library; if not, see . */ -#define MEMSET __memset_power8 +#ifndef MULTI_ARCH_POWER8 +# define MEMSET __memset_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) -#undef __bzero -#define __bzero __bzero_power8 +# undef __bzero +# define __bzero __bzero_power8 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset.c b/sysdeps/powerpc/powerpc64/multiarch/memset.c index a5d9b3e..ec92cd0 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memset.c +++ b/sysdeps/powerpc/powerpc64/multiarch/memset.c @@ -17,7 +17,7 @@ . */ /* Define multiple versions only for definition in libc. */ -#if defined SHARED && IS_IN (libc) +#if defined SHARED && IS_IN (libc) && !defined MULTI_ARCH_POWER8 /* Redefine memset so that the compiler won't complain about the type mismatch with the IFUNC selector in strong_alias, below. */ # undef memset @@ -47,7 +47,7 @@ libc_ifunc (__libc_memset, ? __memset_power4 : __memset_ppc); -#undef memset +# undef memset strong_alias (__libc_memset, memset); libc_hidden_ver (__libc_memset, memset); #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S index c7bb422..e0f1990 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S @@ -16,6 +16,8 @@ License along with the GNU C Library; if not, see . */ -#define RAWMEMCHR __rawmemchr_power7 +#ifndef MULTI_ARCH_POWER8 +# define RAWMEMCHR __rawmemchr_power7 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c index 8bfd58d..3ac9a80 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c +++ b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define __rawmemchr __redirect___rawmemchr # include # include @@ -34,6 +34,8 @@ libc_ifunc_redirected (__redirect___rawmemchr, __rawmemchr, : __rawmemchr_ppc); weak_alias (__rawmemchr, rawmemchr) -#else -#include +#endif + +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S index 3baebfa..c277d6f 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#define STPCPY __stpcpy_power8 +#ifndef MULTI_ARCH_POWER8 +# define STPCPY __stpcpy_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c b/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c index aa01adb..37eb603 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c +++ b/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if defined SHARED && IS_IN (libc) +#if defined SHARED && IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define __NO_STRING_INLINES # define NO_MEMPCPY_STPCPY_REDIRECT # include @@ -37,6 +37,8 @@ libc_ifunc_hidden (__stpcpy, __stpcpy, weak_alias (__stpcpy, stpcpy) libc_hidden_def (__stpcpy) libc_hidden_def (stpcpy) -#else +#endif + +#if !(defined SHARED && IS_IN (libc)) && !defined MULTI_ARCH_POWER8 # include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S index f8a0f29..6710352 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S @@ -16,14 +16,16 @@ License along with the GNU C Library; if not, see . */ -#define STPNCPY __stpncpy_power8 +#ifndef MULTI_ARCH_POWER8 +# define STPNCPY __stpncpy_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) -#define MEMSET __memset_power8 -#ifdef SHARED -#define MEMSET_is_local +# define MEMSET __memset_power8 +# ifdef SHARED +# define MEMSET_is_local +# endif #endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c b/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c index e9b37dc..2281faa 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c +++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define stpncpy __redirect_stpncpy # define __stpncpy __redirect___stpncpy # include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power8.S index 49cf3ff..4f7890d 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power8.S @@ -16,11 +16,13 @@ License along with the GNU C Library; if not, see . */ -#define __strcasecmp __strcasecmp_power8 -#undef weak_alias -#define weak_alias(name, alias) +#ifndef MULTI_ARCH_POWER8 +# define __strcasecmp __strcasecmp_power8 +# undef weak_alias +# define weak_alias(name, alias) -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c index dcb4ef4..8ba4556 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c @@ -16,9 +16,10 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include "init-arch.h" extern __typeof (__strcasecmp) __libc_strcasecmp; @@ -34,3 +35,4 @@ libc_ifunc (__libc_strcasecmp, : __strcasecmp_ppc); weak_alias (__libc_strcasecmp, strcasecmp) +#endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S index 6bad13a..0a9c6b7 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S @@ -16,13 +16,15 @@ License along with the GNU C Library; if not, see . */ -#define __strcasecmp_l __strcasecmp_l_power7 +#ifndef MULTI_ARCH_POWER8 +# define __strcasecmp_l __strcasecmp_l_power7 -#undef weak_alias -#define weak_alias(name, alias) +# undef weak_alias +# define weak_alias(name, alias) -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #define USE_IN_EXTENDED_LOCALE_MODEL #define __STRCMP __strcasecmp_l diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c index 10b8f2e..4310ead 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c @@ -16,17 +16,19 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # define strcasecmp_l __strcasecmp_l_ppc extern __typeof (__strcasecmp_l) __strcasecmp_l_ppc attribute_hidden; extern __typeof (__strcasecmp_l) __strcasecmp_l_power7 attribute_hidden; #endif -#include +#if !defined MULTI_ARCH_POWER8 +# include +#endif #undef strcasecmp_l -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # include "init-arch.h" diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S index 61025ce..f53931f 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S @@ -16,18 +16,20 @@ License along with the GNU C Library; if not, see . */ -#define STRCASESTR __strcasestr_power8 +#ifndef MULTI_ARCH_POWER8 +# define STRCASESTR __strcasestr_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) /* The following definitions are used in strcasestr optimization. */ /* strlen is used to calculate len of r4. */ -#define STRLEN __strlen_power8 +# define STRLEN __strlen_power8 /* strnlen is used to check if len of r3 is more than r4. */ -#define STRNLEN __strnlen_power7 +# define STRNLEN __strnlen_power7 /* strchr is used to check if first char of r4 is present in r3. */ -#define STRCHR __strchr_power8 +# define STRCHR __strchr_power8 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasestr.c b/sysdeps/powerpc/powerpc64/multiarch/strcasestr.c index 9e6a16d..2acd054 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcasestr.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strcasestr.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # include # include "init-arch.h" @@ -32,6 +32,8 @@ libc_ifunc (__strcasestr, : __strcasestr_ppc); weak_alias (__strcasestr, strcasestr) -#else -#include +#endif + +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c b/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c index f138bee..411e01f 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c @@ -15,16 +15,19 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#define STRCAT __strcat_power8 +# define STRCAT __strcat_power8 -#undef libc_hidden_def -#define libc_hidden_def(name) +# undef libc_hidden_def +# define libc_hidden_def(name) extern typeof (strcpy) __strcpy_power8; extern typeof (strlen) __strlen_power8; -#define strcpy __strcpy_power8 -#define strlen __strlen_power8 +# define strcpy __strcpy_power8 +# define strlen __strlen_power8 +#endif + #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat.c b/sysdeps/powerpc/powerpc64/multiarch/strcat.c index 3336aed..2f0ce52 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcat.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strcat.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define strcat __redirect_strcat # include # include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S index ca01f88..e43a994 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#define STRCHR __strchr_power8 +#ifndef MULTI_ARCH_POWER8 +# define STRCHR __strchr_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr.c b/sysdeps/powerpc/powerpc64/multiarch/strchr.c index 5731058..9f031ef 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strchr.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strchr.c @@ -17,7 +17,7 @@ . */ /* Define multiple versions only for definition in libc. */ -#if defined SHARED && IS_IN (libc) +#if defined SHARED && IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define strchr __redirect_strchr /* Omit the strchr inline definitions because it would redefine strchr. */ # define __NO_STRING_INLINES diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S index e66cdfe..642eee3 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#define STRCHRNUL __strchrnul_power8 +#ifndef MULTI_ARCH_POWER8 +# define STRCHRNUL __strchrnul_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c b/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c index 1e9018f..c397f6d 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # include # include "init-arch.h" @@ -35,6 +35,8 @@ libc_ifunc (__strchrnul, : __strchrnul_ppc); weak_alias (__strchrnul, strchrnul) -#else -#include +#endif + +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S index 7ef0c91..471d8f5 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#define STRCMP __strcmp_power7 +#if IS_IN (libc) +# define STRCMP __strcmp_power7 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) -#include +# include +#endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S index ee4218c..1d194e2 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S @@ -17,10 +17,20 @@ . */ #if IS_IN (libc) -#define STRCMP __strcmp_power8 - -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# ifndef MULTI_ARCH_POWER8 +# define STRCMP __strcmp_power8 +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +# else +# ifdef SHARED +# define STRCMP __strcmp_power8 +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) \ + .globl __GI_##name; __GI_##name = __##name##_power8 +# endif +# endif +#endif -#include +#if IS_IN (libc) || defined MULTI_ARCH_POWER8 +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S index 5cfee93..86e4443 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S @@ -17,10 +17,10 @@ . */ #if IS_IN (libc) -#define STRCMP __strcmp_power9 +# define STRCMP __strcmp_power9 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) -#include +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp.c b/sysdeps/powerpc/powerpc64/multiarch/strcmp.c index fc10205..c7f88f1 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcmp.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp.c @@ -32,11 +32,16 @@ extern __typeof (strcmp) __strcmp_power9 attribute_hidden; # undef strcmp libc_ifunc_redirected (__redirect_strcmp, strcmp, - (hwcap2 & PPC_FEATURE2_ARCH_3_00) - ? __strcmp_power9 : - (hwcap2 & PPC_FEATURE2_ARCH_2_07) + (hwcap2 & PPC_FEATURE2_ARCH_3_00) + ? __strcmp_power9 +# ifndef MULTI_ARCH_POWER8 + : (hwcap2 & PPC_FEATURE2_ARCH_2_07) ? __strcmp_power8 : (hwcap & PPC_FEATURE_HAS_VSX) - ? __strcmp_power7 - : __strcmp_ppc); + ? __strcmp_power7 + : __strcmp_ppc +# else + : __strcmp_power8 +# endif + ); #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S index 7c9378d..a7403888 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#define STRCPY __strcpy_power8 +#ifndef MULTI_ARCH_POWER8 +# define STRCPY __strcpy_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy.c b/sysdeps/powerpc/powerpc64/multiarch/strcpy.c index 0da53e3..addf6ba 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcpy.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strcpy.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if defined SHARED && IS_IN (libc) +#if defined SHARED && IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define strcpy __redirect_strcpy # include # include @@ -25,7 +25,7 @@ extern __typeof (strcpy) __strcpy_ppc attribute_hidden; extern __typeof (strcpy) __strcpy_power7 attribute_hidden; extern __typeof (strcpy) __strcpy_power8 attribute_hidden; -#undef strcpy +# undef strcpy libc_ifunc_redirected (__redirect_strcpy, strcpy, (hwcap2 & PPC_FEATURE2_ARCH_2_07) diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcspn-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcspn-power8.S index 1320145..f251178 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcspn-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strcspn-power8.S @@ -16,8 +16,10 @@ License along with the GNU C Library; if not, see . */ -#define STRSPN __strcspn_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +#ifndef MULTI_ARCH_POWER8 +# define STRSPN __strcspn_power8 +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcspn.c b/sysdeps/powerpc/powerpc64/multiarch/strcspn.c index a6df885..8791f75 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strcspn.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strcspn.c @@ -16,11 +16,12 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include "init-arch.h" -#undef strcspn +# undef strcspn extern __typeof (strcspn) __libc_strcspn; extern __typeof (strcspn) __strcspn_ppc attribute_hidden; @@ -33,3 +34,4 @@ libc_ifunc (__libc_strcspn, weak_alias (__libc_strcspn, strcspn) libc_hidden_builtin_def (strcspn) +#endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S index f7972ff..4bac46f 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#define STRLEN __strlen_power8 +#ifndef MULTI_ARCH_POWER8 +# define STRLEN __strlen_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen.c b/sysdeps/powerpc/powerpc64/multiarch/strlen.c index a5a7b59..b4b9b60 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strlen.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strlen.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if defined SHARED && IS_IN (libc) +#if defined SHARED && IS_IN (libc) && !defined MULTI_ARCH_POWER8 /* Redefine strlen so that the compiler won't complain about the type mismatch with the IFUNC selector in strong_alias, below. */ # undef strlen @@ -38,7 +38,7 @@ libc_ifunc (__libc_strlen, ? __strlen_power7 : __strlen_ppc); -#undef strlen +# undef strlen strong_alias (__libc_strlen, strlen) libc_hidden_ver (__libc_strlen, strlen) #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncase-power8.S index 3b5a8de..1930c83 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncase-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strncase-power8.S @@ -16,11 +16,13 @@ License along with the GNU C Library; if not, see . */ -#define __strncasecmp __strncasecmp_power8 -#undef weak_alias -#define weak_alias(name, alias) +#ifndef MULTI_ARCH_POWER8 +# define __strncasecmp __strncasecmp_power8 +# undef weak_alias +# define weak_alias(name, alias) -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase.c b/sysdeps/powerpc/powerpc64/multiarch/strncase.c index 197f713..7cc75d8 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncase.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strncase.c @@ -16,9 +16,10 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include "init-arch.h" +#ifndef MULTI_ARCH_POWER8 +# include +# include +# include "init-arch.h" extern __typeof (__strncasecmp) __libc_strncasecmp; @@ -34,3 +35,4 @@ libc_ifunc (__libc_strncasecmp, : __strncasecmp_ppc); weak_alias (__libc_strncasecmp, strncasecmp) +#endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c index 73b967d..540874a 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c @@ -15,13 +15,15 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#define __strncasecmp_l __strncasecmp_l_power7 +# define __strncasecmp_l __strncasecmp_l_power7 -#undef libc_hidden_def -#define libc_hidden_def(name) +# undef libc_hidden_def +# define libc_hidden_def(name) extern __typeof (strncasecmp_l) __strncasecmp_l_power7 attribute_hidden; +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c b/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c index 6c2429c..7fa6a77 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c @@ -16,17 +16,19 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # define strncasecmp_l __strncasecmp_l_ppc extern __typeof (__strncasecmp_l) __strncasecmp_l_ppc attribute_hidden; extern __typeof (__strncasecmp_l) __strncasecmp_l_power7 attribute_hidden; #endif -#include +#if !defined MULTI_ARCH_POWER8 +# include +#endif #undef strncasecmp_l -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # include "init-arch.h" diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c b/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c index 1ec1259..2ba8ed0 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c @@ -15,17 +15,19 @@ License along with the GNU C Library; if not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# include -#define STRNCAT __strncat_power8 +# define STRNCAT __strncat_power8 extern __typeof (strncat) __strncat_power8 attribute_hidden; extern __typeof (strlen) __strlen_power8 attribute_hidden; extern __typeof (strnlen) __strnlen_power8 attribute_hidden; extern __typeof (memcpy) __memcpy_power7 attribute_hidden; -#define strlen __strlen_power8 -#define __strnlen __strnlen_power8 -#define memcpy __memcpy_power7 +# define strlen __strlen_power8 +# define __strnlen __strnlen_power8 +# define memcpy __memcpy_power7 +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat.c b/sysdeps/powerpc/powerpc64/multiarch/strncat.c index 72f2833..02a2b56 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncat.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strncat.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # include # include "init-arch.h" diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S index 5d8eeb4..3c7032d 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S @@ -16,10 +16,20 @@ . */ #if IS_IN (libc) -#define STRNCMP __strncmp_power8 - -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# ifndef MULTI_ARCH_POWER8 +# define STRNCMP __strncmp_power8 +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +# else +# ifdef SHARED +# define STRNCMP __strncmp_power8 +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) \ + .globl __GI_##name; __GI_##name = __##name##_power8 +# endif +# endif +#endif -#include +#if IS_IN (libc) || defined MULTI_ARCH_POWER8 +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S index 52934cf..e096428 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S @@ -16,10 +16,10 @@ . */ #if IS_IN (libc) -#define STRNCMP __strncmp_power9 +# define STRNCMP __strncmp_power9 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) -#include +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c index 14122c6..8c83162 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c @@ -35,13 +35,18 @@ extern __typeof (strncmp) __strncmp_power9 attribute_hidden; /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle ifunc symbol properly. */ libc_ifunc_redirected (__redirect_strncmp, strncmp, - (hwcap2 & PPC_FEATURE2_ARCH_3_00) - ? __strncmp_power9 : - (hwcap2 & PPC_FEATURE2_ARCH_2_07) + (hwcap2 & PPC_FEATURE2_ARCH_3_00) + ? __strncmp_power9 +# ifndef MULTI_ARCH_POWER8 + : (hwcap2 & PPC_FEATURE2_ARCH_2_07) ? __strncmp_power8 : (hwcap & PPC_FEATURE_HAS_VSX) - ? __strncmp_power7 - : (hwcap & PPC_FEATURE_POWER4) - ? __strncmp_power4 - : __strncmp_ppc); + ? __strncmp_power7 + : (hwcap & PPC_FEATURE_POWER4) + ? __strncmp_power4 + : __strncmp_ppc +# else + : __strncmp_power8 +# endif + ); #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S index 3d16363..cb9a03e 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S @@ -16,15 +16,17 @@ License along with the GNU C Library; if not, see . */ -#define STRNCPY __strncpy_power8 +#ifndef MULTI_ARCH_POWER8 +# define STRNCPY __strncpy_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# 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 -#ifdef SHARED -#define MEMSET_is_local +# define MEMSET __memset_power8 +# ifdef SHARED +# define MEMSET_is_local +# endif #endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy.c b/sysdeps/powerpc/powerpc64/multiarch/strncpy.c index bb63c18..195e657 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncpy.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy.c @@ -17,7 +17,7 @@ . */ /* Define multiple versions only for definition in libc. */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define strncpy __redirect_strncpy /* Omit the strncpy inline definitions because it would redefine strncpy. */ # define __NO_STRING_INLINES @@ -38,5 +38,4 @@ libc_ifunc_redirected (__redirect_strncpy, strncpy, : (hwcap & PPC_FEATURE_HAS_VSX) ? __strncpy_power7 : __strncpy_ppc); - #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strnlen-power8.S index 9ed0f91..91096e6 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strnlen-power8.S @@ -16,11 +16,13 @@ License along with the GNU C Library; if not, see . */ -#define __strnlen __strnlen_power8 +#ifndef MULTI_ARCH_POWER8 +# define __strnlen __strnlen_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) -#undef weak_alias -#define weak_alias(name, alias) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +# undef weak_alias +# define weak_alias(name, alias) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen.c b/sysdeps/powerpc/powerpc64/multiarch/strnlen.c index 7f89132..2850667 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strnlen.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strnlen.c @@ -16,7 +16,8 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 + # define strnlen __redirect_strnlen # define __strnlen __redirect___strnlen # include @@ -28,6 +29,7 @@ extern __typeof (__strnlen) __strnlen_power7 attribute_hidden; extern __typeof (__strnlen) __strnlen_power8 attribute_hidden; # undef strnlen # undef __strnlen + libc_ifunc_redirected (__redirect___strnlen, __strnlen, (hwcap2 & PPC_FEATURE2_ARCH_2_07) ? __strnlen_power8 : @@ -35,7 +37,8 @@ libc_ifunc_redirected (__redirect___strnlen, __strnlen, ? __strnlen_power7 : __strnlen_ppc); weak_alias (__strnlen, strnlen) +#endif -#else -#include +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S index 51adbb0..a581f24 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S @@ -16,9 +16,11 @@ License along with the GNU C Library; if not, see . */ -#define STRRCHR __strrchr_power8 +#ifndef MULTI_ARCH_POWER8 +# define STRRCHR __strrchr_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strrchr.c b/sysdeps/powerpc/powerpc64/multiarch/strrchr.c index 0f94c9d..f648f4d 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strrchr.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strrchr.c @@ -17,7 +17,7 @@ . */ /* Define multiple versions only for definition in libc. */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define strrchr __redirect_strrchr # include # include @@ -26,7 +26,7 @@ extern __typeof (strrchr) __strrchr_ppc attribute_hidden; extern __typeof (strrchr) __strrchr_power7 attribute_hidden; extern __typeof (strrchr) __strrchr_power8 attribute_hidden; -#undef strrchr +# undef strrchr /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle ifunc symbol properly. */ diff --git a/sysdeps/powerpc/powerpc64/multiarch/strspn-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strspn-power8.S index 89e2e5b..0c4a00e 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strspn-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strspn-power8.S @@ -16,8 +16,10 @@ License along with the GNU C Library; if not, see . */ -#define STRSPN __strspn_power8 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +#ifndef MULTI_ARCH_POWER8 +# define STRSPN __strspn_power8 +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) +#endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strspn.c b/sysdeps/powerpc/powerpc64/multiarch/strspn.c index 0957482..0b1449f 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strspn.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strspn.c @@ -16,11 +16,12 @@ License along with the GNU C Library; if not, see . */ +#ifndef MULTI_ARCH_POWER8 # include # include # include "init-arch.h" -#undef strspn +# undef strspn extern __typeof (strspn) __libc_strspn; extern __typeof (strspn) __strspn_ppc attribute_hidden; @@ -33,3 +34,4 @@ libc_ifunc (__libc_strspn, weak_alias (__libc_strspn, strspn) libc_hidden_builtin_def (strspn) +#endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S index 82a0e4c..218e09f 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S @@ -16,18 +16,20 @@ License along with the GNU C Library; if not, see . */ -#define STRSTR __strstr_power7 +#ifndef MULTI_ARCH_POWER8 +# define STRSTR __strstr_power7 -#undef libc_hidden_builtin_def -#define libc_hidden_builtin_def(name) +# undef libc_hidden_builtin_def +# define libc_hidden_builtin_def(name) -#define STRLEN __strlen_power7 -#define STRNLEN __strnlen_power7 -#define STRCHR __strchr_power7 -#ifdef SHARED -#define STRLEN_is_local -#define STRNLEN_is_local -#define STRCHR_is_local +# define STRLEN __strlen_power7 +# define STRNLEN __strnlen_power7 +# define STRCHR __strchr_power7 +# ifdef SHARED +# define STRLEN_is_local +# define STRNLEN_is_local +# define STRCHR_is_local +# endif #endif #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c index 37add12..2ce8638 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c @@ -17,13 +17,17 @@ #include -#define STRSTR __strstr_ppc #if IS_IN (libc) && defined(SHARED) # undef libc_hidden_builtin_def -# define libc_hidden_builtin_def(name) \ - __hidden_ver1(__strstr_ppc, __GI_strstr, __strstr_ppc); +# ifndef MULTI_ARCH_POWER8 +# define libc_hidden_builtin_def(name) \ + __hidden_ver1(__strstr_ppc, __GI_strstr, __strstr_ppc); +# else +# define libc_hidden_builtin_def(name) +# endif #endif extern __typeof (strstr) __strstr_ppc attribute_hidden; +#define STRSTR __strstr_ppc #include diff --git a/sysdeps/powerpc/powerpc64/multiarch/strstr.c b/sysdeps/powerpc/powerpc64/multiarch/strstr.c index d903b27..3235406 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strstr.c +++ b/sysdeps/powerpc/powerpc64/multiarch/strstr.c @@ -17,7 +17,7 @@ . */ /* Define multiple versions only for definition in libc. */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define strstr __redirect_strstr # include # include diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c b/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c index 8f4de0e..a1c6baf 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c +++ b/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c @@ -16,4 +16,11 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# define WCSCHR __wcschr_power7 + +# undef libc_hidden_def +# define libc_hidden_def(name) +#endif + +#include diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcschr.c b/sysdeps/powerpc/powerpc64/multiarch/wcschr.c index ca373e0..20289bb 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/wcschr.c +++ b/sysdeps/powerpc/powerpc64/multiarch/wcschr.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # define wcschr __redirect_wcschr # define __wcschr __redirect___wcschr # include @@ -36,8 +36,10 @@ libc_ifunc_redirected (__redirect___wcschr, __wcschr, ? __wcschr_power6 : __wcschr_ppc); weak_alias (__wcschr, wcschr) -#else -#undef libc_hidden_def -#define libc_hidden_def(a) -#include +#endif + +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 +# undef libc_hidden_def +# define libc_hidden_def(a) +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c index 47ba73b..5ad7cba 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c +++ b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c @@ -16,4 +16,8 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# define WCSCPY __wcscpy_power7 +#endif + +#include diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c b/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c index 13e44af..6d73551 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c +++ b/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # include # include "init-arch.h" @@ -31,6 +31,8 @@ libc_ifunc (wcscpy, (hwcap & PPC_FEATURE_ARCH_2_05) ? __wcscpy_power6 : __wcscpy_ppc); -#else -#include +#endif + +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 +# include #endif diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c index fa25aa0..003fcd7 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c +++ b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c @@ -16,4 +16,8 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, see . */ -#include +#ifndef MULTI_ARCH_POWER8 +# define WCSRCHR __wcsrchr_power7 +#endif + +#include diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c index 07590f5..cbcc35a 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c +++ b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if IS_IN (libc) +#if IS_IN (libc) && !defined MULTI_ARCH_POWER8 # include # include # include "init-arch.h" @@ -31,6 +31,8 @@ libc_ifunc (wcsrchr, (hwcap & PPC_FEATURE_ARCH_2_05) ? __wcsrchr_power6 : __wcsrchr_ppc); -#else -#include +#endif + +#if !IS_IN (libc) && !defined MULTI_ARCH_POWER8 +# include #endif