From 130c4973ff0aa0d4b002094b7954a179a3f9857c Mon Sep 17 00:00:00 2001 From: Carlos O'Donell Date: Jan 12 2016 16:59:28 +0000 Subject: Update 64-bit POWER support. This update brings 64-bit POWER support in line with other distributions and removes the 32-bit POWER support. We specify clearly exactly what we support for BE and LE 64-bit POWER. --- diff --git a/glibc.spec b/glibc.spec index fbf4acf..bcab66c 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,6 +1,6 @@ %define glibcsrcdir glibc-2.22-621-g90c400b %define glibcversion 2.22.90 -%define glibcrelease 26%{?dist} +%define glibcrelease 27%{?dist} # Pre-release tarballs are pulled in from git using a command that is # effectively: # @@ -86,18 +86,43 @@ %define xenpackage 0 %endif ############################################################################## -# For Power we actually support alternate runtimes in the same base package. -# If we build for Power or Power64 we additionally build a power6 runtime that -# is enabled by AT_HWCAPS selection and an alternate runtime directory. -%ifarch ppc ppc64 +# We support only 64-bit POWER with the following runtimes: +# 64-bit BE: +# - Power 620 / 970 ISA (default runtime, compatile with POWER4 and newer) +# - Provided for the large number of PowerPC G5 users. +# - IFUNC support provides optimized core routines for POWER6, +# POWER7, and POWER8 transparently (if not using specific runtimes +# below) +# - POWER6 (has power6x symlink to power6, enabled via AT_PLATFORM) +# - Legacy for old systems. Should be deprecated at some point soon. +# - POWER7 (enabled via AT_PLATFORM) +# - Existing deployments. +# - POWER8 (enabled via AT_PLATFORM) +# - Latest generation. +# 64-bit LE: +# - POWER8 LE (default) +# - Latest generation. +# +# No 32-bit POWER support is provided. +# +# There are currently no plans for POWER9 enablement, but as hardware and +# upstream support become available this will be reviewed. +# +%ifarch ppc64 +# Build the additional runtimes for 64-bit BE POWER. %define buildpower6 1 +%define buildpower7 1 +%define buildpower8 1 %else +# No additional runtimes for ppc64le or ppc64p7, just the default. %define buildpower6 0 +%define buildpower7 0 +%define buildpower8 0 %endif ############################################################################## # Any architecture/kernel combination that supports running 32-bit and 64-bit # code in userspace is considered a biarch arch. -%define biarcharches %{ix86} x86_64 ppc %{power64} s390 s390x +%define biarcharches %{ix86} x86_64 %{power64} s390 s390x ############################################################################## # If the debug information is split into two packages, the core debuginfo # pacakge and the common debuginfo package then the arch should be listed @@ -111,7 +136,7 @@ # most optimal function is selected at runtime based on the hardware that is # detected by glibc. The underlying support for function selection and # execution is provided by STT_GNU_IFUNC. -%define multiarcharches ppc %{power64} %{ix86} x86_64 %{sparc} +%define multiarcharches %{power64} %{ix86} x86_64 %{sparc} ############################################################################## # Add -s for a less verbose build output. %define silentrules PARALLELMFLAGS= @@ -352,7 +377,7 @@ Conflicts: kernel < %{enablekernel} %ifarch %{multiarcharches} # Need STT_IFUNC support -%ifarch ppc %{power64} +%ifarch %{power64} BuildRequires: binutils >= 2.20.51.0.2 Conflicts: binutils < 2.20.51.0.2 %else @@ -375,7 +400,7 @@ BuildRequires: binutils >= 2.17.50.0.2-5 %endif BuildRequires: gcc >= 3.2.1-5 -%ifarch ppc s390 s390x +%ifarch s390 s390x BuildRequires: gcc >= 4.1.0-0.17 %endif %if 0%{?_enable_debug_packages} @@ -658,20 +683,6 @@ cat /proc/meminfo ############################################################################## # %%prep - Additional prep required... ############################################################################## - -# XXX: This sounds entirely out of date, particularly in light of the fact -# that we want to be building newer Power support. We should review this -# and potentially remove this workaround. However it will require -# determining which arches we support building for on our distributions. -# ~~~ -# On powerpc32, hp timing is only available in power4/power6 -# libs, not in base, so pre-power4 dynamic linker is incompatible -# with power6 libs. -# ~~~ -%if %{buildpower6} -rm -f sysdeps/powerpc/powerpc32/power4/hp-timing.[ch] -%endif - # Make benchmark scripts executable chmod +x benchtests/scripts/*.py scripts/pylint @@ -747,6 +758,10 @@ GXX="g++ -m64" BuildFlags="" GCC="gcc -m64" GXX="g++ -m64" +%ifarch ppc64p7 +GCC="$GCC -mcpu=power7 -mtune=power7" +GXX="$GXX -mcpu=power7 -mtune=power7" +%endif %endif ############################################################################## @@ -841,9 +856,6 @@ build nosegneg -mno-tls-direct-seg-refs if [ "$platform" != power6 ]; then mkdir -p power6emul/{lib,lib64} $GCC -shared -O2 -fpic -o power6emul/%{_lib}/power6emul.so %{SOURCE8} -Wl,-z,initfirst -%ifarch ppc - gcc -shared -nostdlib -O2 -fpic -m64 -o power6emul/lib64/power6emul.so -xc - - 2.22.90-27 +- Remove 32-bit POWER support. +- Add 64-bit POWER7 BE and 64-bit POWER8 BE optimized libraries. + * Mon Dec 21 2015 Florian Weimer - 2.22.90-26 - Auto-sync with upstream master.