Hello community,

here is the log from the commit of package gcc10.14578 for 
openSUSE:Leap:15.2:Update checked in at 2020-10-18 17:38:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2:Update/gcc10.14578 (Old)
 and      /work/SRC/openSUSE:Leap:15.2:Update/.gcc10.14578.new.3486 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gcc10.14578"

Sun Oct 18 17:38:19 2020 rev:1 rq:842319 version:10.2.1+git583

Changes:
--------
New Changes file:

--- /dev/null   2020-10-12 00:46:48.009358834 +0200
+++ 
/work/SRC/openSUSE:Leap:15.2:Update/.gcc10.14578.new.3486/cross-aarch64-gcc10.changes
       2020-10-18 17:38:26.346535732 +0200
@@ -0,0 +1,249 @@
+-------------------------------------------------------------------
+Tue Aug 25 07:15:46 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to gcc-10 branch head (c0746a1beb1ba073c7981eb09f), git583.
+  * Fixes ABI breakage for as-base CDTORs of final classes.  [gcc#95428]
+
+-------------------------------------------------------------------
+Mon Aug 24 06:32:38 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to gcc-10 branch head (d523b5201cce1796717a8ca669), git580.
+  * Includes gcc10-streamer-backports1.patch and
+    gcc10-streamer-backports2.patch.
+  * Includes fixes for LTO ICE [bsc#1175168] and aarc64 128bit
+    CAS miscompilation [bsc#1174753].
+
+-------------------------------------------------------------------
+Wed Aug  5 12:08:32 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to gcc-10 branch head (dda1e9d08434def88ed86557d0), git501.
+  * Includes fix for AARCH64 kernel build failure.  [bsc#1174817]
+  * Includes aarch64 SLS mitigation changes.  [bsc#1172798, CVE-2020-13844]
+- Add gcc10-streamer-backports1.patch and gcc10-streamer-backports2.patch.
+- Enable x86 CET runtime for SLES15 and Leap15 also.
+- Do not enable the now deprecated HSA offloading capability.
+
+-------------------------------------------------------------------
+Tue Jul 28 11:02:20 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to gcc-10 branch head (c0438ced53bcf57e4ebb1c38c), git465.
+  * Includes GCC 10.2 release.  [bsc#1173972] [jsc#ECO-2373]
+  * Picks up fixes for C++20 coroutines support.  [jsc#SLE-12297]
+  * Picks up fix for a recent chromium build fail.
+- Build x86 CET enabled runtime for Factory.
+- Disable GCN offloading for SLE12 and SLE15 GA.
+
+-------------------------------------------------------------------
+Tue Jul  7 06:48:08 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to gcc-10 branch head (12e1a54b06777db74ce375496), git355.
+  * Includes fix for non-reproducible builds with LTO [bsc#1172846].
+
+-------------------------------------------------------------------
+Fri Jul  3 09:47:51 UTC 2020 - Guillaume GARDET <guillaume.gar...@opensuse.org>
+
+- Enable nvptx support for aarch64
+
+-------------------------------------------------------------------
+Thu Jun 25 09:08:00 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to gcc-10 branch head (c91e43e9363bd119a695d6450), git290. 
+  * Includes fix for PR95719, fixing LibreOffice.
+
+-------------------------------------------------------------------
+Thu Jun 11 16:26:53 UTC 2020 - Matwey Kornilov <matwey.korni...@gmail.com>
+
+- Enable c++ for arm-none-eabi
+
+-------------------------------------------------------------------
+Fri May 15 12:00:41 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to gcc-10 branch head (b0461f44076c26ced5526e4fd6), git68.
+- Add gcc10-foffload-default.patch to make offloading ignore
+  offload targets that have not been installed both at compile
+  and runtime (for the libgomp plugin part).
+
+-------------------------------------------------------------------
+Thu May  7 13:43:25 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to gcc-10 branch head (dd38686d9c810cecbaa80bb82e), git40.
+  * Includes GCC 10.1 release.
+
+-------------------------------------------------------------------
+Sat May  2 09:37:31 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to gcc-10 branch head (2aaa1dc3c87372fd55c1c33aa7a), git5.
+  * Includes first release candidate for GCC 10.1.
+  * Includes gcc10-pr94734.patch
+
+-------------------------------------------------------------------
+Fri Apr 24 11:43:55 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (3685c5adf5c0b30268cb8f95c89e4), git176017.
+- Add gcc10-pr94734.patch
+
+-------------------------------------------------------------------
+Fri Apr 17 12:33:31 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (b835645c7a51b7e99092abe61d677), git175845.
+- Drop to 4 jobs as constraint for s390x.
+
+-------------------------------------------------------------------
+Thu Apr 16 13:08:04 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (effcb4181e143bc390286a489ff84), git175831.
+- Package arm_cde.h and arm_mve_types.h for arm.
+- Alter _constraints to also constrain jobs.
+- Add libzstd-devel BuildRequires to cross compiler specs.
+- Switch to release checking builds.
+
+-------------------------------------------------------------------
+Wed Apr 15 09:00:46 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (2dc9294c3c7c81a6d5e1d4dedf58f), git175805.
+
+-------------------------------------------------------------------
+Wed Apr  8 07:59:48 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (13e41d8b9d3d7598c72c38acc86a3), git175688.
+
+-------------------------------------------------------------------
+Mon Apr  6 07:51:47 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (c72a1b6f8b26de37d1a922a8af143), git175641.
+
+-------------------------------------------------------------------
+Fri Mar 27 19:43:44 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (038769535a8cbdd3dd3e100bde314), git175499.
+
+-------------------------------------------------------------------
+Tue Mar 24 07:23:45 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (75c24a08d697d6442fe6c26142f05), git175422.
+
+-------------------------------------------------------------------
+Fri Mar 20 10:13:54 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (7d4549b2cd209eb621453ce13be7f), git175366. 
+
+-------------------------------------------------------------------
+Thu Mar 19 10:22:27 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (c7e9019681857b329bbe4c1e7ec8d), git175348.
+- Package arm_mve.h for arm.
+
+-------------------------------------------------------------------
+Wed Mar 18 08:39:57 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (4e3d3e40726e1b68bf52fa205c68495124ea60b8).
+- libgphobos and libgdruntime SONAME versions were reset to 1.
+
+-------------------------------------------------------------------
+Fri Mar 13 14:01:40 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (3604480a6fe493c51d6ebd53d9b1abeebbbb828f).
+
+-------------------------------------------------------------------
+Mon Mar  9 14:21:19 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update embedded newlib to newlib-3.3.0.tar.xz, drop old
+  newlib-3.1.0.tar.xz
+- Enable support for amdgcn-amdhsa OpenMP/OpenACC offloading.
+
+-------------------------------------------------------------------
+Fri Mar  6 09:23:13 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (655e5c29ae4080666154b3e10ac81116a1b7a638).
+- Re-add gcc9-reproducible-builds.patch and
+  gcc9-reproducible-builds-buildid-for-checksum.patch.
+
+-------------------------------------------------------------------
+Mon Mar  2 10:16:06 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Update to master head (778a77357cad11e8dd4c810544330af0fbe843b1).
+  * Includes fix for binutils version parsing [gcc#93965]
+
+-------------------------------------------------------------------
+Tue Feb 25 13:43:17 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Add libstdc++6-pp provides and conflicts to avoid file conflicts
+  with same minor version of libstdc++6-pp from gcc9.
+
+-------------------------------------------------------------------
+Fri Feb 21 09:58:21 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Disable zstd use for SLES15 and older.
+
+-------------------------------------------------------------------
+Tue Feb 18 15:37:52 UTC 2020 - Martin Liška <mli...@suse.cz>
+
+- Bump to rfa1160f6e50500aa38162fefb43bfb10c25e0363.
+
+-------------------------------------------------------------------
+Tue Feb 18 13:54:32 UTC 2020 - Martin Liška <mli...@suse.cz>
+
+- Bump to r33351ff9faa21c4c1af377d661a52ac0ce366db3.
+
+-------------------------------------------------------------------
+Wed Feb 12 08:02:18 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Adjust installed headers for arm and aarch64, enable link-mutex
+  for riscv64.
+
+-------------------------------------------------------------------
+Mon Feb 10 13:52:26 UTC 2020 - Andreas Schwab <sch...@suse.de>
+
+- Don't remove go tool buildid, needed for bootstrapping go
++++ 52 more lines (skipped)
++++ between /dev/null
++++ and 
/work/SRC/openSUSE:Leap:15.2:Update/.gcc10.14578.new.3486/cross-aarch64-gcc10.changes
New Changes file:

cross-amdgcn-gcc10.changes: same change
New Changes file:

cross-arm-gcc10.changes: same change
New Changes file:

cross-arm-none-gcc10-bootstrap.changes: same change
New Changes file:

cross-arm-none-gcc10.changes: same change
New Changes file:

cross-avr-gcc10-bootstrap.changes: same change
New Changes file:

cross-avr-gcc10.changes: same change
New Changes file:

cross-epiphany-gcc10-bootstrap.changes: same change
New Changes file:

cross-epiphany-gcc10.changes: same change
New Changes file:

cross-hppa-gcc10.changes: same change
New Changes file:

cross-i386-gcc10.changes: same change
New Changes file:

cross-m68k-gcc10.changes: same change
New Changes file:

cross-mips-gcc10.changes: same change
New Changes file:

cross-nvptx-gcc10.changes: same change
New Changes file:

cross-ppc64-gcc10.changes: same change
New Changes file:

cross-ppc64le-gcc10.changes: same change
New Changes file:

cross-riscv64-elf-gcc10-bootstrap.changes: same change
New Changes file:

cross-riscv64-elf-gcc10.changes: same change
New Changes file:

cross-riscv64-gcc10.changes: same change
New Changes file:

cross-rx-gcc10-bootstrap.changes: same change
New Changes file:

cross-rx-gcc10.changes: same change
New Changes file:

cross-s390x-gcc10.changes: same change
New Changes file:

cross-sparc-gcc10.changes: same change
New Changes file:

cross-sparc64-gcc10.changes: same change
New Changes file:

cross-x86_64-gcc10.changes: same change
New Changes file:

gcc10-testresults.changes: same change
New Changes file:

gcc10.changes: same change

New:
----
  README.First-for.SuSE.packagers
  _constraints
  change_spec
  check-build.sh
  cross-aarch64-gcc10.changes
  cross-aarch64-gcc10.spec
  cross-amdgcn-gcc10.changes
  cross-amdgcn-gcc10.spec
  cross-arm-gcc10.changes
  cross-arm-gcc10.spec
  cross-arm-none-gcc10-bootstrap.changes
  cross-arm-none-gcc10-bootstrap.spec
  cross-arm-none-gcc10.changes
  cross-arm-none-gcc10.spec
  cross-avr-gcc10-bootstrap.changes
  cross-avr-gcc10-bootstrap.spec
  cross-avr-gcc10.changes
  cross-avr-gcc10.spec
  cross-epiphany-gcc10-bootstrap.changes
  cross-epiphany-gcc10-bootstrap.spec
  cross-epiphany-gcc10.changes
  cross-epiphany-gcc10.spec
  cross-hppa-gcc10.changes
  cross-hppa-gcc10.spec
  cross-i386-gcc10.changes
  cross-i386-gcc10.spec
  cross-m68k-gcc10.changes
  cross-m68k-gcc10.spec
  cross-mips-gcc10.changes
  cross-mips-gcc10.spec
  cross-nvptx-gcc10.changes
  cross-nvptx-gcc10.spec
  cross-ppc64-gcc10.changes
  cross-ppc64-gcc10.spec
  cross-ppc64le-gcc10.changes
  cross-ppc64le-gcc10.spec
  cross-riscv64-elf-gcc10-bootstrap.changes
  cross-riscv64-elf-gcc10-bootstrap.spec
  cross-riscv64-elf-gcc10.changes
  cross-riscv64-elf-gcc10.spec
  cross-riscv64-gcc10.changes
  cross-riscv64-gcc10.spec
  cross-rx-gcc10-bootstrap.changes
  cross-rx-gcc10-bootstrap.spec
  cross-rx-gcc10.changes
  cross-rx-gcc10.spec
  cross-s390x-gcc10.changes
  cross-s390x-gcc10.spec
  cross-sparc-gcc10.changes
  cross-sparc-gcc10.spec
  cross-sparc64-gcc10.changes
  cross-sparc64-gcc10.spec
  cross-x86_64-gcc10.changes
  cross-x86_64-gcc10.spec
  cross.spec.in
  gcc-10.2.1+git583.tar.xz
  gcc-add-defaultsspec.diff
  gcc.spec.in
  gcc10-foffload-default.patch
  gcc10-rpmlintrc
  gcc10-testresults-rpmlintrc
  gcc10-testresults.changes
  gcc10-testresults.spec
  gcc10.changes
  gcc10.spec
  gcc41-ppc32-retaddr.patch
  gcc43-no-unwind-tables.diff
  gcc44-rename-info-files.patch
  gcc44-textdomain.patch
  gcc48-libstdc++-api-reference.patch
  gcc48-remove-mpfr-2.4.0-requirement.patch
  gcc7-avoid-fixinc-error.diff
  gcc7-remove-Wexpansion-to-defined-from-Wextra.patch
  gcc9-reproducible-builds-buildid-for-checksum.patch
  gcc9-reproducible-builds.patch
  newlib-3.3.0.tar.xz
  pre_checkin.sh
  tls-no-direct.diff

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cross-aarch64-gcc10.spec ++++++
++++ 904 lines (skipped)

cross-amdgcn-gcc10.spec: same change
cross-arm-gcc10.spec: same change
cross-arm-none-gcc10-bootstrap.spec: same change
cross-arm-none-gcc10.spec: same change
cross-avr-gcc10-bootstrap.spec: same change
cross-avr-gcc10.spec: same change
cross-epiphany-gcc10-bootstrap.spec: same change
cross-epiphany-gcc10.spec: same change
cross-hppa-gcc10.spec: same change
cross-i386-gcc10.spec: same change
cross-m68k-gcc10.spec: same change
cross-mips-gcc10.spec: same change
cross-nvptx-gcc10.spec: same change
cross-ppc64-gcc10.spec: same change
cross-ppc64le-gcc10.spec: same change
cross-riscv64-elf-gcc10-bootstrap.spec: same change
cross-riscv64-elf-gcc10.spec: same change
cross-riscv64-gcc10.spec: same change
cross-rx-gcc10-bootstrap.spec: same change
cross-rx-gcc10.spec: same change
cross-s390x-gcc10.spec: same change
cross-sparc-gcc10.spec: same change
cross-sparc64-gcc10.spec: same change
cross-x86_64-gcc10.spec: same change
gcc10-testresults.spec: same change
gcc10.spec: same change
++++++ README.First-for.SuSE.packagers ++++++
IMPORTANT: Please change gcc.spec.in and then run ./pre_checkin.sh!
Do not change gcc.spec directly!

Since GCC comes with a testsuite that runs for quite a long time and
that test suite also contains some known failures, we should run the
testsuite of GCC whenever the compiler is changed to ensure a high
quality compiler.

The package is now split into multiple parts, gcc$VER,
gcc$VER-testresults and libffi$VER (plus various spec files for
cross and icecream cross compilers).  The testsuite is run from
gcc$VER-testresults, a dummy package with the testresults, gcc$VER-testresults,
is generated from it which contains testing logfiles and summary.

Before checking in a new compiler, please do the following steps as QA
measure to check that the new compiler does not introduce any new
failures:

- Run mbuild for all archs for at least the gcc$VER and the gcc$VER-testresults
  subpackages

- When mbuild is finished, call
  /suse/rguenther/bin/compare-testresults.sh mbuild-directory
  (for the gcc$VER-testresults build).
  The output of that script should not show any failures.  If it does,
  please fix them or discuss this with the gcc package maintainers.

- Do not remove this file.

Thanks,
Your GCC packagers.
++++++ _constraints ++++++
<constraints>
  <hardware>
    <disk>
      <size unit="G">26</size>
    </disk>
    <physicalmemory>
      <size unit="G">4</size>
    </physicalmemory>
    <processors>4</processors>
    <jobs>4</jobs>
  </hardware>
  <overwrite>
    <conditions>
      <arch>x86_64</arch>
      <arch>ppc64le</arch>
      <arch>aarch64</arch>
    </conditions>
    <hardware>
      <memory>
        <size unit="G">8</size>
      </memory>
      <processors>8</processors>
      <jobs>8</jobs>
    </hardware>
  </overwrite>
</constraints>
++++++ change_spec ++++++
#!/bin/bash

do_crosses=1
do_optional_compiler_languages=0
rm -f gcc*-testresults.spec gcc*-testresults.changes gcc*.spec cross*.spec 
cross*.changes

# Default is to generate the normal gcc package
# unless a parameter is given.  In case that it is '-*',
# that parameter will be used as suffix for the package name
# and as suffix for the install path (/opt/gccSUFFIX)
# In case that it is '[0-9]*', that parameter will be used
# as a suffix for a versioned package name.

if [ $# -lt 1 ]; then
        echo No package suffix given
        outfile=gcc.spec
else
        case $1 in
        [0-9]*)
          base_ver=$1
          outfile=gcc$1.spec
        ;;
        *)
          echo Invalid package suffix
          exit 1
        ;;
        esac
fi

        : > $outfile
        if test "$do_optional_compiler_languages" = "1"; then
            echo '%define build_optional_compiler_languages 1' >> $outfile
        fi
        sed -e 's%@base_ver@%'$base_ver'%g' \
            gcc.spec.in \
        | sed -n -e '{
/^# PACKAGE-BEGIN/h
/^# PACKAGE-BEGIN/,/^# PACKAGE-END/H
/^# PACKAGE-BEGIN/,/^# PACKAGE-END/!p
/^# PACKAGE-END/{g
s/@variant@//g
p
g
s/@variant@/-32bit/g
p
g
s/@variant@/-64bit/g
p
}
}' >> $outfile

        echo '%define building_testsuite 1' > gcc$base_ver-testresults.spec
        echo '%define run_tests 1' >> gcc$base_ver-testresults.spec
        sed -e '/^# GCC-TESTSUITE-DELETE-BEGIN/,/^# 
GCC-TESTSUITE-DELETE-END/d;s/-n 
gcc@base_ver@-testresults$//g;s/^Name:[[:space:]]*gcc@base_ver@/Name: 
gcc@base_ver@-testresults/g' \
            gcc.spec.in \
        | sed -e 's%@base_ver@%'$base_ver'%g' \
>> gcc$base_ver-testresults.spec
  test -f gcc$base_ver.changes \
    && ( ln -f gcc$base_ver.changes gcc$base_ver-testresults.changes; )



add_cross() {
  local pkgname="$1"; shift
  local rpmtarget="$1"; shift
  local triplet="$1"; shift

  echo "%define pkgname $pkgname" > $pkgname.spec
  echo "%define cross_arch $rpmtarget" >> $pkgname.spec
  echo "%define gcc_target_arch $triplet" >> $pkgname.spec
  echo "$@" >> $pkgname.spec
  { sed -n -e '1,/SRC-COMMON-BEGIN/p' cross.spec.in
    sed -n -e '/SRC-COMMON-BEGIN/,/SRC-COMMON-END/p' $outfile
    sed -n -e '/SRC-COMMON-END/,/BUILD-COMMON-BEGIN/p' cross.spec.in
    sed -n -e '/BUILD-COMMON-BEGIN/,/BUILD-COMMON-END/p' $outfile
    sed -n -e '/BUILD-COMMON-END/,$p' cross.spec.in; } |
    sed -e "s#@base_ver@#$base_ver#" \
        -e "s/^\(ExclusiveArch.*\) $rpmtarget[^ \r]*/\1 /" \
      >> $pkgname.spec
  test -f gcc$base_ver.changes && ln -f gcc$base_ver.changes $pkgname.changes
}

add_newlib_cross() {
  add_cross $1-bootstrap $2 $3 "%define gcc_target_newlib 1
%define gcc_libc_bootstrap 1"
  add_cross $1           $2 $3 "%define gcc_target_newlib 1"
}

# We now support "proper" cross-compilers to suse targets via a
# cross-glibc package, enable that via for example
#
# add_cross cross-aarch64-gcc$base_ver aarch64 aarch64-suse-linux
#
# For now keep the old way of doing things
if test "$do_crosses" = 1 ; then
add_cross cross-aarch64-gcc$base_ver aarch64 aarch64-suse-linux %define 
gcc_icecream 1
add_cross cross-arm-gcc$base_ver arm arm-suse-linux-gnueabi %define 
gcc_icecream 1
add_cross cross-avr-gcc$base_ver-bootstrap avr avr "%define gcc_libc_bootstrap 
1"
add_cross cross-avr-gcc$base_ver avr avr
add_cross cross-i386-gcc$base_ver i386 i586-suse-linux %define gcc_icecream 1
add_cross cross-x86_64-gcc$base_ver x86_64 x86_64-suse-linux %define 
gcc_icecream 1
add_cross cross-s390x-gcc$base_ver s390x s390x-suse-linux %define gcc_icecream 1
add_cross cross-sparc-gcc$base_ver sparcv9 sparc-suse-linux %define 
gcc_icecream 1
add_cross cross-sparc64-gcc$base_ver sparc64 sparc64-suse-linux %define 
gcc_icecream 1
add_cross cross-ppc64-gcc$base_ver ppc64 powerpc64-suse-linux %define 
gcc_icecream 1
add_cross cross-ppc64le-gcc$base_ver ppc64le powerpc64le-suse-linux %define 
gcc_icecream 1
add_cross cross-m68k-gcc$base_ver m68k m68k-suse-linux %define gcc_icecream 1
add_cross cross-mips-gcc$base_ver mips mips-suse-linux %define gcc_icecream 1
add_cross cross-hppa-gcc$base_ver hppa hppa-suse-linux %define gcc_icecream 1
add_cross cross-riscv64-gcc$base_ver riscv64 riscv64-suse-linux %define 
gcc_icecream 1
add_newlib_cross cross-arm-none-gcc$base_ver arm-none arm-none-eabi
add_newlib_cross cross-epiphany-gcc$base_ver epiphany epiphany-elf
#add_newlib_cross cross-nds32le-gcc$base_ver nds32le nds32le-elf
add_newlib_cross cross-riscv64-elf-gcc$base_ver riscv64 riscv64-elf
#add_newlib_cross cross-rl78-gcc$base_ver rl78 rl78-elf
add_newlib_cross cross-rx-gcc$base_ver rx rx-elf
fi
# the nvptx and amdgcn crosses are used for offloading
add_cross cross-nvptx-gcc$base_ver nvptx nvptx-none %define gcc_accel 1
add_cross cross-amdgcn-gcc$base_ver amdgcn amdgcn-amdhsa %define gcc_accel 1

for f in *.spec; do
  sed -i -e '/^# .*-\(BEGIN\|END\)$/d' $f
done

osc service localrun format_spec_file

exit 0
++++++ check-build.sh ++++++
#!/bin/bash
# Copyright (c) 2003,2005 SUSE Linux Products GmbH, Germany.  All rights 
reserved.
#
# Authors: Thorsten Kukuk <ku...@suse.de>
#
# this script use the following variable(s):
# 
# - $BUILD_BASENAME
#

case $BUILD_BASENAME in
   *ppc*)
        # Our biarch 32-bit compiler needs to be build on a 64-bit machine,
        # otherwise some configure checks fail.
        # Note that we cannot use uname here since powerpc32 was invoked
        # already.
        grep 'series64\|ppc64' /proc/version > /dev/null
        if [ $? -ne 0 ] ; then
          echo "build does not work on `hostname` for gcc"
          exit 1
        fi
        ;;
   *x86_64*)
        #if [ `ulimit -v` -le 740000 ] ; then
        #  echo "build does not work on ("`hostname`" for gcc)"
        #  exit 1
        #fi
        if [ `getconf _NPROCESSORS_CONF` -lt  2 ] ; then
          echo "build does not work on `hostname` for gcc"
          exit 1
        fi
        ;;
   *)
        ;;
esac

exit 0

++++++ cross.spec.in ++++++
#
# spec file for package gcc (Version 4.0.1)
#
# Copyright (c) 2005 SUSE Linux AG, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://www.suse.de/feedback/
#

# nospeccleaner

# In the staging/ring projects, we don't want to build the cross-* packages, 
but by default, we do:
%bcond_with ringdisabled

%if %{with ringdisabled}
ExclusiveArch: do-not-build
%endif

%define build_cp 0%{!?gcc_accel:1}
%define build_ada 0
%define build_libjava 0
%define build_java 0

%define build_fortran 0
%define build_objc 0
%define build_objcp 0
%define build_go 0
%define build_nvptx 0
%define build_gcn 0
%define build_d 0

%define enable_plugins 0
%define use_lto_bootstrap 0

%define binutils_target %{cross_arch}
%if "%{cross_arch}" == "armv7l" || "%{cross_arch}" == "armv7hl"
%define binutils_target arm
%endif
%if "%{cross_arch}" == "armv6l" || "%{cross_arch}" == "armv6hl"
%define binutils_target arm
%endif
%if "%{cross_arch}" == "armv5tel"
%define binutils_target arm
%endif
%if "%{cross_arch}" == "arm-none"
%define binutils_target arm
%endif
%if "%{cross_arch}" == "riscv64-elf"
%define binutils_target riscv64
%endif
%if "%{cross_arch}" == "sparcv9"
%define binutils_target sparc
%endif
%define canonical_target %(echo %{binutils_target} | sed -e 
"s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
%if "%{binutils_target}" == "avr" || "%{binutils_target}" == "spu"
%define binutils_os %{canonical_target}
%else
%if "%{binutils_target}" == "epiphany" || "%{binutils_target}" == "nds32le" || 
"%{binutils_target}" == "rl78" || "%{binutils_target}" == "rx"
%define binutils_os %{canonical_target}-elf
%else
%if "%{binutils_target}" == "arm"
%define binutils_os %{canonical_target}-suse-linux-gnueabi
%else
%if 0%{?gcc_accel:1}
%define binutils_os %{gcc_target_arch}
%else
%define binutils_os %{canonical_target}-suse-linux
%endif
%endif
%endif
%endif

%if 0%{?gcc_icecream:1}
%define sysroot %{_prefix}/%{gcc_target_arch}
%else
# offloading builds newlib in-tree and can install in
# the GCC private path without extra sysroot
%if 0%{!?gcc_accel:1}
# use same sysroot as in binutils.spec
%define sysroot %{_prefix}/%{binutils_os}/sys-root
%endif
%endif

%if %{suse_version} >= 1220
%define selfconflict() %1
%else
%define selfconflict() otherproviders(%1)
%endif

Name:         %{pkgname}
# SRC-COMMON-BEGIN
# SRC-COMMON-END
%if "%{cross_arch}" != "nvptx"
%if "%{cross_arch}" != "amdgcn"
BuildRequires: cross-%{binutils_target}-binutils
Requires: cross-%{binutils_target}-binutils
%endif
%endif
BuildRequires: gcc-c++
%if %{suse_version} > 1500
BuildRequires: libzstd-devel
%endif
BuildRequires: bison
BuildRequires: flex
BuildRequires: gettext-devel
BuildRequires: glibc-devel-32bit
BuildRequires: mpc-devel
BuildRequires: mpfr-devel
BuildRequires: perl
%if %{suse_version} > 1220
BuildRequires: makeinfo
%else
BuildRequires: texinfo
%endif
BuildRequires: zlib-devel
BuildRequires: isl-devel
%ifarch ia64
BuildRequires: libunwind-devel
%endif
%if 0%{!?gcc_icecream:1}
%if 0%{?gcc_target_newlib:1} && 0%{!?gcc_libc_bootstrap:1}
BuildRequires: cross-%cross_arch-newlib-devel
%endif
%if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" == "avr"
BuildRequires: avr-libc
%endif
%if 0%{?gcc_target_glibc:1}
BuildRequires: cross-%cross_arch-glibc-devel
%endif
%if "%{cross_arch}" == "nvptx"
BuildRequires: nvptx-tools
Requires: nvptx-tools
Requires: cross-nvptx-newlib-devel >= %{version}-%{release}
ExclusiveArch: x86_64 aarch64
%define nvptx_newlib 1
%endif
%if "%{cross_arch}" == "amdgcn"
# amdgcn uses the llvm assembler and linker
BuildRequires: llvm
BuildRequires: lld
Requires: llvm
Requires: lld
Requires: cross-amdgcn-newlib-devel >= %{version}-%{release}
# SLE12 does not fulfil build requirements for GCN, SLE15 SP1 does
# technically also SLE12 SP5 but do not bother there
%if %{suse_version} >= 1550 || 0%{?sle_version:%sle_version} >= 150100
ExclusiveArch: x86_64
%else
ExclusiveArch: do-not-build
%endif
%define amdgcn_newlib 1
%endif
%endif
%if 0%{?gcc_icecream:1}
ExclusiveArch: ppc64le ppc64 x86_64 s390x aarch64 riscv64
%endif
%define _binary_payload w.ufdio
# Obsolete cross-ppc-gcc49 from cross-ppc64-gcc49 which has
# file conflicts with it and is no longer packaged
%if "%pkgname" == "cross-ppc64-gcc49"
Obsoletes: cross-ppc-gcc49 <= 4.9.0+r209354
%endif
%if 0%{?gcc_target_newlib:1}
# Generally only one cross for the same target triplet can be installed
# at the same time as we are populating a non-version-specific sysroot
Provides: %{gcc_target_arch}-gcc
Conflicts: %selfconflict %{gcc_target_arch}-gcc
%endif
%if 0%{?gcc_libc_bootstrap:1}
# The -bootstrap packages file-conflict with the non-bootstrap variants.
# Even if we don't actually (want to) distribute the bootstrap variants
# the following avoids repo-checker spamming us endlessly.
Conflicts: cross-%{cross_arch}-gcc@base_ver@
%endif
#!BuildIgnore: gcc-PIE
BuildRequires:  update-alternatives
Requires(post): update-alternatives
Requires(preun): update-alternatives
Summary:        The GNU Compiler Collection targeting %{cross_arch}
License:        GPL-3.0-or-later

%description
The GNU Compiler Collection as a cross-compiler targeting %{cross_arch}.
%if 0%{?gcc_icecream:1}
Note this is only useful for building freestanding things like the
kernel since it fails to include target libraries and headers.
%endif
%if 0%{?gcc_libc_bootstrap:1}
This is a package that is necessary for bootstrapping another package
only, it is not intended for any other use.
%endif


# BUILD-COMMON-BEGIN
# BUILD-COMMON-END
%if 0%{!?gcc_icecream:1} && 0%{!?gcc_libc_bootstrap:1}
make %{?_smp_mflags}
%else
make %{?_smp_mflags} all-host
%endif


%if 0%{?gcc_icecream:%gcc_icecream}
%package -n cross-%cross_arch-gcc@base_ver@-icecream-backend
Summary: Icecream backend for the GNU C Compiler
Group:  Development/Languages/C and C++

%description -n cross-%cross_arch-gcc@base_ver@-icecream-backend
This package contains the icecream environment for the GNU C Compiler
%endif


%if 0%{?nvptx_newlib:1}
%package -n cross-nvptx-newlib@base_ver@-devel
Summary: Newlib for the nvptx offload target
Group:  Development/Languages/C and C++
Provides: cross-nvptx-newlib-devel = %{version}-%{release}
Conflicts: cross-nvptx-newlib-devel

%description -n cross-nvptx-newlib@base_ver@-devel
Newlib development files for the nvptx offload target compiler.
%endif

%if 0%{?amdgcn_newlib:1}
%package -n cross-amdgcn-newlib@base_ver@-devel
Summary: Newlib for the amdgcn offload target
Group:  Development/Languages/C and C++
Provides: cross-amdgcn-newlib-devel = %{version}-%{release}
Conflicts: cross-amdgcn-newlib-devel

%description -n cross-amdgcn-newlib@base_ver@-devel
Newlib development files for the amdgcn offload target compiler.
%endif


%define targetlibsubdir %{_libdir}/gcc/%{gcc_target_arch}/%{gcc_dir_version}

%install
cd obj-%{GCCDIST}

%if "%{TARGET_ARCH}" == "amdgcn"
# libtool needs to be able to call ranlib
export PATH="`pwd`/target-tools/bin:$PATH"
%endif

# install and fixup host parts
make DESTDIR=$RPM_BUILD_ROOT install-host
rm -rf $RPM_BUILD_ROOT/%{targetlibsubdir}/install-tools
rm -f $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.la
# common fixup
rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty.a


# install and fixup target parts
%if 0%{?gcc_icecream:1}
# so expect the sysroot to be populated from natively built binaries
%else
%if 0%{!?gcc_libc_bootstrap:1}
# We want shared libraries to reside in the sysroot but the .so symlinks
# on the host.  Once we have a cross target that has shared libs we need
# to manually fix up things here like we do for non-cross compilers
mkdir -p $RPM_BUILD_ROOT/%{?sysroot:%sysroot}
make DESTDIR=$RPM_BUILD_ROOT install-target
%if %{build_cp}
# So we installed libstdc++ headers into %prefix where they conflict
# with other host compilers.  Rip out the non-target specific parts
# again.  Note not all cross targets support libstdc++, so create the
# directory to make things easier.
mkdir -p $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version}
find $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version} -mindepth 1 
-maxdepth 1 -type d -a -not -name %{gcc_target_arch} | xargs -r rm -r
find $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version} -maxdepth 1 -type 
f | xargs -r rm
# And also remove installed pretty printers which conflict in similar ways
rm -rf $RPM_BUILD_ROOT/%{_datadir}/gcc%{binsuffix}
%endif
%endif
%endif

%if 0%{?binutils_os:1}
for prog in as ld; do
  ln -s /usr/%{binutils_os}/bin/$prog $RPM_BUILD_ROOT%{targetlibsubdir}/
done
%endif

# remove docs
rm -rf $RPM_BUILD_ROOT%{_mandir}
rm -rf $RPM_BUILD_ROOT%{_infodir}

# for accelerators remove all frontends but lto1 and also install-tools
%if 0%{?gcc_accel:1}
rm -f $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/cc1
rm -f $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/cc1plus
rm -rf $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/install-tools
rm -rf $RPM_BUILD_ROOT%{targetlibsubdir}/install-tools
# also move things from target directories into the accel path since
# that is the place where we later search for (only)
( cd $RPM_BUILD_ROOT%{targetlibsubdir} && tar cf - . ) | ( cd 
$RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch} && tar xf - )
rm -rf $RPM_BUILD_ROOT%{targetlibsubdir}
%endif
# for amdgcn install the symlinks to the llvm tools
%if "%{TARGET_ARCH}" == "amdgcn"
mkdir -p $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin
ln -s /usr/bin/llvm-ar $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ar
ln -s /usr/bin/llvm-mc $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/as
ln -s /usr/bin/lld $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ld
ln -s /usr/bin/llvm-nm $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/nm
ln -s /usr/bin/llvm-ranlib $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ranlib
ln -s %{_prefix}/amdgcn-amdhsa/bin/ar 
$RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ar
ln -s %{_prefix}/amdgcn-amdhsa/bin/as 
$RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-as
ln -s %{_prefix}/amdgcn-amdhsa/bin/ld 
$RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ld
ln -s %{_prefix}/amdgcn-amdhsa/bin/nm 
$RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-nm
ln -s %{_prefix}/amdgcn-amdhsa/bin/ranlib 
$RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ranlib
%endif

%if 0%{?gcc_icecream:%gcc_icecream}
# Build an icecream environment
# The assembler comes from the cross-binutils, and hence is _not_
# named funnily, not even on ppc, so there we need the original target
install -s -D %{_prefix}/bin/%{binutils_os}-as \
        $RPM_BUILD_ROOT/env/usr/bin/as
install -s $RPM_BUILD_ROOT/%{_prefix}/bin/%{gcc_target_arch}-g++%{binsuffix} \
        $RPM_BUILD_ROOT/env/usr/bin/g++
install -s $RPM_BUILD_ROOT/%{_prefix}/bin/%{gcc_target_arch}-gcc%{binsuffix} \
        $RPM_BUILD_ROOT/env/usr/bin/gcc

for back in cc1 cc1plus; do 
        install -s -D $RPM_BUILD_ROOT/%{targetlibsubdir}/$back \
                $RPM_BUILD_ROOT/env%{targetlibsubdir}/$back
done
if test -f $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.so; then
  install -s -D $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.so \
                $RPM_BUILD_ROOT/env%{targetlibsubdir}/liblto_plugin.so
fi

# Make sure to also pull in all shared library requirements for the
# binaries we put into the environment which is operated by chrooting
# into it and execing the compiler
libs=`for bin in $RPM_BUILD_ROOT/env/usr/bin/* 
$RPM_BUILD_ROOT/env%{targetlibsubdir}/*; do \
  ldd $bin | sed -n '\,^[^/]*\(/[^ ]*\).*,{ s//\1/; p; }'  ;\
done | sort -u `
for lib in $libs; do
  # Check wether the same library also exists in the parent directory,
  # and prefer that on the assumption that it is a more generic one.
  baselib=`echo "$lib" | sed 's,/[^/]*\(/[^/]*\)$,\1,'`
  test -f "$baselib" && lib=$baselib
  install -s -D $lib $RPM_BUILD_ROOT/env$lib
done

cd $RPM_BUILD_ROOT/env
tar --no-recursion --mtime @${SOURCE_DATE_EPOCH:-$(date +%s)} --format=gnu -cv 
`find *|LC_ALL=C sort` |\
  gzip -n9 > ../%{name}_%{_arch}.tar.gz
cd ..
mkdir -p usr/share/icecream-envs
mv %{name}_%{_arch}.tar.gz usr/share/icecream-envs
rpm -q --changelog glibc >  usr/share/icecream-envs/%{name}_%{_arch}.glibc
rpm -q --changelog binutils >  usr/share/icecream-envs/%{name}_%{_arch}.binutils
rm -r env
%endif

# we provide update-alternatives for selecting a compiler version for
# crosses
%if 0%{!?gcc_accel:1}
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
for ex in gcc cpp \
%if %{build_cp}
          c++ g++ \
%endif
          gcc-ar gcc-nm gcc-ranlib lto-dump gcov gcov-dump gcov-tool; do
  ln -s %{_sysconfdir}/alternatives/%{gcc_target_arch}-$ex \
        %{buildroot}%{_bindir}/%{gcc_target_arch}-$ex
done

%post
%{_sbindir}/update-alternatives \
  --install %{_bindir}/%{gcc_target_arch}-gcc %{gcc_target_arch}-gcc 
%{_bindir}/%{gcc_target_arch}-gcc%{binsuffix} @base_ver@ \
  --slave %{_bindir}/%{gcc_target_arch}-cpp %{gcc_target_arch}-cpp 
%{_bindir}/%{gcc_target_arch}-cpp%{binsuffix} \
%if %{build_cp}
  --slave %{_bindir}/%{gcc_target_arch}-c++ %{gcc_target_arch}-c++ 
%{_bindir}/%{gcc_target_arch}-c++%{binsuffix} \
  --slave %{_bindir}/%{gcc_target_arch}-g++ %{gcc_target_arch}-g++ 
%{_bindir}/%{gcc_target_arch}-g++%{binsuffix} \
%endif
  --slave %{_bindir}/%{gcc_target_arch}-gcc-ar %{gcc_target_arch}-gcc-ar 
%{_bindir}/%{gcc_target_arch}-gcc-ar%{binsuffix} \
  --slave %{_bindir}/%{gcc_target_arch}-gcc-nm %{gcc_target_arch}-gcc-nm 
%{_bindir}/%{gcc_target_arch}-gcc-nm%{binsuffix} \
  --slave %{_bindir}/%{gcc_target_arch}-lto-dump %{gcc_target_arch}-lto-dump 
%{_bindir}/%{gcc_target_arch}-lto-dump%{binsuffix} \
  --slave %{_bindir}/%{gcc_target_arch}-gcc-ranlib 
%{gcc_target_arch}-gcc-ranlib 
%{_bindir}/%{gcc_target_arch}-gcc-ranlib%{binsuffix} \
  --slave %{_bindir}/%{gcc_target_arch}-gcov %{gcc_target_arch}-gcov 
%{_bindir}/%{gcc_target_arch}-gcov%{binsuffix} \
  --slave %{_bindir}/%{gcc_target_arch}-gcov-dump %{gcc_target_arch}-gcov-dump 
%{_bindir}/%{gcc_target_arch}-gcov-dump%{binsuffix} \
  --slave %{_bindir}/%{gcc_target_arch}-gcov-tool %{gcc_target_arch}-gcov-tool 
%{_bindir}/%{gcc_target_arch}-gcov-tool%{binsuffix}

%postun
if [ ! -f %{_bindir}/%{gcc_target_arch}-gcc ] ; then
  %{_sbindir}/update-alternatives --remove %{gcc_target_arch}-gcc 
%{_bindir}/%{gcc_target_arch}-gcc%{binsuffix}
fi
%endif

%files
%defattr(-,root,root)
%if 0%{?gcc_accel:1}
%{_prefix}/bin/%{GCCDIST}-accel-%{gcc_target_arch}-*
%dir %{libsubdir}
%dir %{libsubdir}/accel
%{libsubdir}/accel/%{gcc_target_arch}
%else
%{_prefix}/bin/%{gcc_target_arch}-gcc%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-cpp%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-gcc-ar%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-gcc-nm%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-gcc-ranlib%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-lto-dump%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-gcov%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-gcov-dump%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-gcov-tool%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-gcc
%{_prefix}/bin/%{gcc_target_arch}-cpp
%{_prefix}/bin/%{gcc_target_arch}-gcc-ar
%{_prefix}/bin/%{gcc_target_arch}-gcc-nm
%{_prefix}/bin/%{gcc_target_arch}-gcc-ranlib
%{_prefix}/bin/%{gcc_target_arch}-lto-dump
%{_prefix}/bin/%{gcc_target_arch}-gcov
%{_prefix}/bin/%{gcc_target_arch}-gcov-dump
%{_prefix}/bin/%{gcc_target_arch}-gcov-tool
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-cpp
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-ar
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-nm
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-ranlib
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-lto-dump
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov-dump
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov-tool
%if %{build_cp}
%{_prefix}/bin/%{gcc_target_arch}-c++%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-g++%{binsuffix}
%{_prefix}/bin/%{gcc_target_arch}-c++
%{_prefix}/bin/%{gcc_target_arch}-g++
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-c++
%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-g++
%if 0%{!?gcc_libc_bootstrap:1}
%if "%{cross_arch}" == "avr" || 0%{?gcc_target_newlib:1} || 
0%{?gcc_target_glibc:1}
%{_prefix}/include/c++
%endif
%endif
%endif
%dir %{targetlibsubdir}
%dir %{_libdir}/gcc/%{gcc_target_arch}
%{targetlibsubdir}
%endif
%if 0%{!?gcc_icecream:1} && 0%{!?gcc_libc_bootstrap:1} && 0%{?sysroot:1}
%{sysroot}
%endif

%if 0%{?gcc_icecream:%gcc_icecream}
%files -n cross-%cross_arch-gcc@base_ver@-icecream-backend
%defattr(-,root,root)
/usr/share/icecream-envs
%endif

%if 0%{?nvptx_newlib:1}
%files -n cross-nvptx-newlib@base_ver@-devel
%defattr(-,root,root)
%{_prefix}/%{gcc_target_arch}
%endif

%if 0%{?amdgcn_newlib:1}
%files -n cross-amdgcn-newlib@base_ver@-devel
%defattr(-,root,root)
%{_prefix}/%{gcc_target_arch}
%{_prefix}/bin/amdgcn-amdhsa-ar
%{_prefix}/bin/amdgcn-amdhsa-as
%{_prefix}/bin/amdgcn-amdhsa-ld
%{_prefix}/bin/amdgcn-amdhsa-nm
%{_prefix}/bin/amdgcn-amdhsa-ranlib
%endif

%changelog -n cross-%{pkgname}-gcc@base_ver@
++++++ gcc-add-defaultsspec.diff ++++++
Index: gcc/gcc.c
===================================================================
--- gcc/gcc.c.orig      2013-11-26 15:41:59.000000000 +0100
+++ gcc/gcc.c   2013-11-26 16:40:35.780548125 +0100
@@ -258,6 +258,7 @@ static const char *replace_outfile_spec_
 static const char *remove_outfile_spec_function (int, const char **);
 static const char *version_compare_spec_function (int, const char **);
 static const char *include_spec_function (int, const char **);
+static const char *include_noerr_spec_function (int, const char **);
 static const char *find_file_spec_function (int, const char **);
 static const char *find_plugindir_spec_function (int, const char **);
 static const char *print_asm_header_spec_function (int, const char **);
@@ -1357,6 +1358,7 @@ static const struct spec_function static
   { "remove-outfile",          remove_outfile_spec_function },
   { "version-compare",         version_compare_spec_function },
   { "include",                 include_spec_function },
+  { "include_noerr",            include_noerr_spec_function },
   { "find-file",               find_file_spec_function },
   { "find-plugindir",          find_plugindir_spec_function },
   { "print-asm-header",                print_asm_header_spec_function },
@@ -6480,6 +6482,8 @@ main (int argc, char **argv)
   if (access (specs_file, R_OK) == 0)
     read_specs (specs_file, true, false);
 
+  do_self_spec ("%:include_noerr(defaults.spec)%(default_spec)");
+
   /* Process any configure-time defaults specified for the command line
      options, via OPTION_DEFAULT_SPECS.  */
   for (i = 0; i < ARRAY_SIZE (option_default_specs); i++)
@@ -8401,6 +8405,21 @@ get_random_number (void)
   return ret ^ getpid ();
 }
 
+static const char *
+include_noerr_spec_function (int argc, const char **argv)
+{
+  char *file;
+
+  if (argc != 1)
+    abort ();
+
+  file = find_a_file (&startfile_prefixes, argv[0], R_OK, 0);
+  if (file)
+    read_specs (file, FALSE, TRUE);
+
+  return NULL;
+}
+
 /* %:compare-debug-dump-opt spec function.  Save the last argument,
    expected to be the last -fdump-final-insns option, or generate a
    temporary.  */
++++++ gcc.spec.in ++++++
++++ 2583 lines (skipped)

++++++ gcc10-foffload-default.patch ++++++
2019-01-17  Jakub Jelinek  <ja...@redhat.com>

        * gcc.c (offload_targets_default): New variable.
        (process_command): Set it if -foffload is defaulted.
        (driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1
        into environment if -foffload has been defaulted.
        * lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define.
        (compile_offload_image): If OFFLOAD_TARGET_DEFAULT
        is in the environment, don't fail if corresponding mkoffload
        can't be found.
        (compile_images_for_offload_targets): Likewise.  Free and clear
        offload_names if no valid offload is found.
libgomp/
        * target.c (gomp_load_plugin_for_device): If a plugin can't be
        dlopened, assume it has no devices silently.

--- gcc/gcc.c.jj        2017-01-17 10:28:40.000000000 +0100
+++ gcc/gcc.c   2017-01-20 16:26:29.649962902 +0100
@@ -290,6 +290,10 @@ static const char *spec_host_machine = D
 
 static char *offload_targets = NULL;
 
+/* Set to true if -foffload has not been used and offload_targets
+   is set to the configured in default.  */
+static bool offload_targets_default;
+
 /* Nonzero if cross-compiling.
    When -b is used, the value comes from the `specs' file.  */
 
@@ -4457,7 +4461,10 @@ process_command (unsigned int decoded_op
   /* If the user didn't specify any, default to all configured offload
      targets.  */
   if (ENABLE_OFFLOADING && offload_targets == NULL)
-    handle_foffload_option (OFFLOAD_TARGETS);
+    {
+      handle_foffload_option (OFFLOAD_TARGETS);
+      offload_targets_default = true;
+    }
 
   if (output_file
       && strcmp (output_file, "-") != 0
@@ -7693,6 +7700,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS ()
       obstack_grow (&collect_obstack, offload_targets,
                    strlen (offload_targets) + 1);
       xputenv (XOBFINISH (&collect_obstack, char *));
+      if (offload_targets_default)
+         xputenv ("OFFLOAD_TARGET_DEFAULT=1");
     }
 
   free (offload_targets);
--- gcc/lto-wrapper.c.jj        2017-01-01 12:45:34.000000000 +0100
+++ gcc/lto-wrapper.c   2017-01-20 16:34:18.294016997 +0100
@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3.
 /* Environment variable, used for passing the names of offload targets from GCC
    driver to lto-wrapper.  */
 #define OFFLOAD_TARGET_NAMES_ENV       "OFFLOAD_TARGET_NAMES"
+#define OFFLOAD_TARGET_DEFAULT_ENV     "OFFLOAD_TARGET_DEFAULT"
 
 enum lto_mode_d {
   LTO_MODE_NONE,                       /* Not doing LTO.  */
@@ -822,6 +823,12 @@ compile_offload_image (const char *targe
        break;
       }
 
+  if (!compiler && getenv (OFFLOAD_TARGET_DEFAULT_ENV))
+    {
+      free_array_of_ptrs ((void **) paths, n_paths);
+      return NULL;
+    }
+
   if (!compiler)
     fatal_error (input_location,
                 "could not find %s in %s (consider using %<-B%>)",
@@ -885,6 +892,7 @@ compile_images_for_offload_targets (unsi
   unsigned num_targets = parse_env_var (target_names, &names, NULL);
 
   int next_name_entry = 0;
+  bool hsa_seen = false;
   const char *compiler_path = getenv ("COMPILER_PATH");
   if (!compiler_path)
     goto out;
@@ -897,18 +905,26 @@ compile_images_for_offload_targets (unsi
       /* HSA does not use LTO-like streaming and a different compiler, skip
         it. */
       if (strcmp (names[i], "hsa") == 0)
-       continue;
+       {
+         hsa_seen = true;
+         continue;
+       }
 
       offload_names[next_name_entry]
        = compile_offload_image (names[i], compiler_path, in_argc, in_argv,
                                 compiler_opts, compiler_opt_count,
                                 linker_opts, linker_opt_count);
       if (!offload_names[next_name_entry])
-       fatal_error (input_location,
-                    "problem with building target image for %s", names[i]);
+       continue;
       next_name_entry++;
     }
 
+  if (next_name_entry == 0 && !hsa_seen)
+    {
+      free (offload_names);
+      offload_names = NULL;
+    }
+
  out:
   free_array_of_ptrs ((void **) names, num_targets);
 }
--- libgomp/target.c.jj 2017-01-01 12:45:52.000000000 +0100
+++ libgomp/target.c    2017-01-20 20:12:13.756710875 +0100
@@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp
 
   void *plugin_handle = dlopen (plugin_name, RTLD_LAZY);
   if (!plugin_handle)
-    goto dl_fail;
+    return 0;
 
   /* Check if all required functions are available in the plugin and store
      their handlers.  None of the symbols can legitimately be NULL,
++++++ gcc10-rpmlintrc ++++++
# This line is mandatory to access the configuration functions
from Config import *

# gcc/gcc-c++ are devel packages even if not called -devel...
addFilter ("gcc.*devel-file-in-non-devel-package")
addFilter ("gcc.*devel-dependency glibc-devel")
addFilter ("gcc.*devel-dependency libstdc")
# libstdc++6-devel is the devel package of libstdc++6, no better name exists
# and we do package static libs and the .so links (but in a gcc versioned
# directory)
addFilter ("libstdc.*shlib-policy-missing-lib")
# We have names lib libgcc_s1-gcc7 for non-default GCCs
addFilter ("shlib-policy-name-error")
addFilter ("shlib-legacy-policy-name-error")
# Packages provide libgcc_s1 = $version and conflict with other providers
# of libgcc_s1
addFilter ("conflicts-with-provides")

++++++ gcc10-testresults-rpmlintrc ++++++
# This line is mandatory to access the configuration functions
from Config import *

# Currently gotools.log contains $RPM_BUILD_ROOT and there's nothing
# to be done about that and neither do we care
addFilter ("gcc.*-testresults.*file-contains-buildroot")

# The package should _not_ be noarch, testresults differ from architecture
# to architecture
addFilter ("gcc.*-testresults.*no-binary")
++++++ gcc41-ppc32-retaddr.patch ++++++
2005-11-28  Jakub Jelinek  <ja...@redhat.com>

        * config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
        read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
        instead of doing an extran indirection from frame_pointer_rtx.

        * gcc.dg/20051128-1.c: New test.

#Index: gcc/config/rs6000/rs6000.c
#===================================================================
#--- gcc/config/rs6000/rs6000.c.orig    2013-11-26 15:42:33.000000000 +0100
#+++ gcc/config/rs6000/rs6000.c 2013-11-26 16:44:14.566089231 +0100
#@@ -20878,18 +20878,22 @@ rs6000_return_addr (int count, rtx frame
   if (count != 0
       || ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) && flag_pic))
     {
+      rtx x;
       cfun->machine->ra_needs_full_frame = 1;
 
-      return
-       gen_rtx_MEM
-         (Pmode,
-          memory_address
-          (Pmode,
-           plus_constant (Pmode,
-                          copy_to_reg
-                          (gen_rtx_MEM (Pmode,
-                                        memory_address (Pmode, frame))),
-                          RETURN_ADDRESS_OFFSET)));
+      if (count == 0)
+       {
+         gcc_assert (frame == frame_pointer_rtx);
+         x = arg_pointer_rtx;
+       }
+      else
+       {
+         x = memory_address (Pmode, frame);
+         x = copy_to_reg (gen_rtx_MEM (Pmode, x));
+       }
+
+      x = plus_constant (Pmode, x, RETURN_ADDRESS_OFFSET);
+      return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
     }
 
   cfun->machine->ra_need_lr = 1;
Index: gcc/testsuite/gcc.dg/20051128-1.c
===================================================================
--- /dev/null   1970-01-01 00:00:00.000000000 +0000
+++ gcc/testsuite/gcc.dg/20051128-1.c   2013-11-26 16:44:14.566089231 +0100
@@ -0,0 +1,41 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fpic" } */
+
+extern void exit (int);
+extern void abort (void);
+
+int b;
+
+struct A
+{
+  void *pad[147];
+  void *ra, *h;
+  long o;
+};
+
+void
+__attribute__((noinline))
+foo (struct A *a, void *x)
+{
+  __builtin_memset (a, 0, sizeof (a));
+  if (!b)
+    exit (0);
+}
+
+void
+__attribute__((noinline))
+bar (void)
+{
+  struct A a;
+
+  __builtin_unwind_init ();
+  foo (&a, __builtin_return_address (0));
+}
+
+int
+main (void)
+{
+  bar ();
+  abort ();
+  return 0;
+}
++++++ gcc43-no-unwind-tables.diff ++++++
Index: libgcc/Makefile.in
===================================================================
--- libgcc/Makefile.in.orig     2015-12-14 11:33:03.225790694 +0100
+++ libgcc/Makefile.in  2015-12-17 15:09:45.415136693 +0100
@@ -301,7 +301,7 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) 
$(MULTILIB_CFLAGS) -g0 \
   $(NO_PIE_CFLAGS) -finhibit-size-directive -fno-inline -fno-exceptions \
   -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
   -fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \
-  $(INHIBIT_LIBC_CFLAGS) $(USE_TM_CLONE_REGISTRY)
+  $(INHIBIT_LIBC_CFLAGS) $(USE_TM_CLONE_REGISTRY) -fno-unwind-tables 
-fno-asynchronous-unwind-tables
 
 # Extra flags to use when compiling crt{begin,end}.o.
 CRTSTUFF_T_CFLAGS =
++++++ gcc44-rename-info-files.patch ++++++
++++ 708 lines (skipped)

++++++ gcc44-textdomain.patch ++++++
#! /bin/sh -e

# DP: Set gettext's domain and textdomain to the versioned package name.

dir=
if [ $# -eq 3 -a "$2" = '-d' ]; then
    pdir="-d $3"
    dir="$3/"
elif [ $# -ne 1 ]; then
    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
    exit 1
fi
case "$1" in
    -patch)
        patch $pdir -f --no-backup-if-mismatch -p0 < $0
        ;;
    -unpatch)
        patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
        ;;
    *)
        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
        exit 1
esac
exit 0


Index: gcc/Makefile.in
===================================================================
--- gcc/Makefile.in.orig        2013-11-26 16:46:03.000000000 +0100
+++ gcc/Makefile.in     2013-11-26 16:46:43.271816000 +0100
@@ -3795,8 +3795,8 @@ install-po:
          dir=$(localedir)/$$lang/LC_MESSAGES; \
          echo $(mkinstalldirs) $(DESTDIR)$$dir; \
          $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \
-         echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \
-         $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \
+         echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-10.mo; \
+         $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-10.mo; \
        done
 
 # Rule for regenerating the message template (gcc.pot).
Index: gcc/intl.c
===================================================================
--- gcc/intl.c.orig     2013-11-26 15:42:31.000000000 +0100
+++ gcc/intl.c  2013-11-26 16:46:43.271816000 +0100
@@ -55,8 +55,8 @@ gcc_init_libintl (void)
   setlocale (LC_ALL, "");
 #endif
 
-  (void) bindtextdomain ("gcc", LOCALEDIR);
-  (void) textdomain ("gcc");
+  (void) bindtextdomain ("gcc-10", LOCALEDIR);
+  (void) textdomain ("gcc-10");
 
   /* Opening quotation mark.  */
   open_quote = _("`");
Index: libcpp/Makefile.in
===================================================================
--- libcpp/Makefile.in.orig     2013-11-26 16:26:56.000000000 +0100
+++ libcpp/Makefile.in  2013-11-26 16:47:15.764193260 +0100
@@ -49,6 +49,7 @@ LDFLAGS = @LDFLAGS@
 LIBICONV = @LIBICONV@
 LIBINTL = @LIBINTL@
 PACKAGE = @PACKAGE@
+PACKAGE_SUFFIX = -10
 RANLIB = @RANLIB@
 SHELL = @SHELL@
 USED_CATALOGS = @USED_CATALOGS@
@@ -74,8 +75,10 @@ INCLUDES = -I$(srcdir) -I. -I$(srcdir)/.
        -I$(srcdir)/include
 
 ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG)
+ALL_CFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\"
 ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(NOEXCEPTION_FLAGS) $(INCLUDES) \
        $(CPPFLAGS) $(PICFLAG)
+ALL_CXXFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\"
 
 # The name of the compiler to use.
 COMPILER = $(CXX)
@@ -164,8 +167,8 @@ install-strip install: all installdirs
          else continue; \
          fi; \
          dir=$(localedir)/$$lang/LC_MESSAGES; \
-         echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
-         $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
+         echo $(INSTALL_DATA) $$cat 
$(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \
+         $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; 
\
        done
 
 mostlyclean:
Index: libcpp/system.h
===================================================================
--- libcpp/system.h.orig        2013-01-15 10:49:52.000000000 +0100
+++ libcpp/system.h     2013-11-26 16:46:43.271816000 +0100
@@ -280,7 +280,7 @@ extern int errno;
 #endif
 
 #ifndef _
-# define _(msgid) dgettext (PACKAGE, msgid)
+# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid)
 #endif
 
 #ifndef N_
Index: libcpp/init.c
===================================================================
--- libcpp/init.c.orig  2013-11-26 15:42:40.000000000 +0100
+++ libcpp/init.c       2013-11-26 16:46:43.271816000 +0100
@@ -152,7 +152,7 @@ init_library (void)
       init_trigraph_map ();
 
 #ifdef ENABLE_NLS
-       (void) bindtextdomain (PACKAGE, LOCALEDIR);
+       (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR);
 #endif
     }
 }
++++++ gcc48-libstdc++-api-reference.patch ++++++
Index: libstdc++-v3/doc/html/index.html
===================================================================
--- libstdc++-v3/doc/html/index.html    (revision 210144)
+++ libstdc++-v3/doc/html/index.html    (working copy)
@@ -18,7 +18,7 @@
          </p></li><li class="listitem"><p>
            <a class="link" href="faq.html" title="Frequently Asked 
Questions">Frequently Asked Questions</a>
          </p></li><li class="listitem"><p>
-           <a class="link" href="api.html" title="The GNU C++ Library API 
Reference">API and Source Documentation</a>
+           <a class="link" href="api/index.html" title="The GNU C++ Library 
API Reference">API and Source Documentation</a>
          </p></li></ul></div><p>
     </p></div></div></div><hr /></div><div class="toc"><p><strong>Table of 
Contents</strong></p><dl class="toc"><dt><span class="book"><a 
href="manual/index.html">The GNU C++ Library 
Manual</a></span></dt><dd><dl><dt><span class="part"><a 
href="manual/intro.html">I. 
   Introduction

++++++ gcc48-remove-mpfr-2.4.0-requirement.patch ++++++
Index: configure.ac
===================================================================
--- configure.ac        (revision 216911)
+++ configure.ac        (working copy)
@@ -1454,7 +1454,7 @@ if test -d ${srcdir}/gcc && test "x$have
     AC_MSG_CHECKING([for the correct version of mpfr.h])
     AC_TRY_COMPILE([#include <gmp.h>
     #include <mpfr.h>],[
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,4,0)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,1)
     choke me
     #endif
     ], [AC_TRY_COMPILE([#include <gmp.h>
Index: configure
===================================================================
--- configure   (revision 216911)
+++ configure   (working copy)
@@ -5524,7 +5524,7 @@ int
 main ()
 {
 
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,4,0)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,1)
     choke me
     #endif
 
Index: gcc/fortran/simplify.c
===================================================================
--- gcc/fortran/simplify.c      (revision 216911)
+++ gcc/fortran/simplify.c      (working copy)
@@ -4278,10 +4278,7 @@ gfc_simplify_mod (gfc_expr *a, gfc_expr
            return &gfc_bad_expr;
          }
 
-       gfc_set_model_kind (kind);
-       mpfr_fmod (result->value.real, a->value.real, p->value.real,
-                  GFC_RND_MODE);
-       break;
+       return NULL;
 
       default:
        gfc_internal_error ("gfc_simplify_mod(): Bad arguments");
@@ -4327,19 +4324,7 @@ gfc_simplify_modulo (gfc_expr *a, gfc_ex
            return &gfc_bad_expr;
          }
 
-       gfc_set_model_kind (kind);
-       mpfr_fmod (result->value.real, a->value.real, p->value.real,
-                  GFC_RND_MODE);
-       if (mpfr_cmp_ui (result->value.real, 0) != 0)
-         {
-           if (mpfr_signbit (a->value.real) != mpfr_signbit (p->value.real))
-             mpfr_add (result->value.real, result->value.real, p->value.real,
-                       GFC_RND_MODE);
-         }
-       else
-         mpfr_copysign (result->value.real, result->value.real,
-                        p->value.real, GFC_RND_MODE);
-       break;
+       return NULL;
 
       default:
        gfc_internal_error ("gfc_simplify_modulo(): Bad arguments");
Index: gcc/ubsan.c
===================================================================
--- gcc/ubsan.c.orig    2015-06-01 14:52:11.717105684 +0200
+++ gcc/ubsan.c 2015-06-01 14:52:26.945253071 +0200
@@ -1564,40 +1564,6 @@
          min = build_real (expr_type, minval2);
        }
     }
-  else if (REAL_MODE_FORMAT (mode)->b == 10)
-    {
-      /* For _Decimal128 up to 34 decimal digits, - sign,
-        dot, e, exponent.  */
-      char buf[64];
-      mpfr_t m;
-      int p = REAL_MODE_FORMAT (mode)->p;
-      REAL_VALUE_TYPE maxval, minval;
-
-      /* Use mpfr_snprintf rounding to compute the smallest
-        representable decimal number greater or equal than
-        1 << (prec - !uns_p).  */
-      mpfr_init2 (m, prec + 2);
-      mpfr_set_ui_2exp (m, 1, prec - !uns_p, GMP_RNDN);
-      mpfr_snprintf (buf, sizeof buf, "%.*RUe", p - 1, m);
-      decimal_real_from_string (&maxval, buf);
-      max = build_real (expr_type, maxval);
-
-      /* For unsigned, assume -1.0 is always representable.  */
-      if (uns_p)
-       min = build_minus_one_cst (expr_type);
-      else
-       {
-         /* Use mpfr_snprintf rounding to compute the largest
-            representable decimal number less or equal than
-            (-1 << (prec - 1)) - 1.  */
-         mpfr_set_si_2exp (m, -1, prec - 1, GMP_RNDN);
-         mpfr_sub_ui (m, m, 1, GMP_RNDN);
-         mpfr_snprintf (buf, sizeof buf, "%.*RDe", p - 1, m);
-         decimal_real_from_string (&minval, buf);
-         min = build_real (expr_type, minval);
-       }
-      mpfr_clear (m);
-    }
   else
     return NULL_TREE;
 
Index: gcc/gimple-ssa-sprintf.c
===================================================================
--- gcc/gimple-ssa-sprintf.c    (revision 257728)
+++ gcc/gimple-ssa-sprintf.c    (working copy)
@@ -1637,18 +1637,7 @@ get_mpfr_format_length (mpfr_ptr x, cons
        p = 1024;
     }
 
-  len = mpfr_snprintf (NULL, 0, fmtstr, (int)p, x);
-
-  /* Handle the unlikely (impossible?) error by returning more than
-     the maximum dictated by the function's return type.  */
-  if (len < 0)
-    return target_dir_max () + 1;
-
-  /* Adjust the return value by the difference.  */
-  if (p < prec)
-    len += prec - p;
-
-  return len;
+  return target_dir_max () + 1;
 }
 
 /* Return the number of bytes to format using the format specifier

Index: gcc/fortran/simplify.c
===================================================================
--- gcc/fortran/simplify.c      (revision 257983)
+++ gcc/fortran/simplify.c      (working copy)
@@ -1745,51 +1745,6 @@ simplify_trig_call (gfc_expr *icall)
     }
 }
 
-/* Convert a floating-point number from radians to degrees.  */
-
-static void
-degrees_f (mpfr_t x, mp_rnd_t rnd_mode)
-{
-  mpfr_t tmp;
-  mpfr_init (tmp);
-
-  /* Set x = x % 2pi to avoid offsets with large angles.  */
-  mpfr_const_pi (tmp, rnd_mode);
-  mpfr_mul_ui (tmp, tmp, 2, rnd_mode);
-  mpfr_fmod (tmp, x, tmp, rnd_mode);
-
-  /* Set x = x * 180.  */
-  mpfr_mul_ui (x, x, 180, rnd_mode);
-
-  /* Set x = x / pi.  */
-  mpfr_const_pi (tmp, rnd_mode);
-  mpfr_div (x, x, tmp, rnd_mode);
-
-  mpfr_clear (tmp);
-}
-
-/* Convert a floating-point number from degrees to radians.  */
-
-static void
-radians_f (mpfr_t x, mp_rnd_t rnd_mode)
-{
-  mpfr_t tmp;
-  mpfr_init (tmp);
-
-  /* Set x = x % 360 to avoid offsets with large angles.  */
-  mpfr_set_ui (tmp, 360, rnd_mode);
-  mpfr_fmod (tmp, x, tmp, rnd_mode);
-
-  /* Set x = x * pi.  */
-  mpfr_const_pi (tmp, rnd_mode);
-  mpfr_mul (x, x, tmp, rnd_mode);
-
-  /* Set x = x / 180.  */
-  mpfr_div_ui (x, x, 180, rnd_mode);
-
-  mpfr_clear (tmp);
-}
-
 
 /* Convert argument to radians before calling a trig function.  */
 
@@ -1803,12 +1758,7 @@ gfc_simplify_trigd (gfc_expr *icall)
   if (arg->ts.type != BT_REAL)
     gfc_internal_error ("in gfc_simplify_trigd(): Bad type");
 
-  if (arg->expr_type == EXPR_CONSTANT)
-    /* Convert constant to radians before passing off to simplifier.  */
-    radians_f (arg->value.real, GFC_RND_MODE);
-
-  /* Let the usual simplifier take over - we just simplified the arg.  */
-  return simplify_trig_call (icall);
+  return NULL;
 }
 
 /* Convert result of an inverse trig function to degrees.  */
@@ -1816,21 +1766,9 @@ gfc_simplify_trigd (gfc_expr *icall)
 gfc_expr *
 gfc_simplify_atrigd (gfc_expr *icall)
 {
-  gfc_expr *result;
-
   if (icall->value.function.actual->expr->ts.type != BT_REAL)
     gfc_internal_error ("in gfc_simplify_atrigd(): Bad type");
 
-  /* See if another simplifier has work to do first.  */
-  result = simplify_trig_call (icall);
-
-  if (result && result->expr_type == EXPR_CONSTANT)
-    {
-      /* Convert constant to degrees after passing off to actual simplifier.  
*/
-      degrees_f (result->value.real, GFC_RND_MODE);
-      return result;
-    }
-
   /* Let gfc_resolve_atrigd take care of the non-constant case.  */
   return NULL;
 }
@@ -1840,21 +1778,9 @@ gfc_simplify_atrigd (gfc_expr *icall)
 gfc_expr *
 gfc_simplify_atan2d (gfc_expr *y, gfc_expr *x)
 {
-  gfc_expr *result;
-
   if (x->ts.type != BT_REAL || y->ts.type != BT_REAL)
     gfc_internal_error ("in gfc_simplify_atan2d(): Bad type");
 
-  if (x->expr_type == EXPR_CONSTANT && y->expr_type == EXPR_CONSTANT)
-    {
-      result = gfc_simplify_atan2 (y, x);
-      if (result != NULL)
-       {
-         degrees_f (result->value.real, GFC_RND_MODE);
-         return result;
-       }
-    }
-
   /* Let gfc_resolve_atan2d take care of the non-constant case.  */
   return NULL;
 }
++++++ gcc7-avoid-fixinc-error.diff ++++++
Index: gcc/Makefile.in
===================================================================
--- gcc/Makefile.in     (revision 255776)
+++ gcc/Makefile.in     (working copy)
@@ -3066,13 +3066,6 @@ stmp-fixinc: gsyslimits.h macro_list fix
            sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
            multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
            fix_dir=include-fixed$${multi_dir}; \
-           if ! $(inhibit_libc) && test ! -d ${BUILD_SYSTEM_HEADER_DIR}; then \
-             echo The directory that should contain system headers does not 
exist: >&2 ; \
-             echo "  ${BUILD_SYSTEM_HEADER_DIR}" >&2 ; \
-             tooldir_sysinc=`echo "${gcc_tooldir}/sys-include" | sed -e :a -e 
"s,[^/]*/\.\.\/,," -e ta`; \
-             if test "x${BUILD_SYSTEM_HEADER_DIR}" = "x$${tooldir_sysinc}"; \
-             then sleep 1; else exit 1; fi; \
-           fi; \
            $(mkinstalldirs) $${fix_dir}; \
            chmod a+rx $${fix_dir} || true; \
            (TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; 
\
++++++ gcc7-remove-Wexpansion-to-defined-from-Wextra.patch ++++++
Index: gcc/c-family/c.opt
===================================================================
--- gcc/c-family/c.opt  (revision 246224)
+++ gcc/c-family/c.opt  (working copy)
@@ -596,7 +596,7 @@ C ObjC C++ ObjC++ Var(warn_double_promot
 Warn about implicit conversions from \"float\" to \"double\".
 
 Wexpansion-to-defined
-C ObjC C++ ObjC++ CPP(warn_expansion_to_defined) 
CppReason(CPP_W_EXPANSION_TO_DEFINED) Var(cpp_warn_expansion_to_defined) 
Init(0) Warning EnabledBy(Wextra || Wpedantic)
+C ObjC C++ ObjC++ CPP(warn_expansion_to_defined) 
CppReason(CPP_W_EXPANSION_TO_DEFINED) Var(cpp_warn_expansion_to_defined) 
Init(0) Warning EnabledBy(Wpedantic)
 Warn if \"defined\" is used outside #if.
 
 Wimplicit-function-declaration
++++++ gcc9-reproducible-builds-buildid-for-checksum.patch ++++++
Use the binaries build-id as checksum for PCH purposes.

diff --git a/gcc/c-family/c-pch.c b/gcc/c-family/c-pch.c
index a2292f46a7d..94d633d139a 100644
--- a/gcc/c-family/c-pch.c
+++ b/gcc/c-family/c-pch.c
@@ -65,6 +65,66 @@ static FILE *pch_outfile;
 
 static const char *get_ident (void);
 
+#if _GNU_SOURCE
+#include <link.h>
+
+#define ALIGN(val, align)      (((val) + (align) - 1) & ~((align) - 1))
+
+static int
+get_build_id_1 (struct dl_phdr_info *info, size_t, void *data)
+{
+  for (unsigned i = 0; i < info->dlpi_phnum; ++i)
+    {
+      if (info->dlpi_phdr[i].p_type != PT_NOTE)
+       continue;
+      ElfW(Nhdr) *nhdr
+       = (ElfW(Nhdr) *)(info->dlpi_addr + info->dlpi_phdr[i].p_vaddr);
+      ptrdiff_t size = info->dlpi_phdr[i].p_filesz;
+      ptrdiff_t align = info->dlpi_phdr[i].p_align;
+      if (align != 8)
+       align = 4;
+      while (size >= (ptrdiff_t)sizeof (ElfW(Nhdr)))
+       {
+         if (nhdr->n_type == NT_GNU_BUILD_ID
+             && nhdr->n_namesz == 4
+             && strncmp ((char *)nhdr
+                         + sizeof (ElfW(Nhdr)),
+                         "GNU", 4) == 0
+             && nhdr->n_descsz >= 16)
+           {
+             memcpy (data, 
+                     (char *)nhdr
+                     + ALIGN (sizeof (ElfW(Nhdr))
+                              + nhdr->n_namesz, align), 16);
+             return 1;
+           }
+         size_t offset = (ALIGN (sizeof (ElfW(Nhdr))
+                                 + nhdr->n_namesz, align)
+                          + ALIGN(nhdr->n_descsz, align));
+         nhdr = (ElfW(Nhdr) *)((char *)nhdr + offset);
+         size -= offset;
+       }
+    }
+
+  return 0;
+}
+
+static const unsigned char *
+get_build_id ()
+{
+  static unsigned char build_id[16];
+  if (!dl_iterate_phdr (get_build_id_1, build_id))
+    return NULL;
+  return build_id;
+}
+#else
+static const unsigned char *
+get_build_id ()
+{
+  return NULL;
+}
+#endif
+
 /* Compute an appropriate 8-byte magic number for the PCH file, so that
    utilities like file(1) can identify it, and so that GCC can quickly
    ignore non-PCH files and PCH files that are of a completely different
@@ -120,8 +180,11 @@ pch_init (void)
   v.pch_init = &pch_init;
   target_validity = targetm.get_pch_validity (&v.target_data_length);
 
+  const unsigned char *chksum = get_build_id ();
+  if (!chksum)
+    chksum = executable_checksum;
   if (fwrite (partial_pch, IDENT_LENGTH, 1, f) != 1
-      || fwrite (executable_checksum, 16, 1, f) != 1
+      || fwrite (chksum, 16, 1, f) != 1
       || fwrite (&v, sizeof (v), 1, f) != 1
       || fwrite (target_validity, v.target_data_length, 1, f) != 1)
     fatal_error (input_location, "cannot write to %s: %m", pch_file);
@@ -237,7 +300,10 @@ c_common_valid_pch (cpp_reader *pfile, const char *name, 
int fd)
        }
       return 2;
     }
-  if (memcmp (ident + IDENT_LENGTH, executable_checksum, 16) != 0)
+  const unsigned char *chksum = get_build_id ();
+  if (!chksum)
+    chksum = executable_checksum;
+  if (memcmp (ident + IDENT_LENGTH, chksum, 16) != 0)
     {
       if (cpp_get_options (pfile)->warn_invalid_pch)
        cpp_error (pfile, CPP_DL_WARNING,
diff --git a/gcc/genchecksum.c b/gcc/genchecksum.c
index 09fbb63fa93..ec8b3281d53 100644
--- a/gcc/genchecksum.c
+++ b/gcc/genchecksum.c
@@ -113,8 +113,13 @@ main (int argc, char ** argv)
   puts ("#include \"config.h\"");
   puts ("#include \"system.h\"");
   fputs ("EXPORTED_CONST unsigned char executable_checksum[16] = { ", stdout);
+#if _GNU_SOURCE
+  for (i = 0; i < 16; i++)
+    printf ("0x%02x%s", 0, i == 15 ? " };\n" : ", ");
+#else
   for (i = 0; i < 16; i++)
     printf ("0x%02x%s", result[i], i == 15 ? " };\n" : ", ");
+#endif
 
   return 0;
 }
++++++ gcc9-reproducible-builds.patch ++++++
Avoid leaking current data on generated file for Ada.

Index: gcc/ada/gcc-interface/Makefile.in
===================================================================
--- gcc/ada/gcc-interface/Makefile.in   (revision 268977)
+++ gcc/ada/gcc-interface/Makefile.in   (working copy)
@@ -2407,6 +2407,7 @@ $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib
            $(OSCONS_CPP) ; \
            $(OSCONS_EXTRACT) ; \
            ../bldtools/oscons/xoscons s-oscons)
+       touch -r $(fsrcpfx)ada/gsocket.h $@
 
 gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) 
$(RTSDIR)/s-oscons.ads
        test -f $(RTSDIR)/s-oscons.ads || exit 1

++++++ pre_checkin.sh ++++++
#!/bin/bash
# This script is called automatically during autobuild checkin.

case $0 in
  \./*)
    here=$PWD
    ;;
  */*)
    here=${0%/*}
    ;;
  *)
    here=$PWD
    ;;
esac
case ${here##*/} in
  gcc*.*)
    # Handle maintainance projects with .$REPO suffix
    suffix=${here##*/}
    suffix=${suffix%%\.*}
    set ${suffix#gcc}
    ;;
  gcc-*)
    suffix=${here##*/}
    set ${suffix#*-}-
    ;;
  gcc[0-9]*)
    suffix=${here##*/}
    set ${suffix#gcc}
    ;;
esac
. ${here}/change_spec
++++++ tls-no-direct.diff ++++++
For i?86 negative offsets to %fs segment accesses cause a hypervisor
trap for Xen.  Avoid this by making accesses indirect.

???  Note that similar to the behavior on SLE11 this only affects
the compiler built on %ix86, not that on x86_64, even with -m32.

Index: gcc/config/i386/linux.h
===================================================================
--- gcc/config/i386/linux.h.orig        2015-12-17 15:07:37.785650062 +0100
+++ gcc/config/i386/linux.h     2015-12-17 15:08:06.393983290 +0100
@@ -24,3 +24,9 @@ along with GCC; see the file COPYING3.
 
 #undef MUSL_DYNAMIC_LINKER
 #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
+
+/* This slows down Xen, so take a very small general performance hit
+   for not accessing the %fs segment with negative offsets by making
+   GCC not emit direct accesses to %fs at all.  */
+#undef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT
+#define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT 0

Reply via email to