diff --git a/.gitignore b/.gitignore index b67c902..053ac31 100644 --- a/.gitignore +++ b/.gitignore @@ -1,32 +1,86 @@ +/gcc-10.0.1-20200118.tar.xz +/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz +/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz +/gcc-10.0.1-20200121.tar.xz +/gcc-10.0.1-20200123.tar.xz +/gcc-10.0.1-20200126.tar.xz +/gcc-10.0.1-20200130.tar.xz +/gcc-10.0.1-20200216.tar.xz +/gcc-10.0.1-20200311.tar.xz +/gcc-10.0.1-20200325.tar.xz +/gcc-10.0.1-20200328.tar.xz +/gcc-10.0.1-20200420.tar.xz +/gcc-10.0.1-20200501.tar.xz +/gcc-10.1.1-20200507.tar.xz +/gcc-10.1.1-20200618.tar.xz +/gcc-10.2.1-20200723.tar.xz +/gcc-10.2.1-20200804.tar.xz +/gcc-10.2.1-20200826.tar.xz +/gcc-10.2.1-20200916.tar.xz +/gcc-10.2.1-20201005.tar.xz +/gcc-10.2.1-20201016.tar.xz +/gcc-10.2.1-20201102.tar.xz +/gcc-10.2.1-20201112.tar.xz +/gcc-10.2.1-20201125.tar.xz +/gcc-11.0.0-20201204.tar.xz +/gcc-11.0.0-20201216.tar.xz +/gcc-11.0.0-20201217.tar.xz +/gcc-11.0.0-20201223.tar.xz +/gcc-11.0.0-20210109.tar.xz +/gcc-11.0.0-20210113.tar.xz +/gcc-11.0.0-20210116.tar.xz +/gcc-11.0.0-20210119.tar.xz +/gcc-11.0.0-20210123.tar.xz +/gcc-11.0.0-20210130.tar.xz +/gcc-11.0.0-20210210.tar.xz +/gcc-11.0.0-20210225.tar.xz +/gcc-11.0.1-20210307.tar.xz +/gcc-11.0.1-20210319.tar.xz +/isl-0.18.tar.bz2 +/gcc-11.0.1-20210324.tar.xz +/gcc-11.0.1-20210405.tar.xz +/gcc-11.0.1-20210418.tar.xz +/gcc-11.0.1-20210422.tar.xz +/gcc-11.0.1-20210423.tar.xz +/gcc-11.1.1-20210428.tar.xz +/gcc-11.1.1-20210512.tar.xz +/gcc-11.1.1-20210531.tar.xz +/gcc-11.1.1-20210617.tar.xz +/gcc-11.1.1-20210623.tar.xz +/gcc-11.1.1-20210726.tar.xz +/gcc-11.2.1-20210728.tar.xz +/gcc-11.2.1-20210823.tar.xz +/gcc-11.2.1-20211012.tar.xz +/gcc-11.2.1-20211018.tar.xz +/gcc-11.2.1-20211019.tar.xz +/gcc-11.2.1-20211203.tar.xz +/gcc-12.0.0-20220108.tar.xz +/gcc-12.0.0-20220112.tar.xz +/gcc-12.0.0-20220115.tar.xz +/gcc-12.0.1-20220118.tar.xz +/gcc-12.0.1-20220125.tar.xz +/gcc-12.0.1-20220129.tar.xz +/gcc-12.0.1-20220202.tar.xz +/gcc-12.0.1-20220205.tar.xz +/gcc-12.0.1-20220212.tar.xz +/gcc-12.0.1-20220214.tar.xz +/gcc-12.0.1-20220222.tar.xz +/gcc-12.0.1-20220306.tar.xz +/gcc-12.0.1-20220308.tar.xz +/gcc-12.0.1-20220401.tar.xz +/gcc-12.0.1-20220411.tar.xz +/gcc-12.0.1-20220413.tar.xz +/gcc-12.0.1-20220429.tar.xz +/gcc-12.1.1-20220507.tar.xz +/gcc-12.1.1-20220628.tar.xz +/gcc-12.1.1-20220810.tar.xz +/gcc-12.2.1-20220819.tar.xz +/gcc-12.2.1-20221103.tar.xz /isl-0.24.tar.bz2 -/nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz -/newlib-cygwin-2e4db338ac125579d555aeee516e48588a628a16.tar.xz -/gcc-15.0.1-20250201.tar.xz -/gcc-15.0.1-20250204.tar.xz -/gcc-15.0.1-20250225.tar.xz -/gcc-15.0.1-20250301.tar.xz -/gcc-15.0.1-20250313.tar.xz -/gcc-15.0.1-20250329.tar.xz -/gcc-15.0.1-20250410.tar.xz -/newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz -/gcc-15.0.1-20250417.tar.xz -/gcc-15.0.1-20250418.tar.xz -/gcc-15.1.1-20250425.tar.xz -/gcc-15.1.1-20250521.tar.xz -/gcc-15.1.1-20250707.tar.xz -/gcc-15.1.1-20250718.tar.xz -/gcc-15.1.1-20250719.tar.xz -/gcc-15.2.1-20250808.tar.xz -/nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz -/gcc-15.2.1-20250924.tar.xz -/gcc-15.2.1-20251022.tar.xz -/gcc-15.2.1-20251111.tar.xz -/gcc-15.2.1-20251211.tar.xz -/gcc-16.0.0-20251218.tar.xz -/gcc-16.0.0-20251220.tar.xz -/gcc-16.0.0-20260103.tar.xz -/gcc-16.0.0-20260110.tar.xz -/gcc-16.0.0-20260112.tar.xz -/gcc-16.0.1-20260112.tar.xz -/gcc-16.0.1-20260113.tar.xz -/gcc-16.0.1-20260115.tar.xz +/newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz +/nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz +/gcc-12.2.1-20221121.tar.xz +/gcc-13.0.0-20221219.tar.xz +/gcc-13.0.0-20230102.tar.xz +/gcc-13.0.0-20230106.tar.xz +/gcc-13.0.0-20230112.tar.xz diff --git a/gcc.spec b/gcc.spec index 71e5d1d..8c59ea8 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,18 +1,16 @@ -%global DATE 20260115 -%global gitrev 1a9a51aca25eaad91d80869c43859274fe5e1096 -%global gcc_version 16.0.1 -%global gcc_major 16 +%global DATE 20230112 +%global gitrev c30a47620595c0ba46276c631a848dd181f2dd88 +%global gcc_version 13.0.0 +%global gcc_major 13 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. %global gcc_release 0 -%global nvptx_tools_gitrev a0c1fff6534a4df9fb17937c3c4a4b1071212029 -%global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99 +%global nvptx_tools_gitrev 472b6e78b3ba918d727698f79911360b7c808247 +%global newlib_cygwin_gitrev a8526cb52bedabd4d6ba4b227a5185627f871aa1 %global _unpackaged_files_terminate_build 0 -%if 0%{?fedora:1} %global _performance_build 1 # Hardening slows the compiler way too much. %undefine _hardened_build -%endif %undefine _auto_set_build_flags %if 0%{?fedora} > 27 || 0%{?rhel} > 7 # Until annobin is fixed (#1519165). @@ -26,13 +24,6 @@ %if 0%{?__brp_strip_lto:1} %global __brp_strip_lto %{__brp_strip_lto} || : %endif -%if 0%{?rhel} > 0 -%define bugurl https://issues.redhat.com -%else -%define bugurl https://bugzilla.redhat.com/bugzilla -%endif -%{!?dist_bug_report_url: %global dist_bug_report_url %bugurl} - %if 0%{?fedora} < 32 && 0%{?rhel} < 8 %global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64 %else @@ -44,8 +35,6 @@ %global build_go 0 %global build_d 0 %global build_m2 0 -%global build_cobol 0 -%global build_algol68 0 %else %ifarch %{ix86} x86_64 ia64 ppc %{power64} alpha s390x %{arm} aarch64 riscv64 %global build_ada 1 @@ -68,19 +57,13 @@ %else %global build_m2 0 %endif -%ifarch x86_64 aarch64 ppc64le -%global build_cobol 1 -%else -%global build_cobol 0 -%endif -%global build_algol68 1 %endif %ifarch %{ix86} x86_64 ia64 ppc64le %global build_libquadmath 1 %else %global build_libquadmath 0 %endif -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 riscv64 +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %global build_libasan 1 %else %global build_libasan 0 @@ -90,17 +73,17 @@ %else %global build_libhwasan 0 %endif -%ifarch x86_64 ppc64 ppc64le aarch64 s390x riscv64 +%ifarch x86_64 ppc64 ppc64le aarch64 s390x %global build_libtsan 1 %else %global build_libtsan 0 %endif -%ifarch x86_64 ppc64 ppc64le aarch64 s390x riscv64 +%ifarch x86_64 ppc64 ppc64le aarch64 s390x %global build_liblsan 1 %else %global build_liblsan 0 %endif -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 riscv64 +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %global build_libubsan 1 %else %global build_libubsan 0 @@ -110,7 +93,7 @@ %else %global build_libatomic 0 %endif -%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64 riscv64 +%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64 %global build_libitm 1 %else %global build_libitm 0 @@ -121,7 +104,7 @@ %global build_isl 1 %endif %global build_libstdcxx_docs 1 -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips} riscv64 +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips} %global attr_ifunc 1 %else %global attr_ifunc 0 @@ -131,11 +114,6 @@ %else %global build_offload_nvptx 0 %endif -%ifarch x86_64 -%global build_offload_amdgcn 1 -%else -%global build_offload_amdgcn 0 -%endif %if 0%{?fedora} < 32 && 0%{?rhel} < 8 %ifarch s390x %global multilib_32_arch s390 @@ -158,35 +136,29 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.3%{?dist} -# License notes for some of the less obvious ones: -# gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para -# isl: MIT, BSD-2-Clause -# libcody: Apache-2.0 -# libphobos/src/etc/c/curl.d: curl -# All of the remaining license soup is in newlib. -License: GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn AND dtoa AND SMLNJ AND AMD-newlib AND OAR AND HPND-merchantability-variant AND HPND-Intel +Release: %{gcc_release}.8%{?dist} +# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have +# GCC Runtime Exception. +License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD # The source for this package was pulled from upstream's vcs. # %%{gitrev} is some commit from the # https://gcc.gnu.org/git/?p=gcc.git;h=refs/vendors/redhat/heads/gcc-%%{gcc_major}-branch -# branch. Use the following command to generate the tarball: -# ./update-gcc.sh %%{gitrev} -# optionally if say /usr/src/gcc/.git/ is an existing gcc git clone -# ./update-gcc.sh %%{gitrev} /usr/src/gcc/.git/ -# to speed up the clone operations. Note, %%{gitrev} macro in -# gcc.spec shouldn't be updated before running the script, the script -# will update it, fill in some %%changelog details etc. +# branch. Use the following commands to generate the tarball: +# git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp +# git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin %%{gitrev} +# git --git-dir=gcc-dir.tmp/.git archive --prefix=%%{name}-%%{version}-%%{DATE}/ %%{gitrev} | xz -9e > %%{name}-%%{version}-%%{DATE}.tar.xz +# rm -rf gcc-dir.tmp Source0: gcc-%{version}-%{DATE}.tar.xz # The source for nvptx-tools package was pulled from upstream's vcs. Use the # following commands to generate the tarball: -# git clone --depth 1 https://github.com/MentorEmbedded/nvptx-tools.git nvptx-tools-dir.tmp +# git clone --depth 1 git://github.com/MentorEmbedded/nvptx-tools.git nvptx-tools-dir.tmp # git --git-dir=nvptx-tools-dir.tmp/.git fetch --depth 1 origin %%{nvptx_tools_gitrev} # git --git-dir=nvptx-tools-dir.tmp/.git archive --prefix=nvptx-tools-%%{nvptx_tools_gitrev}/ %%{nvptx_tools_gitrev} | xz -9e > nvptx-tools-%%{nvptx_tools_gitrev}.tar.xz # rm -rf nvptx-tools-dir.tmp Source1: nvptx-tools-%{nvptx_tools_gitrev}.tar.xz # The source for nvptx-newlib package was pulled from upstream's vcs. Use the # following commands to generate the tarball: -# git clone https://sourceware.org/git/newlib-cygwin.git newlib-cygwin-dir.tmp +# git clone git://sourceware.org/git/newlib-cygwin.git newlib-cygwin-dir.tmp # git --git-dir=newlib-cygwin-dir.tmp/.git archive --prefix=newlib-cygwin-%%{newlib_cygwin_gitrev}/ %%{newlib_cygwin_gitrev} ":(exclude)newlib/libc/sys/linux/include/rpc/*.[hx]" | xz -9e > newlib-cygwin-%%{newlib_cygwin_gitrev}.tar.xz # rm -rf newlib-cygwin-dir.tmp Source2: newlib-cygwin-%{newlib_cygwin_gitrev}.tar.xz @@ -206,8 +178,11 @@ URL: http://gcc.gnu.org # Need binutils which support -plugin # Need binutils which support .loc view >= 2.30 # Need binutils which support --generate-missing-build-notes=yes >= 2.31 -# Need binutils which support .base64 >= 2.43 -BuildRequires: binutils >= 2.43 +%if 0%{?fedora} >= 29 || 0%{?rhel} > 7 +BuildRequires: binutils >= 2.31 +%else +BuildRequires: binutils >= 2.24 +%endif # While gcc doesn't include statically linked binaries, during testing # -static is used several times. BuildRequires: glibc-static @@ -220,9 +195,6 @@ BuildRequires: gcc, gcc-c++, make %if %{build_go} BuildRequires: hostname, procps %endif -%if %{build_cobol} -BuildRequires: libxml2-devel -%endif # For VTA guality testing BuildRequires: gdb # Make sure pthread.h doesn't contain __thread tokens @@ -236,11 +208,9 @@ BuildRequires: libzstd-devel # Make sure glibc supports TFmode long double BuildRequires: glibc >= 2.3.90-35 %endif -%ifarch %{multilib_64_archs} -BuildRequires: (glibc32 or glibc-devel(%{__isa_name}-32)) -%endif -%ifarch sparcv9 ppc -BuildRequires: (glibc64 or glibc-devel(%{__isa_name}-64)) +%ifarch %{multilib_64_archs} sparcv9 ppc +# Ensure glibc{,-devel} is installed for both multilib arches +BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so %endif %if %{build_ada} # Ada requires Ada to build @@ -257,9 +227,6 @@ BuildRequires: libunwind >= 0.98 BuildRequires: doxygen >= 1.7.1 BuildRequires: graphviz, dblatex, texlive-collection-latex, docbook5-style-xsl %endif -%if %{build_offload_amdgcn} -BuildRequires: llvm >= 15, lld >= 15 -%endif Requires: cpp = %{version}-%{release} # Need .eh_frame ld optimizations # Need proper visibility support @@ -277,8 +244,11 @@ Requires: cpp = %{version}-%{release} # Need binutils that support -plugin # Need binutils that support .loc view >= 2.30 # Need binutils which support --generate-missing-build-notes=yes >= 2.31 -# Need binutils that support .base64 >= 2.43 -Requires: binutils >= 2.43 +%if 0%{?fedora} >= 29 || 0%{?rhel} > 7 +Requires: binutils >= 2.31 +%else +Requires: binutils >= 2.24 +%endif # Make sure gdb will understand DW_FORM_strp Conflicts: gdb < 5.1-2 Requires: glibc-devel >= 2.2.90-12 @@ -293,11 +263,6 @@ Requires: glibc >= 2.16 %endif Requires: libgcc >= %{version}-%{release} Requires: libgomp = %{version}-%{release} -%if %{build_libatomic} -Requires: libatomic = %{version}-%{release} -Obsoletes: libatomic-static < %{version}-%{release} -Provides: libatomic-static = %{version}-%{release} -%endif # lto-wrapper invokes make Requires: make %if !%{build_ada} @@ -310,23 +275,25 @@ Provides: bundled(libbacktrace) Provides: bundled(libffi) Provides: gcc(major) = %{gcc_major} -Patch0: gcc16-hack.patch -Patch2: gcc16-sparc-config-detection.patch -Patch3: gcc16-libgomp-omp_h-multilib.patch -Patch4: gcc16-libtool-no-rpath.patch -Patch5: gcc16-isl-dl.patch -Patch6: gcc16-isl-dl2.patch -Patch7: gcc16-libstdc++-docs.patch -Patch8: gcc16-no-add-needed.patch -Patch9: gcc16-Wno-format-security.patch -Patch10: gcc16-rh1574936.patch -Patch11: gcc16-d-shared-libphobos.patch -Patch12: gcc16-pr119006.patch -Patch13: gcc16-pr123273.patch +Patch0: gcc13-hack.patch +Patch2: gcc13-sparc-config-detection.patch +Patch3: gcc13-libgomp-omp_h-multilib.patch +Patch4: gcc13-libtool-no-rpath.patch +Patch5: gcc13-isl-dl.patch +Patch6: gcc13-isl-dl2.patch +Patch7: gcc13-libstdc++-docs.patch +Patch8: gcc13-no-add-needed.patch +Patch9: gcc13-Wno-format-security.patch +Patch10: gcc13-rh1574936.patch +Patch11: gcc13-d-shared-libphobos.patch +Patch12: gcc13-pr107678.patch Patch50: isl-rh2155127.patch -Patch100: gcc16-fortran-fdec-duplicates.patch +Patch100: gcc13-fortran-fdec-duplicates.patch +Patch101: gcc13-fortran-flogical-as-integer.patch +Patch102: gcc13-fortran-fdec-override-kind.patch +Patch103: gcc13-fortran-fdec-non-logical-if.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -348,7 +315,7 @@ Patch100: gcc16-fortran-fdec-duplicates.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.25.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.22.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -356,7 +323,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.25.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.22.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -367,26 +334,26 @@ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} %endif %description -The gcc package contains the GNU Compiler Collection version %{gcc_major}. +The gcc package contains the GNU Compiler Collection version 13. You'll need this package in order to compile C code. %package -n libgcc -Summary: GCC version %{gcc_major} shared support library +Summary: GCC version 13 shared support library Autoreq: false %if !%{build_ada} Obsoletes: libgnat < %{version}-%{release} %endif -Obsoletes: libmudflap < %{version}-%{release} -Obsoletes: libmudflap-devel < %{version}-%{release} -Obsoletes: libmudflap-static < %{version}-%{release} +Obsoletes: libmudflap +Obsoletes: libmudflap-devel +Obsoletes: libmudflap-static Obsoletes: libgcj < %{version}-%{release} Obsoletes: libgcj-devel < %{version}-%{release} Obsoletes: libgcj-src < %{version}-%{release} %ifarch %{ix86} x86_64 -Obsoletes: libcilkrts < %{version}-%{release} -Obsoletes: libcilkrts-static < %{version}-%{release} -Obsoletes: libmpx < %{version}-%{release} -Obsoletes: libmpx-static < %{version}-%{release} +Obsoletes: libcilkrts +Obsoletes: libcilkrts-static +Obsoletes: libmpx +Obsoletes: libmpx-static %endif %description -n libgcc @@ -411,12 +378,6 @@ including templates and exception handling. Summary: GNU Standard C++ Library Autoreq: true Requires: glibc >= 2.10.90-7 -BuildRequires: tzdata >= 2017c -%if 0%{?fedora} > 38 || 0%{?rhel} > 9 -Recommends: tzdata >= 2017c -%else -Requires: tzdata >= 2017c -%endif %description -n libstdc++ The libstdc++ package contains a rewritten standard compliant GCC Standard @@ -494,11 +455,9 @@ programs with the GNU Compiler Collection. %package -n libgfortran Summary: Fortran runtime Autoreq: true -%if 0%{?fedora} < 28 && 0%{?rhel} < 8 %if %{build_libquadmath} Requires: libquadmath = %{version}-%{release} %endif -%endif %description -n libgfortran This package contains Fortran shared library which is needed to run @@ -571,68 +530,15 @@ Requires: gcc-gm2 = %{version}-%{release} %description -n libgm2-static This package contains static Modula-2 libraries. -%package gcobol -Summary: COBOL support -Requires: gcc = %{version}-%{release} -Requires: gcc-c++ = %{version}-%{release} -Requires: libgcobol = %{version}-%{release} -Autoreq: true - -%description gcobol -The gcc-gcobol package provides support for compiling COBOL -programs with the GNU Compiler Collection. - -%package -n libgcobol -Summary: COBOL runtime -Autoreq: true - -%description -n libgcobol -This package contains COBOL shared libraries which are needed to run -COBOL dynamically linked programs. - -%package -n libgcobol-static -Summary: Static COBOL libraries -Requires: libgcobol = %{version}-%{release} -Requires: gcc-gcobol = %{version}-%{release} - -%description -n libgcobol-static -This package contains static COBOL libraries. - -%package algol68 -Summary: Algol 68 support -Requires: gcc = %{version}-%{release} -Requires: libga68 = %{version}-%{release} -Autoreq: true - -%description algol68 -The gcc-algol68 package provides support for compiling Algol 68 -programs with the GNU Compiler Collection. - -%package -n libga68 -Summary: Algol 68 runtime -Autoreq: true - -%description -n libga68 -This package contains Algol 68 shared libraries which are needed to run -Algol 68 dynamically linked programs. - -%package -n libga68-static -Summary: Static Algol 68 libraries -Requires: libga68 = %{version}-%{release} -Requires: gcc-algol68 = %{version}-%{release} - -%description -n libga68-static -This package contains static Algol 68 libraries. - %package -n libgomp -Summary: GCC OpenMP v5.2 shared support library +Summary: GCC OpenMP v4.5 shared support library %description -n libgomp This package contains GCC shared support library which is needed -for OpenMP v5.2 support. +for OpenMP v4.5 support. %package -n libgomp-offload-nvptx -Summary: GCC OpenMP v5.2 plugin for offloading to NVPTX +Summary: GCC OpenMP v4.5 plugin for offloading to NVPTX Requires: libgomp = %{version}-%{release} %description -n libgomp-offload-nvptx @@ -640,17 +546,6 @@ This package contains libgomp plugin for offloading to NVidia PTX. The plugin needs libcuda.so.1 shared library that has to be installed separately. -%package -n libgomp-offload-amdgcn -Summary: GCC OpenMP v5.2 plugin for offloading to AMD GCN -Requires: libgomp = %{version}-%{release} -%if 0%{?fedora:1} -Requires: rocm-runtime >= 6.0.0 -%endif - -%description -n libgomp-offload-amdgcn -This package contains libgomp plugin for offloading to AMD ROCm capable -devices. - %package gdb-plugin Summary: GCC plugin for GDB Requires: gcc = %{version}-%{release} @@ -677,20 +572,6 @@ Requires: libgccjit = %{version}-%{release} %description -n libgccjit-devel This package contains header files and documentation for GCC JIT front-end. -%package -n libgdiagnostics -Summary: Library for emitting diagnostics - -%description -n libgdiagnostics -This package contains libgdiagnostics shared library and sarif-replay program. - -%package -n libgdiagnostics-devel -Summary: Support for emitting diagnostics -Requires: libgdiagnostics = %{version}-%{release} - -%description -n libgdiagnostics-devel -This package contains header files and documentation for the libgdiagnostics -library. - %package -n libquadmath Summary: GCC __float128 shared support library @@ -746,6 +627,13 @@ This package contains the GNU Atomic library which is a GCC support runtime library for atomic operations not supported by hardware. +%package -n libatomic-static +Summary: The GNU Atomic static library +Requires: libatomic = %{version}-%{release} + +%description -n libatomic-static +This package contains GNU Atomic static libraries. + %package -n libasan Summary: The Address Sanitizer runtime library @@ -940,18 +828,6 @@ NVidia PTX. OpenMP and OpenACC programs linked with -fopenmp will by default add PTX code into the binaries, which can be offloaded to NVidia PTX capable devices if available. -%package offload-amdgcn -Summary: Offloading compiler to AMD GCN -Requires: gcc = %{version}-%{release} -Requires: libgomp-offload-amdgcn = %{version}-%{release} -Requires: llvm >= 15, lld >= 15 - -%description offload-amdgcn -The gcc-offload-amdgcn package provides offloading support for -AMD GCN. OpenMP and OpenACC programs linked with -fopenmp will -by default add GCN code into the binaries, which can be offloaded -to AMD ROCm capable devices if available. - %package plugin-annobin Summary: The annobin plugin for gcc, built by the installed version of gcc Requires: gcc = %{version}-%{release} @@ -966,22 +842,33 @@ so that there cannot be any synchronization problems. %prep %setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3 -%autopatch -p0 -m 0 -M 4 +%patch0 -p0 -b .hack~ +%patch2 -p0 -b .sparc-config-detection~ +%patch3 -p0 -b .libgomp-omp_h-multilib~ +%patch4 -p0 -b .libtool-no-rpath~ %if %{build_isl} -%autopatch -p0 -m 5 -M 6 +%patch5 -p0 -b .isl-dl~ +%patch6 -p0 -b .isl-dl2~ %endif %if %{build_libstdcxx_docs} -%autopatch -p0 7 +%patch7 -p0 -b .libstdc++-docs~ %endif -%autopatch -p0 -m 8 -M 9 +%patch8 -p0 -b .no-add-needed~ +%patch9 -p0 -b .Wno-format-security~ %if 0%{?fedora} >= 29 || 0%{?rhel} > 7 -%autopatch -p0 10 +%patch10 -p0 -b .rh1574936~ %endif -%autopatch -p0 -m 11 -M 99 +%patch11 -p0 -b .d-shared-libphobos~ +%patch12 -p0 -b .pr107678~ + +%patch50 -p0 -b .rh2155127~ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4 %if 0%{?rhel} >= 9 -%autopatch -p1 100 +%patch100 -p1 -b .fortran-fdec-duplicates~ +%patch101 -p1 -b .fortran-flogical-as-integer~ +%patch102 -p1 -b .fortran-fdec-override-kind~ +%patch103 -p1 -b .fortran-fdec-non-logical-if~ %endif %ifarch %{arm} @@ -992,12 +879,14 @@ rm -f libphobos/testsuite/libphobos.gc/forkgc2.d echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE +cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h + ./contrib/gcc_update --touch LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt -sed -i -e 's/m_report_bug = false;/m_report_bug = true;/' gcc/diagnostics/context.cc +sed -i -e 's/context->report_bug = false;/context->report_bug = true;/' gcc/diagnostic.cc %ifarch ppc if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then @@ -1026,15 +915,13 @@ export CONFIG_SITE=NONE CC=gcc CXX=g++ -OPT_FLAGS="%{optflags}" -OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=[123]//g'` -OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[123]//g'` +OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[123]//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/\(-Wp,\)\?-U_FORTIFY_SOURCE//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-flto=auto//g;s/-flto//g;s/-ffat-lto-objects//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/ -pipe / /g'` -OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-fno-omit-frame-pointer//g;s/-mbackchain//g;s/-mno-omit-leaf-frame-pointer//g'` +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-fno-omit-frame-pointer //g;s/-mbackchain //g;s/-mno-omit-leaf-frame-pointer //g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-Werror=format-security/-Wformat-security/g'` %ifarch sparc OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'` @@ -1077,7 +964,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ --target nvptx-none --enable-as-accelerator-for=%{gcc_target_platform} \ --enable-languages=c,c++,fortran,lto \ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ - --with-bugurl=%dist_bug_report_url \ + --with-bugurl=http://bugzilla.redhat.com/bugzilla \ --enable-checking=release --with-system-zlib \ --with-gcc-major-version-only --without-isl make %{?_smp_mflags} @@ -1085,42 +972,6 @@ cd .. rm -f newlib %endif -%if %{build_offload_amdgcn} -mkdir -p objia%{_prefix}/bin objia%{_prefix}/amdgcn-amdhsa/bin -IAROOT=`pwd`/objia -ln -sf %{_prefix}/bin/llvm-ar ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-ar -ln -sf %{_prefix}/bin/llvm-ar ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-ranlib -ln -sf %{_prefix}/bin/llvm-mc ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-as -ln -sf %{_prefix}/bin/llvm-nm ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-nm -ln -sf %{_prefix}/bin/lld ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-ld -ln -sf ../../bin/amdgcn-amdhsa-ar ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/ar -ln -sf ../../bin/amdgcn-amdhsa-ranlib ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/ranlib -ln -sf ../../bin/amdgcn-amdhsa-as ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/as -ln -sf ../../bin/amdgcn-amdhsa-nm ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/nm -ln -sf ../../bin/amdgcn-amdhsa-ld ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/ld - -ln -sf newlib-cygwin-%{newlib_cygwin_gitrev}/newlib newlib -rm -rf obj-offload-amdgcn-amdhsa -mkdir obj-offload-amdgcn-amdhsa - -cd obj-offload-amdgcn-amdhsa -CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ - CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \ - | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \ - XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ - ../configure --disable-bootstrap --disable-sjlj-exceptions \ - --with-build-time-tools=${IAROOT}%{_prefix}/amdgcn-amdhsa/bin \ - --target amdgcn-amdhsa --enable-as-accelerator-for=%{gcc_target_platform} \ - --enable-languages=c,c++,fortran,lto \ - --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ - --with-bugurl=%dist_bug_report_url \ - --enable-checking=release --with-system-zlib \ - --with-gcc-major-version-only --without-isl --disable-libquadmath -make %{?_smp_mflags} -cd .. -rm -f newlib -%endif - rm -rf obj-%{gcc_target_platform} mkdir obj-%{gcc_target_platform} cd obj-%{gcc_target_platform} @@ -1133,23 +984,16 @@ ISL_FLAG_PIC=-fPIC ISL_FLAG_PIC=-fpic %endif cd isl-build - -%ifarch riscv64 -# Update config.{sub,guess} scripts for riscv64 (the original ones are too old) -cp -f -v /usr/lib/rpm/%{_vendor}/config.guess ../../isl-%{isl_version}/config.guess -cp -f -v /usr/lib/rpm/%{_vendor}/config.sub ../../isl-%{isl_version}/config.sub -%endif - -sed -i 's|libisl\([^-]\)|libgcc%{gcc_major}privateisl\1|g' \ +sed -i 's|libisl\([^-]\)|libgcc13privateisl\1|g' \ ../../isl-%{isl_version}/Makefile.{am,in} ../../isl-%{isl_version}/configure \ CC=/usr/bin/gcc CXX=/usr/bin/g++ \ CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..; pwd`/isl-install -make %{?_smp_mflags} CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" +make %{?_smp_mflags} make install cd ../isl-install/lib -rm libgcc%{gcc_major}privateisl.so{,.23} -mv libgcc%{gcc_major}privateisl.so.23.1.0 libisl.so.23 +rm libgcc13privateisl.so{,.23} +mv libgcc13privateisl.so.23.1.0 libisl.so.23 ln -sf libisl.so.23 libisl.so cd ../.. %endif @@ -1158,9 +1002,6 @@ enablelgo= enablelada= enablelobjc= enableld= -enablelm2= -enablelcob= -enablela68= %if %{build_objc} enablelobjc=,objc,obj-c++ %endif @@ -1176,22 +1017,9 @@ enableld=,d %if %{build_m2} enablelm2=,m2 %endif -%if %{build_cobol} -enablelcob=,cobol -%endif -%if %{build_algol68} -enablela68=,algol68 -%endif -offloadtgts= -%if %{build_offload_nvptx} -offloadtgts=nvptx-none -%endif -%if %{build_offload_amdgcn} -offloadtgts=${offloadtgts:+${offloadtgts},}amdgcn-amdhsa -%endif CONFIGURE_OPTS="\ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ - --with-bugurl=%dist_bug_report_url \ + --with-bugurl=http://bugzilla.redhat.com/bugzilla \ --enable-shared --enable-threads=posix --enable-checking=release \ %ifarch ppc64le --enable-targets=powerpcle-linux \ @@ -1211,7 +1039,7 @@ CONFIGURE_OPTS="\ %endif --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \ --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \ - --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=%{_datadir}/zoneinfo \ + --enable-libstdcxx-backtrace \ %ifnarch %{mips} --with-linker-hash-style=gnu \ %endif @@ -1221,11 +1049,9 @@ CONFIGURE_OPTS="\ %else --without-isl \ %endif -%if %{build_offload_nvptx} || %{build_offload_amdgcn} - --enable-offload-targets=$offloadtgts --enable-offload-defaulted \ -%endif %if %{build_offload_nvptx} - --without-cuda-driver \ + --enable-offload-targets=nvptx-none \ + --without-cuda-driver --enable-offload-defaulted \ %endif %if 0%{?fedora} >= 21 || 0%{?rhel} >= 7 %if %{attr_ifunc} @@ -1262,12 +1088,8 @@ CONFIGURE_OPTS="\ %endif %endif %ifarch ppc64le -%if 0%{?rhel} >= 9 -%if 0%{?rhel} >= 10 - --with-cpu-32=power9 --with-tune-32=power10 --with-cpu-64=power9 --with-tune-64=power10 \ -%else +%if 0%{?rhel} == 9 --with-cpu-32=power9 --with-tune-32=power9 --with-cpu-64=power9 --with-tune-64=power9 \ -%endif %else --with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \ %endif @@ -1278,9 +1100,6 @@ CONFIGURE_OPTS="\ %ifarch %{ix86} x86_64 --enable-cet \ --with-tune=generic \ -%if 0%{?fedora} >= 44 || 0%{?rhel} >= 11 - --with-tls=gnu2 \ -%endif %endif %if 0%{?rhel} >= 7 %ifarch %{ix86} @@ -1288,11 +1107,7 @@ CONFIGURE_OPTS="\ %endif %ifarch x86_64 %if 0%{?rhel} > 8 -%if 0%{?rhel} > 9 - --with-arch_64=x86-64-v3 \ -%else --with-arch_64=x86-64-v2 \ -%endif %endif --with-arch_32=x86-64 \ %endif @@ -1308,7 +1123,7 @@ CONFIGURE_OPTS="\ %if 0%{?rhel} >= 7 %if 0%{?rhel} > 7 %if 0%{?rhel} > 8 -%if 0%{?rhel} >= 9 +%if 0%{?rhel} == 9 --with-arch=z14 --with-tune=z15 \ %else --with-arch=z13 --with-tune=arch13 \ @@ -1320,15 +1135,11 @@ CONFIGURE_OPTS="\ --with-arch=z196 --with-tune=zEC12 \ %endif %else -%if 0%{?fedora} >= 38 - --with-arch=z13 --with-tune=z14 \ -%else %if 0%{?fedora} >= 26 --with-arch=zEC12 --with-tune=z13 \ %else --with-arch=z9-109 --with-tune=z10 \ %endif -%endif %endif --enable-decimal-float \ %endif @@ -1352,19 +1163,6 @@ CONFIGURE_OPTS="\ %ifnarch %{arm} --with-build-config=bootstrap-lto --enable-link-serialization=1 \ %endif -%endif -%if 0%{?rhel:1} - --enable-host-pie --enable-host-bind-now \ -%endif - --disable-libssp \ -%if %{build_libquadmath} == 0 - --disable-libquadmath \ -%endif -%if %{build_libatomic} == 0 - --disable-libatomic \ -%endif -%if %{build_libitm} == 0 - --disable-libitm \ %endif " @@ -1373,7 +1171,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \ XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ ../configure --enable-bootstrap \ - --enable-languages=c,c++,fortran${enablelobjc}${enablelada}${enablelgo}${enableld}${enablelm2}${enablelcob}${enablela68},lto \ + --enable-languages=c,c++,fortran${enablelobjc}${enablelada}${enablelgo}${enableld}${enablelm2},lto \ $CONFIGURE_OPTS %ifarch sparc sparcv9 sparc64 @@ -1394,7 +1192,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \ | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \ XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ ../../configure --disable-bootstrap --enable-host-shared \ - --enable-languages=jit --enable-libgdiagnostics $CONFIGURE_OPTS + --enable-languages=jit $CONFIGURE_OPTS make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" all-gcc cp -a gcc/libgccjit.so* ../gcc/ cd ../gcc/ @@ -1429,7 +1227,7 @@ cd ../.. # Copy various doc files here and there cd .. -mkdir -p rpm.doc/{gfortran,objc,gdc,libphobos,gm2,libgm2,libgdiagnostics-devel,gcobol,libgcobol,algol68,libga68} +mkdir -p rpm.doc/{gfortran,objc,gdc,libphobos,gm2,libgm2} mkdir -p rpm.doc/go rpm.doc/libgo rpm.doc/libquadmath rpm.doc/libitm mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer} @@ -1465,28 +1263,10 @@ done) cp -p $i ../rpm.doc/libgm2/$i.libgm2 done) %endif -%if %{build_cobol} -(cd gcc/cobol; for i in ChangeLog*; do - cp -p $i ../../rpm.doc/gcobol/$i.gcobol -done) -(cd libgcobol; for i in ChangeLog*; do - cp -p $i ../rpm.doc/libgcobol/$i.libgcobol -done) -%endif -%if %{build_algol68} -(cd gcc/algol68; for i in ChangeLog*; do - cp -p $i ../../rpm.doc/algol68/$i.algol68 -done) -(cd libga68; for i in ChangeLog*; do - cp -p $i ../rpm.doc/libga68/$i.libga68 -done) -%endif %if %{build_libquadmath} (cd libquadmath; for i in ChangeLog* COPYING.LIB; do cp -p $i ../rpm.doc/libquadmath/$i.libquadmath -done; -sed -n '/==========/,/==========/{/==========/d;s/^ \* *//p}' math/cosq.c \ - > ../rpm.doc/libquadmath/LICENSE.SunPro) +done) %endif %if %{build_libitm} (cd libitm; for i in ChangeLog*; do @@ -1501,8 +1281,6 @@ done) cp -p $i ../rpm.doc/libgo/$i.libgo done) %endif -(cd gcc/doc/libgdiagnostics; make html; \ -mv _build/html ../../../rpm.doc/libgdiagnostics-devel/html ) rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9] find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9 @@ -1522,8 +1300,7 @@ CC="`$ANNOBIN_FLAGS --build-cc`" CXX="`$ANNOBIN_FLAGS --build-cxx`" \ CFLAGS="$ANNOBIN_CFLAGS1 $ANNOBIN_CFLAGS2 $ANNOBIN_LDFLAGS" \ CXXFLAGS="$ANNOBIN_CFLAGS1 `$ANNOBIN_FLAGS --build-includes` $ANNOBIN_CFLAGS2 $ANNOBIN_LDFLAGS" \ ./configure --with-gcc-plugin-dir=%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin \ - --without-annocheck --without-tests --without-docs --disable-rpath --without-debuginfod \ - --without-clang-plugin --without-llvm-plugin + --without-annocheck --without-tests --without-docs --disable-rpath --without-debuginfod make cd ../.. %endif @@ -1555,7 +1332,6 @@ cd obj-offload-nvptx-none make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \ infodir=%{buildroot}%{_infodir} install rm -rf %{buildroot}%{_prefix}/libexec/gcc/nvptx-none/%{gcc_major}/install-tools -rm -rf %{buildroot}%{_prefix}/libexec/gcc/nvptx-none/%{gcc_major}/g++-mapper-server rm -rf %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/{install-tools,plugin,cc1,cc1plus,f951} rm -rf %{buildroot}%{_infodir} %{buildroot}%{_mandir}/man7 %{buildroot}%{_prefix}/share/locale rm -rf %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/{install-tools,plugin} @@ -1571,44 +1347,6 @@ cd .. rm -f newlib %endif -%if %{build_offload_amdgcn} -mkdir -p %{buildroot}%{_prefix}/bin %{buildroot}%{_prefix}/amdgcn-amdhsa/bin -ln -sf llvm-ar %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-ar -ln -sf llvm-ar %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-ranlib -ln -sf llvm-mc %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-as -ln -sf llvm-nm %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-nm -ln -sf lld %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-ld -ln -sf ../../bin/amdgcn-amdhsa-ar %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/ar -ln -sf ../../bin/amdgcn-amdhsa-ranlib %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/ranlib -ln -sf ../../bin/amdgcn-amdhsa-as %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/as -ln -sf ../../bin/amdgcn-amdhsa-nm %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/nm -ln -sf ../../bin/amdgcn-amdhsa-ld %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/ld - -ln -sf newlib-cygwin-%{newlib_cygwin_gitrev}/newlib newlib -cd obj-offload-amdgcn-amdhsa -make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \ - infodir=%{buildroot}%{_infodir} install -rm -rf %{buildroot}%{_prefix}/libexec/gcc/amdgcn-amdhsa/%{gcc_major}/install-tools -rm -rf %{buildroot}%{_prefix}/libexec/gcc/amdgcn-amdhsa/%{gcc_major}/g++-mapper-server -rm -rf %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/{install-tools,plugin,cc1,cc1plus,f951} -rm -rf %{buildroot}%{_infodir} %{buildroot}%{_mandir}/man7 %{buildroot}%{_prefix}/share/locale -rm -rf %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/{install-tools,plugin} -rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/{install-tools,plugin,include-fixed} -rm -rf %{buildroot}%{_prefix}/%{_lib}/libc[cp]1* -mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/ -mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/ -pushd %{buildroot}%{_prefix}/amdgcn-amdhsa/lib -for i in gfx*; do -mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/$i/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/$i/ -mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/$i/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/$i/ -done -popd -find %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa \ - %{buildroot}%{_prefix}/amdgcn-amdhsa/lib -name \*.la | xargs rm -cd .. -rm -f newlib -%endif - cd obj-%{gcc_target_platform} TARGET_PLATFORM=%{gcc_target_platform} @@ -1636,9 +1374,7 @@ ln -sf ../bin/cpp %{buildroot}/%{_prefix}/lib/cpp ln -sf gfortran %{buildroot}%{_prefix}/bin/f95 rm -f %{buildroot}%{_infodir}/dir gzip -9 %{buildroot}%{_infodir}/*.info* -%if %{build_ada} ln -sf gcc %{buildroot}%{_prefix}/bin/gnatgcc -%endif mkdir -p %{buildroot}%{_fmoddir} %if %{build_go} @@ -1683,10 +1419,12 @@ for f in `find %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_plat done # Nuke bits/*.h.gch dirs -# 1) sometimes it is hard to match the exact options used for building +# 1) there is no bits/*.h header installed, so when gch file can't be +# used, compilation fails +# 2) sometimes it is hard to match the exact options used for building # libstdc++-v3 or they aren't desirable -# 2) there are multilib issues, conflicts etc. with this -# 3) it is huge +# 3) there are multilib issues, conflicts etc. with this +# 4) it is huge # People can always precompile on their own whatever they want, but # shipping this for everybody is unnecessary. rm -rf %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/bits/*.h.gch @@ -1698,7 +1436,7 @@ cp -r -p ../libstdc++-v3/doc/html ../rpm.doc/libstdc++-v3/html cp -r -p $libstdcxx_doc_builddir/html ../rpm.doc/libstdc++-v3/html/api mkdir -p %{buildroot}%{_mandir}/man3 cp -r -p $libstdcxx_doc_builddir/man/man3/* %{buildroot}%{_mandir}/man3/ -find ../rpm.doc/libstdc++-v3 -name \*~ -o -name \*.orig | xargs rm -f +find ../rpm.doc/libstdc++-v3 -name \*~ | xargs rm %endif %ifarch sparcv9 sparc64 @@ -1736,12 +1474,6 @@ mv %{buildroot}%{_prefix}/%{_lib}/libitm.spec $FULLPATH/ %if %{build_libasan} mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/ %endif -%if %{build_cobol} -mv %{buildroot}%{_prefix}/%{_lib}/libgcobol.spec $FULLPATH/ -%endif -%if %{build_algol68} -mv %{buildroot}%{_prefix}/%{_lib}/libga68.spec $FULLPATH/ -%endif mkdir -p %{buildroot}/%{_lib} mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_major}-%{DATE}.so.1 @@ -1757,11 +1489,6 @@ GROUP ( /%{_lib}/libgcc_s.so.1 libgcc.a )' > $FULLPATH/libgcc_s.so %else ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so %endif -rm -f $FULLPATH/libgcc_s_asneeded.so -echo '/* GNU ld script - Add DT_NEEDED entry for libgcc_s.so only if needed. */ -OUTPUT_FORMAT('`gcc -Wl,--print-output-format -nostdlib -r -o /dev/null`') -INPUT ( AS_NEEDED ( -lgcc_s ) )' > $FULLPATH/libgcc_s_asneeded.so %ifarch sparcv9 ppc %ifarch ppc rm -f $FULLPATH/64/libgcc_s.so @@ -1773,11 +1500,6 @@ GROUP ( /lib64/libgcc_s.so.1 libgcc.a )' > $FULLPATH/64/libgcc_s.so %else ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so %endif -rm -f $FULLPATH/64/libgcc_s_asneeded.so -echo '/* GNU ld script - Add DT_NEEDED entry for libgcc_s.so only if needed. */ -OUTPUT_FORMAT('`gcc -m64 -Wl,--print-output-format -nostdlib -r -o /dev/null`') -INPUT ( AS_NEEDED ( -lgcc_s ) )' > $FULLPATH/64/libgcc_s_asneeded.so %endif %ifarch %{multilib_64_archs} %ifarch x86_64 ppc64 ppc64p7 @@ -1790,11 +1512,6 @@ GROUP ( /lib/libgcc_s.so.1 libgcc.a )' > $FULLPATH/32/libgcc_s.so %else ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so %endif -rm -f $FULLPATH/32/libgcc_s_asneeded.so -echo '/* GNU ld script - Add DT_NEEDED entry for libgcc_s.so only if needed. */ -OUTPUT_FORMAT('`gcc -m32 -Wl,--print-output-format -nostdlib -r -o /dev/null`') -INPUT ( AS_NEEDED ( -lgcc_s ) )' > $FULLPATH/32/libgcc_s_asneeded.so %endif mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/ @@ -1815,8 +1532,18 @@ fi mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib} mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++*gdb.py* \ %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/ -%py_byte_compile %{python3} %{buildroot}%{_prefix}/share/gcc-%{gcc_major}/python/ -%py_byte_compile %{python3} %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/ +pushd ../libstdc++-v3/python +for i in `find . -name \*.py`; do + touch -r $i %{buildroot}%{_prefix}/share/gcc-%{gcc_major}/python/$i +done +touch -r hook.in %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/libstdc++*gdb.py +popd +for f in `find %{buildroot}%{_prefix}/share/gcc-%{gcc_major}/python/ \ + %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/ -name \*.py`; do + r=${f/$RPM_BUILD_ROOT/} + %{__python3} -c 'import py_compile; py_compile.compile("'$f'", dfile="'$r'")' + %{__python3} -O -c 'import py_compile; py_compile.compile("'$f'", dfile="'$r'")' +done rm -f $FULLEPATH/libgccjit.so cp -a objlibgccjit/gcc/libgccjit.so* %{buildroot}%{_prefix}/%{_lib}/ @@ -1824,15 +1551,6 @@ cp -a ../gcc/jit/libgccjit*.h %{buildroot}%{_prefix}/include/ /usr/bin/install -c -m 644 objlibgccjit/gcc/doc/libgccjit.info %{buildroot}/%{_infodir}/ gzip -9 %{buildroot}/%{_infodir}/libgccjit.info -rm -f $FULLEPATH/libgdiagnostics.so -cp -a objlibgccjit/gcc/libgdiagnostics.so* %{buildroot}%{_prefix}/%{_lib}/ -cp -a ../gcc/libgdiagnostics*.h %{buildroot}%{_prefix}/include/ -cp -a objlibgccjit/gcc/sarif-replay %{buildroot}%{_prefix}/bin/ - -sed -e 's,\.\./include/,../../../../include/,' \ - %{buildroot}%{_prefix}/%{_lib}/libstdc++.modules.json \ - > $FULLPATH/libstdc++.modules.json - pushd $FULLPATH if [ "%{_lib}" = "lib" ]; then %if %{build_objc} @@ -1842,37 +1560,25 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.25.* libgo.so +ln -sf ../../../libgo.so.22.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../libgdruntime.so.6.* libgdruntime.so -ln -sf ../../../libgphobos.so.6.* libgphobos.so +ln -sf ../../../libgdruntime.so.4.* libgdruntime.so +ln -sf ../../../libgphobos.so.4.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do - ln -sf ../../../libm2$i.so.21.* libm2$i.so + ln -sf ../../../libm2$i.so.18.* libm2$i.so done %endif -%if %{build_cobol} -ln -sf ../../../libgcobol.so.2.* libgcobol.so -%endif -%if %{build_algol68} -ln -sf ../../../libga68.so.2.* libga68.so -%endif %if %{build_libitm} ln -sf ../../../libitm.so.1.* libitm.so %endif %if %{build_libatomic} ln -sf ../../../libatomic.so.1.* libatomic.so -rm -f libatomic_asneeded.so libatomic_asneeded.a -echo '/* GNU ld script - Add DT_NEEDED entry for -latomic only if needed. */ -OUTPUT_FORMAT('`gcc -Wl,--print-output-format -nostdlib -r -o /dev/null`') -INPUT ( AS_NEEDED ( -latomic ) )' > libatomic_asneeded.so -ln -sf libatomic.a libatomic_asneeded.a %endif %if %{build_libasan} ln -sf ../../../libasan.so.8.* libasan.so @@ -1889,37 +1595,25 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.25.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.22.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so %endif %if %{build_d} -ln -sf ../../../../%{_lib}/libgdruntime.so.6.* libgdruntime.so -ln -sf ../../../../%{_lib}/libgphobos.so.6.* libgphobos.so +ln -sf ../../../../%{_lib}/libgdruntime.so.4.* libgdruntime.so +ln -sf ../../../../%{_lib}/libgphobos.so.4.* libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do - ln -sf ../../../../%{_lib}/libm2$i.so.21.* libm2$i.so + ln -sf ../../../../%{_lib}/libm2$i.so.18.* libm2$i.so done %endif -%if %{build_cobol} -ln -sf ../../../../%{_lib}/libgcobol.so.2.* libgcobol.so -%endif -%if %{build_algol68} -ln -sf ../../../../%{_lib}/libga68.so.2.* libga68.so -%endif %if %{build_libitm} ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so %endif %if %{build_libatomic} ln -sf ../../../../%{_lib}/libatomic.so.1.* libatomic.so -rm -f libatomic_asneeded.so libatomic_asneeded.a -echo '/* GNU ld script - Add DT_NEEDED entry for -latomic only if needed. */ -OUTPUT_FORMAT('`gcc -Wl,--print-output-format -nostdlib -r -o /dev/null`') -INPUT ( AS_NEEDED ( -latomic ) )' > libatomic_asneeded.so -ln -sf libatomic.a libatomic_asneeded.a %endif %if %{build_libasan} ln -sf ../../../../%{_lib}/libasan.so.8.* libasan.so @@ -1947,6 +1641,7 @@ fi mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++fs.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++exp.*a $FULLLPATH/ +mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++_libbacktrace.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libsupc++.*a $FULLLPATH/ mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.*a $FULLLPATH/ %if %{build_objc} @@ -1968,17 +1663,11 @@ for i in cor iso log min pim; do ln -sf ../../libm2$i.a m2/m2$i/ done %endif -%if %{build_cobol} -mv -f %{buildroot}%{_prefix}/%{_lib}/libgcobol.*a $FULLLPATH/ -%endif -%if %{build_algol68} -mv -f %{buildroot}%{_prefix}/%{_lib}/libga68.*a $FULLLPATH/ -%endif %if %{build_libitm} mv -f %{buildroot}%{_prefix}/%{_lib}/libitm.*a $FULLLPATH/ %endif %if %{build_libatomic} -mv -f %{buildroot}%{_prefix}/%{_lib}/libatomic.*a $FULLPATH/ +mv -f %{buildroot}%{_prefix}/%{_lib}/libatomic.*a $FULLLPATH/ %endif %if %{build_libasan} mv -f %{buildroot}%{_prefix}/%{_lib}/libasan.*a $FULLLPATH/ @@ -2013,28 +1702,28 @@ mv -f $FULLPATH/ada{include,lib} $FULLLPATH/ pushd $FULLLPATH/adalib if [ "%{_lib}" = "lib" ]; then ln -sf ../../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../../libgnarl-*.so libgnarl-%{gcc_major}.so +ln -sf ../../../../../libgnarl-*.so libgnarl-12.so ln -sf ../../../../../libgnat-*.so libgnat.so -ln -sf ../../../../../libgnat-*.so libgnat-%{gcc_major}.so +ln -sf ../../../../../libgnat-*.so libgnat-12.so else ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-%{gcc_major}.so +ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-12.so ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-%{gcc_major}.so +ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-12.so fi popd else pushd $FULLPATH/adalib if [ "%{_lib}" = "lib" ]; then ln -sf ../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../libgnarl-*.so libgnarl-%{gcc_major}.so +ln -sf ../../../../libgnarl-*.so libgnarl-12.so ln -sf ../../../../libgnat-*.so libgnat.so -ln -sf ../../../../libgnat-*.so libgnat-%{gcc_major}.so +ln -sf ../../../../libgnat-*.so libgnat-12.so else ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-%{gcc_major}.so +ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-12.so ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-%{gcc_major}.so +ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-12.so fi popd fi @@ -2049,8 +1738,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.25.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.25.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -2059,31 +1748,21 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.6.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.6.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.6.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.6.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do rm -f libm2$i.so - echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libm2$i.so.21.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so - echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libm2$i.so.21.* | sed 's,^.*libm,libm,'`' )' > 64/libm2$i.so + echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so + echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > 64/libm2$i.so rm -f 64/m2/m2$i/*.{a,la} ln -sf ../../libm2$i.so 64/m2/m2$i/ ln -sf ../../libm2$i.a 64/m2/m2$i/ done %endif -%if %{build_cobol} -rm -f libgcobol.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgcobol.so.2.* | sed 's,^.*libg,libg,'`' )' > libgcobol.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgcobol.so.2.* | sed 's,^.*libg,libg,'`' )' > 64/libgcobol.so -%endif -%if %{build_algol68} -rm -f libga68.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libga68.so.2.* | sed 's,^.*libg,libg,'`' )' > libga68.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libga68.so.2.* | sed 's,^.*libg,libg,'`' )' > 64/libga68.so -%endif %if %{build_libitm} rm -f libitm.so echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libitm.so.1.* | sed 's,^.*libi,libi,'`' )' > libitm.so @@ -2093,18 +1772,6 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libitm.so.1.* | sed 's,^.* rm -f libatomic.so echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > libatomic.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > 64/libatomic.so -mv -f %{buildroot}%{_prefix}/lib64/libatomic.*a 64/ -rm -f libatomic_asneeded.so libatomic_asneeded.a 64/libatomic_asneeded.so 64/libatomic_asneeded.a -echo '/* GNU ld script - Add DT_NEEDED entry for -latomic only if needed. */ -OUTPUT_FORMAT('`gcc -Wl,--print-output-format -nostdlib -r -o /dev/null`') -INPUT ( AS_NEEDED ( -latomic ) )' > libatomic_asneeded.so -ln -sf libatomic.a libatomic_asneeded.a -echo '/* GNU ld script - Add DT_NEEDED entry for -latomic only if needed. */ -OUTPUT_FORMAT('`gcc -m64 -Wl,--print-output-format -nostdlib -r -o /dev/null`') -INPUT ( AS_NEEDED ( -latomic ) )' > 64/libatomic_asneeded.so -ln -sf libatomic.a 64/libatomic_asneeded.a %endif %if %{build_libasan} rm -f libasan.so @@ -2129,6 +1796,8 @@ ln -sf lib32/libstdc++fs.a libstdc++fs.a ln -sf ../lib64/libstdc++fs.a 64/libstdc++fs.a ln -sf lib32/libstdc++exp.a libstdc++exp.a ln -sf ../lib64/libstdc++exp.a 64/libstdc++exp.a +ln -sf lib32/libstdc++_libbacktrace.a libstdc++_libbacktrace.a +ln -sf ../lib64/libstdc++_libbacktrace.a 64/libstdc++_libbacktrace.a ln -sf lib32/libsupc++.a libsupc++.a ln -sf ../lib64/libsupc++.a 64/libsupc++.a %if %{build_libquadmath} @@ -2147,18 +1816,14 @@ for i in cor iso log min pim; do ln -sf ../lib64/libm2$i.a 64/libm2$i.a done %endif -%if %{build_cobol} -ln -sf lib32/libgcobol.a libgcobol.a -ln -sf ../lib64/libgcobol.a 64/libgcobol.a -%endif -%if %{build_algol68} -ln -sf lib32/libga68.a libga68.a -ln -sf ../lib64/libga68.a 64/libga68.a -%endif %if %{build_libitm} ln -sf lib32/libitm.a libitm.a ln -sf ../lib64/libitm.a 64/libitm.a %endif +%if %{build_libatomic} +ln -sf lib32/libatomic.a libatomic.a +ln -sf ../lib64/libatomic.a 64/libatomic.a +%endif %if %{build_libasan} ln -sf lib32/libasan.a libasan.a ln -sf ../lib64/libasan.a 64/libasan.a @@ -2192,8 +1857,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.25.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.25.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.22.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -2202,31 +1867,21 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libquadmath.so.0.* | sed ' %endif %if %{build_d} rm -f libgdruntime.so libgphobos.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.6.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.6.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.6.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.6.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.4.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.4.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so %endif %if %{build_m2} for i in cor iso log min pim; do rm -f libm2$i.so - echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libm2$i.so.21.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so - echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libm2$i.so.21.* | sed 's,^.*libm,libm,'`' )' > 32/libm2$i.so + echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > libm2$i.so + echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libm2$i.so.18.* | sed 's,^.*libm,libm,'`' )' > 32/libm2$i.so rm -f 32/m2/m2$i/*.{a,la} ln -sf ../../libm2$i.so 32/m2/m2$i/ ln -sf ../../libm2$i.a 32/m2/m2$i/ done %endif -%if %{build_cobol} -rm -f libgcobol.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgcobol.so.2.* | sed 's,^.*libg,libg,'`' )' > libgcobol.so -#echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgcobol.so.2.* | sed 's,^.*libg,libg,'`' )' > 32/libgcobol.so -%endif -%if %{build_algol68} -rm -f libga68.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libga68.so.2.* | sed 's,^.*libg,libg,'`' )' > libga68.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libga68.so.2.* | sed 's,^.*libg,libg,'`' )' > 32/libga68.so -%endif %if %{build_libitm} rm -f libitm.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libitm.so.1.* | sed 's,^.*libi,libi,'`' )' > libitm.so @@ -2236,18 +1891,6 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libitm.so.1.* | sed 's,^.* rm -f libatomic.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > libatomic.so echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > 32/libatomic.so -mv -f %{buildroot}%{_prefix}/lib/libatomic.*a 32/ -rm -f libatomic_asneeded.so libatomic_asneeded.a 32/libatomic_asneeded.so 32/libatomic_asneeded.a -echo '/* GNU ld script - Add DT_NEEDED entry for -latomic only if needed. */ -OUTPUT_FORMAT('`gcc -Wl,--print-output-format -nostdlib -r -o /dev/null`') -INPUT ( AS_NEEDED ( -latomic ) )' > libatomic_asneeded.so -ln -sf libatomic.a libatomic_asneeded.a -echo '/* GNU ld script - Add DT_NEEDED entry for -latomic only if needed. */ -OUTPUT_FORMAT('`gcc -m32 -Wl,--print-output-format -nostdlib -r -o /dev/null`') -INPUT ( AS_NEEDED ( -latomic ) )' > 32/libatomic_asneeded.so -ln -sf libatomic.a 32/libatomic_asneeded.a %endif %if %{build_libasan} rm -f libasan.so @@ -2274,6 +1917,8 @@ ln -sf ../lib32/libstdc++fs.a 32/libstdc++fs.a ln -sf lib64/libstdc++fs.a libstdc++fs.a ln -sf ../lib32/libstdc++exp.a 32/libstdc++exp.a ln -sf lib64/libstdc++exp.a libstdc++exp.a +ln -sf ../lib32/libstdc++_libbacktrace.a 32/libstdc++_libbacktrace.a +ln -sf lib64/libstdc++_libbacktrace.a libstdc++_libbacktrace.a ln -sf ../lib32/libsupc++.a 32/libsupc++.a ln -sf lib64/libsupc++.a libsupc++.a %if %{build_libquadmath} @@ -2292,18 +1937,14 @@ for i in cor iso log min pim; do ln -sf lib64/libm2$i.a libm2$i.a done %endif -%if %{build_cobol} -ln -sf ../lib32/libgcobol.a 32/libgcobol.a -ln -sf lib64/libgcobol.a libgcobol.a -%endif -%if %{build_algol68} -ln -sf ../lib32/libga68.a 32/libga68.a -ln -sf lib64/libga68.a libga68.a -%endif %if %{build_libitm} ln -sf ../lib32/libitm.a 32/libitm.a ln -sf lib64/libitm.a libitm.a %endif +%if %{build_libatomic} +ln -sf ../lib32/libatomic.a 32/libatomic.a +ln -sf lib64/libatomic.a libatomic.a +%endif %if %{build_libasan} ln -sf ../lib32/libasan.a 32/libasan.a ln -sf lib64/libasan.a libasan.a @@ -2332,6 +1973,7 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgfo ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++.a 32/libstdc++.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++fs.a 32/libstdc++fs.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++exp.a 32/libstdc++exp.a +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libstdc++_libbacktrace.a 32/libstdc++_libbacktrace.a ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libsupc++.a 32/libsupc++.a %if %{build_libquadmath} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libquadmath.a 32/libquadmath.a @@ -2345,15 +1987,12 @@ for i in cor iso log min pim; do ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libm2$i.a 32/libm2$i.a done %endif -%if %{build_cobol} -#ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgcobol.a 32/libgcobol.a -%endif -%if %{build_algol68} -ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libga68.a 32/libga68.a -%endif %if %{build_libitm} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libitm.a 32/libitm.a %endif +%if %{build_libatomic} +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libatomic.a 32/libatomic.a +%endif %if %{build_libasan} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libasan.a 32/libasan.a %endif @@ -2374,8 +2013,7 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/adalib # If we are building a debug package then copy all of the static archives # into the debug directory to keep them as unstripped copies. -# if 0%{?_enable_debug_packages} -%if 0 +%if 0%{?_enable_debug_packages} for d in . $FULLLSUBDIR; do mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/$d for f in `find $d -maxdepth 1 -a \ @@ -2389,7 +2027,7 @@ for d in . $FULLLSUBDIR; do -o -name libobjc.a -o -name libgdruntime.a -o -name libgphobos.a \ -o -name libm2\*.a -o -name libquadmath.a -o -name libstdc++.a \ -o -name libstdc++fs.a -o -name libstdc++exp.a \ - -o -name libsupc++.a -o -name libgcobol.a \ + -o -name libstdc++_libbacktrace.a -o -name libsupc++.a \ -o -name libtsan.a -o -name libubsan.a \) -a -type f`; do cp -a $f $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/$d/ done @@ -2402,8 +2040,7 @@ strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \ -o -name libgdruntime.a -o -name libgphobos.a -o -name libm2\*.a \ -o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \ -o -name libatomic.a -o -name libasan.a -o -name libtsan.a \ - -o -name libubsan.a -o -name liblsan.a -o -name libcc1.a \ - -o -name libgcobol.a \) \ + -o -name libubsan.a -o -name liblsan.a -o -name libcc1.a \) \ -a -type f` popd chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgfortran.so.5.* @@ -2413,20 +2050,14 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.* chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.* %endif %if %{build_d} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.6.* -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.6.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.4.* +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.4.* %endif %if %{build_m2} for i in cor iso log min pim; do - chmod 755 %{buildroot}%{_prefix}/%{_lib}/libm2$i.so.21.* + chmod 755 %{buildroot}%{_prefix}/%{_lib}/libm2$i.so.18.* done %endif -%if %{build_cobol} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgcobol.so.2.* -%endif -%if %{build_algol68} -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libga68.so.2.* -%endif %if %{build_libitm} chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.* %endif @@ -2450,7 +2081,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.25.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.22.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -2510,6 +2141,7 @@ cd .. rm -f %{buildroot}%{_prefix}/%{_lib}/{libffi*,libiberty.a} || : rm -f $FULLEPATH/install-tools/{mkheaders,fixincl} rm -f %{buildroot}%{_prefix}/lib/{32,64}/libiberty.a +rm -f %{buildroot}%{_prefix}/%{_lib}/libssp* rm -f %{buildroot}%{_prefix}/%{_lib}/libvtv* || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gfortran || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gccgo || : @@ -2519,9 +2151,6 @@ rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-nm || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-ranlib || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gdc || : rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gm2 || : -rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcobc || : -rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcobol || : -rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-ga68 || : %ifarch %{multilib_64_archs} # Remove libraries for the other arch on multilib arches @@ -2545,31 +2174,7 @@ rm -rf %{buildroot}%{_prefix}/lib64/go/%{gcc_major}/%{gcc_target_platform} %endif %endif -rm -f %{buildroot}%{_prefix}/lib*/lib*.spec || : -rm -f %{buildroot}%{_prefix}/lib*/libstdc++.modules.json || : -rm -f %{buildroot}%{_prefix}/%{_lib}/lib{asan,atomic,gcc_s,gcobol,ga68,gdruntime,gfortran,go,gomp-plugin-*,gomp,gphobos,hwasan}.so || : -rm -f %{buildroot}%{_prefix}/%{_lib}/lib{itm,lsan,m2{cor,iso,log,min,pim},objc,quadmath,stdc++,tsan,ubsan,gcc_s_asneeded,atomic_asneeded}.so || : -rm -f %{buildroot}%{_prefix}/%{_lib}/libatomic_asneeded.a || : -rm -f %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/install-tools/{fixinc.sh,mkinstalldirs} || : -rm -f %{buildroot}%{_prefix}/share/locale/*/LC_MESSAGES/libstdc++.mo || : -rm -f %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include-fixed/README || : -rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ssp || : -rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/install-tools || : -%ifarch ppc ppc64 ppc64le ppc64p7 -rm -f %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/{e,n}crt{i,n}.o || : -%endif - -%if %{build_offload_nvptx} -rm -f %{buildroot}%{_mandir}/man1/*-accel-*nvptx* -find %{buildroot}%{_prefix}/nvptx-none/lib -name libstdc++.a-gdb.py | xargs rm -f || : -find %{buildroot}%{_prefix}/nvptx-none/lib -name libstdc++.modules.json | xargs rm -f || : -%endif -%if %{build_offload_amdgcn} -rm -f %{buildroot}%{_mandir}/man1/*-accel-*amdgcn* -find %{buildroot}%{_prefix}/amdgcn-amdhsa/lib -name libstdc++.a-gdb.py | xargs rm -f || : -find %{buildroot}%{_prefix}/amdgcn-amdhsa/lib -name libstdc++.modules.json | xargs rm -f || : -%endif -rm -f %{buildroot}%{_mandir}/man7/{gpl,gfdl,fsf-funding}.7* +rm -f %{buildroot}%{mandir}/man3/ffi* # Help plugins find out nvra. echo gcc-%{version}-%{release}.%{_arch} > $FULLPATH/rpmver @@ -2594,9 +2199,9 @@ cd obj-%{gcc_target_platform} # run the tests. LC_ALL=C make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ \ %if 0%{?fedora} >= 20 || 0%{?rhel} > 7 - RUNTESTFLAGS="--target_board=unix/'{-foffload=disable,-fstack-protector-strong/-foffload=disable}'" || : + RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector-strong}'" || : %else - RUNTESTFLAGS="--target_board=unix/'{-foffload=disable,-fstack-protector/-foffload=disable}'" || : + RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}'" || : %endif %if !%{build_annobin_plugin} if [ -f %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/annobin.so ]; then @@ -2654,20 +2259,28 @@ if [ $1 = 0 ]; then %{_sbindir}/update-alternatives --remove go %{_prefix}/bin/go.gcc fi -%{?ldconfig: # Because glibc Prereq's libgcc and /sbin/ldconfig # comes from glibc, it might not exist yet when # libgcc is installed %post -n libgcc -p -if posix.access ("%ldconfig", "x") then - rpm.execute ("%ldconfig") +if posix.access ("/sbin/ldconfig", "x") then + local pid = posix.fork () + if pid == 0 then + posix.exec ("/sbin/ldconfig") + elseif pid ~= -1 then + posix.wait (pid) + end end %postun -n libgcc -p -if posix.access ("%ldconfig", "x") then - rpm.execute ("%ldconfig") +if posix.access ("/sbin/ldconfig", "x") then + local pid = posix.fork () + if pid == 0 then + posix.exec ("/sbin/ldconfig") + elseif pid ~= -1 then + posix.wait (pid) + end end -} %ldconfig_scriptlets -n libstdc++ @@ -2687,8 +2300,6 @@ end %ldconfig_scriptlets -n libgccjit -%ldconfig_scriptlets -n libgdiagnostics - %ldconfig_scriptlets -n libquadmath %ldconfig_scriptlets -n libitm @@ -2703,8 +2314,6 @@ end %ldconfig_scriptlets -n liblsan -%ldconfig_scriptlets -n libhwasan - %ldconfig_scriptlets -n libgo %files -f %{name}.lang @@ -2767,8 +2376,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdnoreturn.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdatomic.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/gcov.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdckdint.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdcountof.h %ifarch %{ix86} x86_64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xmmintrin.h @@ -2804,7 +2411,9 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsaveintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsaveoptintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512cdintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512erintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512pfintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/shaintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm_malloc.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm3dnow.h @@ -2826,6 +2435,8 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsavesintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clzerointrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pkuintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx5124fmapsintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx5124vnniwintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vpopcntdqintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sgxintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/gfniintrin.h @@ -2869,26 +2480,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxfp16intrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/prfchiintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/raointintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxcomplexintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bitalgvlintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxvnniint16intrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sha512intrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sm3intrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sm4intrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/usermsrintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxavx512intrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxfp8intrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxmovrsintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxtf32intrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2bf16intrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2convertintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2copyintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2mediaintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2minmaxintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx10_2satcvtintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/movrsintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bmmintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bmmvlintrin.h %endif %ifarch ia64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h @@ -2933,10 +2524,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_fp16.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_bf16.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_sve.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_sme.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_neon_sve_bridge.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_private_fp8.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_private_neon_types.h %endif %ifarch sparc sparcv9 sparc64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/visintrin.h @@ -2947,14 +2534,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vecintrin.h %endif -%ifarch riscv64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_vector.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_crypto.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_bitmanip.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_th_vector.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sifive_vector.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/andes_vector.h -%endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer %endif @@ -2964,7 +2543,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcov.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_eh.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_s.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_s_asneeded.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.spec %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.so @@ -2984,7 +2562,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcov.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_eh.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_s.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_s_asneeded.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgomp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgomp.so %if %{build_libquadmath} @@ -2998,8 +2575,6 @@ end %if %{build_libatomic} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic_asneeded.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic_asneeded.so %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan.a @@ -3018,7 +2593,6 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcov.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_eh.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_s.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_s_asneeded.so %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.so %if %{build_libquadmath} @@ -3032,8 +2606,6 @@ end %if %{build_libatomic} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic_asneeded.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic_asneeded.so %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.a @@ -3057,8 +2629,6 @@ end %if %{build_libatomic} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic_asneeded.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic_asneeded.so %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.a @@ -3071,10 +2641,7 @@ end %endif %else %if %{build_libatomic} -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic_asneeded.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic_asneeded.so %endif %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.so @@ -3097,7 +2664,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan_preinit.o %endif %{_prefix}/libexec/getconf/default -%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* +%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* %{!?_licensedir:%global license %%doc} %license gcc/COPYING* COPYING.RUNTIME @@ -3136,6 +2703,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++exp.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libsupc++.a %endif %ifarch %{multilib_64_archs} @@ -3144,6 +2712,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++exp.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libsupc++.a %endif %ifarch sparcv9 ppc %{multilib_64_archs} @@ -3153,6 +2722,7 @@ end %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++exp.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_libbacktrace.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsupc++.a %endif %doc rpm.doc/changelogs/gcc/cp/ChangeLog* @@ -3182,20 +2752,22 @@ end %ifnarch sparcv9 ppc %{multilib_64_archs} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.so %endif -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.modules.json %ifarch sparcv9 ppc %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++exp.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++_libbacktrace.a %endif %ifarch sparc64 ppc64 ppc64p7 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++exp.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++_libbacktrace.a %endif %ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++exp.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_libbacktrace.a %endif %doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* @@ -3366,8 +2938,8 @@ end %doc rpm.doc/gdc/* %files -n libgphobos -%{_prefix}/%{_lib}/libgdruntime.so.6* -%{_prefix}/%{_lib}/libgphobos.so.6* +%{_prefix}/%{_lib}/libgdruntime.so.4* +%{_prefix}/%{_lib}/libgphobos.so.4* %doc rpm.doc/libphobos/* %files -n libgphobos-static @@ -3394,7 +2966,6 @@ end %files gm2 %{_prefix}/bin/gm2 %{_mandir}/man1/gm2.1* -%{_infodir}/m2* %dir %{_prefix}/lib/gcc %dir %{_prefix}/lib/gcc/%{gcc_target_platform} %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} @@ -3424,7 +2995,7 @@ end %doc rpm.doc/gm2/* %files -n libgm2 -%{_prefix}/%{_lib}/libm2*.so.21* +%{_prefix}/%{_lib}/libm2*.so.18* %doc rpm.doc/libgm2/* %files -n libgm2-static @@ -3444,79 +3015,6 @@ end %endif %endif -%if %{build_cobol} -%files gcobol -%{_prefix}/bin/gcobol -%{_prefix}/bin/gcobc -%{_mandir}/man1/gcobol.1* -%{_mandir}/man3/gcobol-io.3* -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cobol1 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcobol.spec -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcobol.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/cobol -%doc rpm.doc/gcobol/* - -%files -n libgcobol -%{_prefix}/%{_lib}/libgcobol.so.2* -%doc rpm.doc/libgcobol/* - -%files -n libgcobol-static -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcobol.a -%endif - -%if %{build_algol68} -%files algol68 -%{_prefix}/bin/ga68 -%{_mandir}/man1/ga68.1* -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/a681 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libga68.spec -%ifarch sparcv9 sparc64 ppc ppc64 ppc64p7 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libga68.a -%endif -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libga68.so -%ifarch sparcv9 ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libga68.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libga68.so -%endif -%ifarch %{multilib_64_archs} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libga68.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libga68.so -%endif -%{_infodir}/ga68* -%doc rpm.doc/algol68/* - -%files -n libga68 -%{_prefix}/%{_lib}/libga68.so.2* -%doc rpm.doc/libga68/* - -%files -n libga68-static -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} -%ifarch sparcv9 ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libga68.a -%endif -%ifarch sparc64 ppc64 ppc64p7 -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libga68.a -%endif -%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libga68.a -%endif -%endif - %if %{build_ada} %files gnat %{_prefix}/bin/gnat @@ -3678,6 +3176,22 @@ end %if %{build_libatomic} %files -n libatomic %{_prefix}/%{_lib}/libatomic.so.1* + +%files -n libatomic-static +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} +%ifarch sparcv9 ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libatomic.a +%endif +%ifarch sparc64 ppc64 ppc64p7 +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libatomic.a +%endif +%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a +%endif %doc rpm.doc/changelogs/libatomic/ChangeLog* %endif @@ -3817,8 +3331,7 @@ end %doc rpm.doc/go/* %files -n libgo -%{_prefix}/%{_lib}/libgo.so.25 -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.25.* +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.22* %doc rpm.doc/libgo/* %files -n libgo-devel @@ -3879,15 +3392,6 @@ end %doc rpm.doc/libgccjit-devel/* %doc gcc/jit/docs/examples -%files -n libgdiagnostics -%{_prefix}/bin/sarif-replay -%{_prefix}/%{_lib}/libgdiagnostics.so.* - -%files -n libgdiagnostics-devel -%{_prefix}/%{_lib}/libgdiagnostics.so -%{_prefix}/include/libgdiagnostics*.h -%doc rpm.doc/libgdiagnostics-devel/* - %files plugin-devel %dir %{_prefix}/lib/gcc %dir %{_prefix}/lib/gcc/%{gcc_target_platform} @@ -3934,30 +3438,6 @@ end %{_prefix}/%{_lib}/libgomp-plugin-nvptx.so.* %endif -%if %{build_offload_amdgcn} -%files offload-amdgcn -%{_prefix}/bin/amdgcn-amdhsa-* -%{_prefix}/bin/%{gcc_target_platform}-accel-amdgcn-amdhsa-gcc -%{_prefix}/bin/%{gcc_target_platform}-accel-amdgcn-amdhsa-lto-dump -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel -%{_prefix}/lib/gcc/amdgcn-amdhsa -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa -%dir %{_prefix}/amdgcn-amdhsa -%{_prefix}/amdgcn-amdhsa/bin -%{_prefix}/amdgcn-amdhsa/include - -%files -n libgomp-offload-amdgcn -%{_prefix}/%{_lib}/libgomp-plugin-gcn.so.* -%endif - %if %{build_annobin_plugin} %files plugin-annobin %dir %{_prefix}/lib/gcc @@ -3970,94 +3450,5 @@ end %endif %changelog -* Thu Jan 15 2026 Jakub Jelinek 16.0.1-0.3 -- update from trunk - - PRs c/123309, c++/120775, c++/122634, c++/123081, c++/123551, - debug/121045, driver/108865, driver/123504, ipa/122852, ipa/123542, - middle-end/123115, middle-end/123392, middle-end/123573, - rtl-optimization/123312, rtl-optimization/123544, target/38118, - target/114528, target/120250, target/121240, target/123092, - testsuite/122522, tree-optimization/119402, tree-optimization/120322, - tree-optimization/123109, tree-optimization/123190, - tree-optimization/123530 - -* Tue Jan 13 2026 Jakub Jelinek 16.0.1-0.2 -- update from trunk - - PRs fortran/91960, fortran/112460, libstdc++/123396, - rtl-optimization/123444, rtl-optimization/123501, target/117581, - target/123484, testsuite/123098, tree-optimization/122843, - tree-optimization/122845, tree-optimization/123301, - tree-optimization/123525, tree-optimization/123539 - -* Mon Jan 12 2026 Jakub Jelinek 16.0.1-0.1 -- update from trunk - - PRs c++/81337, c++/115163, c++/123526, fortran/77415, ipa/122458, - ipa/123543, libfortran/123012, middle-end/123175, - rtl-optimization/123523, target/123415, testsuite/121752, - testsuite/123129, tree-optimization/122824, tree-optimization/122830, - tree-optimization/123417, tree-optimization/123528 - -* Sat Jan 10 2026 Jakub Jelinek 16.0.0-0.5 -- update from trunk - - PRs ada/123003, ada/123371, ada/123490, c/117687, c/121081, c/121507, - c/123212, c/123435, c/123463, c/123475, c++/123331, c++/123347, - c++/123393, debug/123259, fortran/90218, fortran/123012, - fortran/123029, fortran/123071, fortran/123321, fortran/123352, - fortran/123483, gcov-profile/123019, ipa/123383, libstdc++/122878, - libstdc++/123100, libstdc++/123183, libstdc++/123326, - libstdc++/123378, libstdc++/123406, middle-end/111817, - middle-end/123107, rtl-optimization/119291, rtl-optimization/121675, - rtl-optimization/121773, rtl-optimization/123121, - rtl-optimization/123491, target/119430, target/121192, target/121290, - target/121535, target/121778, target/122846, target/123010, - target/123017, target/123268, target/123269, target/123317, - target/123320, target/123390, target/123403, target/123457, - target/123489, target/123492, testsuite/123353, testsuite/123377, - tree-optimization/42196, tree-optimization/102486, - tree-optimization/102954, tree-optimization/122103, - tree-optimization/122608, tree-optimization/122793, - tree-optimization/123197, tree-optimization/123200, - tree-optimization/123221, tree-optimization/123298, - tree-optimization/123300, tree-optimization/123310, - tree-optimization/123315, tree-optimization/123316, - tree-optimization/123319, tree-optimization/123351, - tree-optimization/123372, tree-optimization/123374, - tree-optimization/123382, tree-optimization/123414, - tree-optimization/123431 -- fix ICE on friend with noexcept (PR c++/123189) -- fix -E -fdirectives-only comment handling (PR preprocessor/123273) -- provide libatomic-static from gcc subpackage - -* Sat Jan 3 2026 Jakub Jelinek 16.0.0-0.4 -- update from trunk - - PRs ada/123060, ada/123088, ada/123185, ada/123289, ada/123302, - ada/123306, ada/15605, c++/117518, c++/119097, c++/120005, c++/121864, - c++/122550, c++/122690, c++/122712, c++/122819, c++/122958, - c++/122994, c++/123080, c++/123261, c++/123277, fortran/101399, - fortran/121472, fortran/121475, fortran/122957, fortran/123201, - fortran/123253, libfortran/119136, middle-end/123067, - middle-end/123222, other/122243, rtl-optimization/123114, - rtl-optimization/123267, rtl-optimization/123276, - rtl-optimization/123295, rtl-optimization/123308, target/121485, - target/122769, target/123216, target/123217, target/123274, - target/123278, target/123283, target/123318, testsuite/123299, - testsuite/123334, tree-optimization/123089 -- require libatomic package from gcc package as -latomic is now linked - as-needed by default -- remove libatomic-static package, move libatomic.a into gcc package - -* Sat Dec 20 2025 Jakub Jelinek 16.0.0-0.3 -- update from trunk - - PRs bootstrap/12407, c/123156, c++/91388, c++/117034, c++/122070, - c++/122509, c++/122690, c++/122712, c++/122772, c++/122834, - c++/122922, c++/122995, c++/123030, c++/123044, c++/123186, - debug/122968, fortran/71565, fortran/92613, libstdc++/112591, - libstdc++/123147, libstdc++/123180, rtl-optimization/123223, - target/55212, target/122970, target/123171, target/123216, - target/123217, tree-optimization/122734, tree-optimization/123097, - tree-optimization/123117, tree-optimization/123118, - tree-optimization/123152, tree-optimization/123153, - tree-optimization/123192, tree-optimization/123205 - -* Thu Dec 18 2025 Jakub Jelinek 16.0.0-0.2 +* Thu Jan 12 2023 Jakub Jelinek 13.0.0-0.8 - new package diff --git a/gcc16-Wno-format-security.patch b/gcc13-Wno-format-security.patch similarity index 62% rename from gcc16-Wno-format-security.patch rename to gcc13-Wno-format-security.patch index 2a4f0f3..4c71dac 100644 --- a/gcc16-Wno-format-security.patch +++ b/gcc13-Wno-format-security.patch @@ -9,15 +9,15 @@ * configure: Regenerated. --- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100 -+++ gcc/configure.ac 2024-11-30 13:34:11.100296256 +0100 -@@ -592,7 +592,7 @@ AC_ARG_ENABLE(build-format-warnings, ++++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100 +@@ -570,7 +570,7 @@ AC_ARG_ENABLE(build-format-warnings, AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]), [],[enable_build_format_warnings=yes]) AS_IF([test $enable_build_format_warnings = no], - [wf_opt=-Wno-format],[wf_opt=]) + [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=]) ACX_PROG_CXX_WARNING_OPTS( - m4_quote(m4_do([-W -Wall -Wno-error=narrowing -Wwrite-strings ], + m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ], [-Wcast-qual $wf_opt])), --- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100 +++ gcc/configure 2017-02-25 12:42:50.041946391 +0100 @@ -30,37 +30,33 @@ else wf_opt= fi ---- Makefile.tpl.jj 2023-11-29 13:21:41.680292662 +0100 -+++ Makefile.tpl 2024-11-30 13:35:29.303196246 +0100 -@@ -450,10 +450,10 @@ LDFLAGS = @LDFLAGS@ +--- Makefile.tpl.jj 2021-12-30 15:12:42.188164847 +0100 ++++ Makefile.tpl 2022-01-07 12:06:12.115550714 +0100 +@@ -446,9 +446,9 @@ LDFLAGS = @LDFLAGS@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -GOCFLAGS = $(CFLAGS) --A68FLAGS = @A68FLAGS@ --GDCFLAGS = @GDCFLAGS@ +-GDCFLAGS = $(CFLAGS) -GM2FLAGS = $(CFLAGS) +GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) -+A68FLAGS = $(filter-out -Wformat-security,@A68FLAGS@) -+GDCFLAGS = $(filter-out -Wformat-security,@GDCFLAGS@) ++GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) +GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) - CRAB1_LIBS = @CRAB1_LIBS@ - ---- Makefile.in.jj 2023-11-29 13:21:41.691292507 +0100 -+++ Makefile.in 2024-11-30 13:36:12.113594079 +0100 -@@ -447,10 +447,10 @@ LDFLAGS = @LDFLAGS@ + # Pass additional PGO and LTO compiler options to the PGO build. + BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS) +--- Makefile.in.jj 2021-12-30 15:12:42.188164847 +0100 ++++ Makefile.in 2022-01-07 12:06:27.335334561 +0100 +@@ -443,9 +443,9 @@ LDFLAGS = @LDFLAGS@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -GOCFLAGS = $(CFLAGS) --A68FLAGS = @A68FLAGS@ --GDCFLAGS = @GDCFLAGS@ +-GDCFLAGS = $(CFLAGS) -GM2FLAGS = $(CFLAGS) +GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) -+A68FLAGS = $(filter-out -Wformat-security,@A68FLAGS@) -+GDCFLAGS = $(filter-out -Wformat-security,@GDCFLAGS@) ++GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS)) +GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS)) - CRAB1_LIBS = @CRAB1_LIBS@ - + # Pass additional PGO and LTO compiler options to the PGO build. + BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS) diff --git a/gcc16-d-shared-libphobos.patch b/gcc13-d-shared-libphobos.patch similarity index 100% rename from gcc16-d-shared-libphobos.patch rename to gcc13-d-shared-libphobos.patch diff --git a/gcc16-fortran-fdec-duplicates.patch b/gcc13-fortran-fdec-duplicates.patch similarity index 100% rename from gcc16-fortran-fdec-duplicates.patch rename to gcc13-fortran-fdec-duplicates.patch diff --git a/gcc13-fortran-fdec-non-logical-if.patch b/gcc13-fortran-fdec-non-logical-if.patch new file mode 100644 index 0000000..a3a830c --- /dev/null +++ b/gcc13-fortran-fdec-non-logical-if.patch @@ -0,0 +1,378 @@ +From cc87ddb841017bb0976b05091733609ee17d7f05 Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 13:15:17 +0000 +Subject: [PATCH 07/10] Allow non-logical expressions in IF statements + +Use -fdec-non-logical-if to enable feature. Also enabled using -fdec. +--- + gcc/fortran/lang.opt | 4 ++ + gcc/fortran/options.cc | 1 + + gcc/fortran/resolve.cc | 60 ++++++++++++++++--- + ...gical_expressions_if_statements_blocks_1.f | 25 ++++++++ + ...gical_expressions_if_statements_blocks_2.f | 25 ++++++++ + ...gical_expressions_if_statements_blocks_3.f | 25 ++++++++ + ...gical_expressions_if_statements_blocks_4.f | 45 ++++++++++++++ + ...gical_expressions_if_statements_blocks_5.f | 45 ++++++++++++++ + ...gical_expressions_if_statements_blocks_6.f | 45 ++++++++++++++ + 9 files changed, 266 insertions(+), 9 deletions(-) + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f + +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index 4a269ebb22d..d886c2f33ed 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -506,6 +506,10 @@ fdec-override-kind + Fortran Var(flag_dec_override_kind) + Enable support for per variable kind specification. + ++fdec-non-logical-if ++Fortran Var(flag_dec_non_logical_if) ++Enable support for non-logical expressions in if statements. ++ + fdec-structure + Fortran Var(flag_dec_structure) + Enable support for DEC STRUCTURE/RECORD. +diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc +index edbab483b36..a946c86790a 100644 +--- a/gcc/fortran/options.cc ++++ b/gcc/fortran/options.cc +@@ -79,6 +79,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_char_conversions, value, value); + SET_BITFLAG (flag_dec_duplicates, value, value); + SET_BITFLAG (flag_dec_override_kind, value, value); ++ SET_BITFLAG (flag_dec_non_logical_if, value, value); + } + + /* Finalize DEC flags. */ +diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc +index bc0df0fdb99..07dd039f3bf 100644 +--- a/gcc/fortran/resolve.cc ++++ b/gcc/fortran/resolve.cc +@@ -10789,10 +10789,31 @@ gfc_resolve_blocks (gfc_code *b, gfc_namespace *ns) + switch (b->op) + { + case EXEC_IF: +- if (t && b->expr1 != NULL +- && (b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0)) +- gfc_error ("IF clause at %L requires a scalar LOGICAL expression", +- &b->expr1->where); ++ if (t && b->expr1 != NULL) ++ { ++ if (flag_dec_non_logical_if && b->expr1->ts.type != BT_LOGICAL) ++ { ++ gfc_expr* cast; ++ cast = gfc_ne (b->expr1, ++ gfc_get_int_expr (1, &gfc_current_locus, 0), ++ INTRINSIC_NE); ++ if (cast == NULL) ++ gfc_internal_error ("gfc_resolve_blocks(): Failed to cast " ++ "to LOGICAL in IF"); ++ b->expr1 = cast; ++ if (warn_conversion_extra) ++ { ++ gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in" ++ " IF statement condition %L will be true if" ++ " it evaluates to nonzero", ++ &b->expr1->where); ++ } ++ } ++ ++ if ((b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0)) ++ gfc_error ("IF clause at %L requires a scalar LOGICAL " ++ "expression", &b->expr1->where); ++ } + break; + + case EXEC_WHERE: +@@ -12093,11 +12114,32 @@ start: + break; + + case EXEC_IF: +- if (t && code->expr1 != NULL +- && (code->expr1->ts.type != BT_LOGICAL +- || code->expr1->rank != 0)) +- gfc_error ("IF clause at %L requires a scalar LOGICAL expression", +- &code->expr1->where); ++ if (t && code->expr1 != NULL) ++ { ++ if (flag_dec_non_logical_if ++ && code->expr1->ts.type != BT_LOGICAL) ++ { ++ gfc_expr* cast; ++ cast = gfc_ne (code->expr1, ++ gfc_get_int_expr (1, &gfc_current_locus, 0), ++ INTRINSIC_NE); ++ if (cast == NULL) ++ gfc_internal_error ("gfc_resolve_code(): Failed to cast " ++ "to LOGICAL in IF"); ++ code->expr1 = cast; ++ if (warn_conversion_extra) ++ { ++ gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in" ++ " IF statement condition %L will be true if" ++ " it evaluates to nonzero", ++ &code->expr1->where); ++ } ++ } ++ ++ if (code->expr1->ts.type != BT_LOGICAL || code->expr1->rank != 0) ++ gfc_error ("IF clause at %L requires a scalar LOGICAL " ++ "expression", &code->expr1->where); ++ } + break; + + case EXEC_CALL: +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f +new file mode 100644 +index 00000000000..0101db893ca +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f +@@ -0,0 +1,25 @@ ++! { dg-do run } ++! { dg-options "-fdec -Wconversion-extra" } ++! ++! Allow logical expressions in if statements and blocks ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM logical_exp_if_st_bl ++ INTEGER ipos/1/ ++ INTEGER ineg/0/ ++ ++ ! Test non logical variables ++ if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" } ++ if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" } ++ ++ ! Test non logical expressions in if statements ++ if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" } ++ ++ ! Test non logical expressions in if blocks ++ if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" } ++ STOP 4 ++ endif ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f +new file mode 100644 +index 00000000000..876f4e09508 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f +@@ -0,0 +1,25 @@ ++! { dg-do run } ++! { dg-options "-fdec-non-logical-if -Wconversion-extra" } ++! ++! Allow logical expressions in if statements and blocks ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM logical_exp_if_st_bl ++ INTEGER ipos/1/ ++ INTEGER ineg/0/ ++ ++ ! Test non logical variables ++ if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" } ++ if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" } ++ ++ ! Test non logical expressions in if statements ++ if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" } ++ ++ ! Test non logical expressions in if blocks ++ if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" } ++ STOP 4 ++ endif ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f +new file mode 100644 +index 00000000000..35cb4c51b8d +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f +@@ -0,0 +1,25 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-non-logical-if" } ++! ++! Allow logical expressions in if statements and blocks ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ PROGRAM logical_exp_if_st_bl ++ INTEGER ipos/1/ ++ INTEGER ineg/0/ ++ ++ ! Test non logical variables ++ if (ineg) STOP 1 ! { dg-error "IF clause at" } ++ if (0) STOP 2 ! { dg-error "IF clause at" } ++ ++ ! Test non logical expressions in if statements ++ if (MOD(ipos, 1)) STOP 3 ! { dg-error "IF clause at" } ++ ++ ! Test non logical expressions in if blocks ++ if (MOD(2 * ipos, 2)) then ! { dg-error "IF clause at" } ++ STOP 4 ++ endif ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f +new file mode 100644 +index 00000000000..7b60b60827f +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f +@@ -0,0 +1,45 @@ ++! { dg-do run } ++! { dg-options "-fdec -Wconversion-extra" } ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ function othersub1() ++ integer*4 othersub1 ++ othersub1 = 9 ++ end ++ ++ function othersub2() ++ integer*4 othersub2 ++ othersub2 = 0 ++ end ++ ++ program MAIN ++ integer*4 othersub1 ++ integer*4 othersub2 ++ integer a /1/ ++ integer b /2/ ++ ++ if (othersub1()) then ! { dg-warning "if it evaluates to nonzero" } ++ write(*,*) "OK" ++ else ++ stop 1 ++ end if ++ if (othersub2()) then ! { dg-warning "if it evaluates to nonzero" } ++ stop 2 ++ else ++ write(*,*) "OK" ++ end if ++ if (a-b) then ! { dg-warning "if it evaluates to nonzero" } ++ write(*,*) "OK" ++ else ++ stop 3 ++ end if ++ if (b-(a+1)) then ! { dg-warning "if it evaluates to nonzero" } ++ stop 3 ++ else ++ write(*,*) "OK" ++ end if ++ end ++ +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f +new file mode 100644 +index 00000000000..80336f48ca1 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f +@@ -0,0 +1,45 @@ ++! { dg-do run } ++! { dg-options "-fdec-non-logical-if -Wconversion-extra" } ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ function othersub1() ++ integer*4 othersub1 ++ othersub1 = 9 ++ end ++ ++ function othersub2() ++ integer*4 othersub2 ++ othersub2 = 0 ++ end ++ ++ program MAIN ++ integer*4 othersub1 ++ integer*4 othersub2 ++ integer a /1/ ++ integer b /2/ ++ ++ if (othersub1()) then ! { dg-warning "Non-LOGICAL type in IF statement" } ++ write(*,*) "OK" ++ else ++ stop 1 ++ end if ++ if (othersub2()) then ! { dg-warning "Non-LOGICAL type in IF statement" } ++ stop 2 ++ else ++ write(*,*) "OK" ++ end if ++ if (a-b) then ! { dg-warning "Non-LOGICAL type in IF statement" } ++ write(*,*) "OK" ++ else ++ stop 3 ++ end if ++ if (b-(a+1)) then ! { dg-warning "Non-LOGICAL type in IF statement" } ++ stop 3 ++ else ++ write(*,*) "OK" ++ end if ++ end ++ +diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f +new file mode 100644 +index 00000000000..e1125ca717a +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f +@@ -0,0 +1,45 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-non-logical-if" } ++! ++! Contributed by Francisco Redondo Marchena ++! and Jeff Law ++! Modified by Mark Eggleston ++! ++ function othersub1() ++ integer*4 othersub1 ++ othersub1 = 9 ++ end ++ ++ function othersub2() ++ integer*4 othersub2 ++ othersub2 = 0 ++ end ++ ++ program MAIN ++ integer*4 othersub1 ++ integer*4 othersub2 ++ integer a /1/ ++ integer b /2/ ++ ++ if (othersub1()) then ! { dg-error "IF clause at" } ++ write(*,*) "OK" ++ else ++ stop 1 ++ end if ++ if (othersub2()) then ! { dg-error "IF clause at" } ++ stop 2 ++ else ++ write(*,*) "OK" ++ end if ++ if (a-b) then ! { dg-error "IF clause at" } ++ write(*,*) "OK" ++ else ++ stop 3 ++ end if ++ if (b-(a+1)) then ! { dg-error "IF clause at" } ++ stop 3 ++ else ++ write(*,*) "OK" ++ end if ++ end ++ +-- +2.27.0 + diff --git a/gcc13-fortran-fdec-override-kind.patch b/gcc13-fortran-fdec-override-kind.patch new file mode 100644 index 0000000..370fa56 --- /dev/null +++ b/gcc13-fortran-fdec-override-kind.patch @@ -0,0 +1,588 @@ +From 786869fd62813e80da9b6545a295d53c36275c19 Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 13:12:14 +0000 +Subject: [PATCH 06/10] Allow string length and kind to be specified on a per + variable basis. + +This allows kind/length to be mixed with array specification in +declarations. + +e.g. + + INTEGER*4 x*2, y*8 + CHARACTER names*20(10) + REAL v(100)*8, vv*4(50) + +The per-variable size overrides the kind or length specified for the type. + +Use -fdec-override-kind to enable. Also enabled by -fdec. + +Note: this feature is a merger of two previously separate features. + +Now accepts named constants as kind parameters: + + INTEGER A + PARAMETER (A=2) + INTEGER B*(A) + +Contributed by Mark Eggleston + +Now rejects invalid kind parameters and prints error messages: + + INTEGER X*3 + +caused an internal compiler error. + +Contributed by Mark Eggleston +--- + gcc/fortran/decl.cc | 156 ++++++++++++++---- + gcc/fortran/lang.opt | 4 + + gcc/fortran/options.cc | 1 + + .../dec_mixed_char_array_declaration_1.f | 13 ++ + .../dec_mixed_char_array_declaration_2.f | 13 ++ + .../dec_mixed_char_array_declaration_3.f | 13 ++ + .../gfortran.dg/dec_spec_in_variable_1.f | 31 ++++ + .../gfortran.dg/dec_spec_in_variable_2.f | 31 ++++ + .../gfortran.dg/dec_spec_in_variable_3.f | 31 ++++ + .../gfortran.dg/dec_spec_in_variable_4.f | 14 ++ + .../gfortran.dg/dec_spec_in_variable_5.f | 19 +++ + .../gfortran.dg/dec_spec_in_variable_6.f | 19 +++ + .../gfortran.dg/dec_spec_in_variable_7.f | 15 ++ + .../gfortran.dg/dec_spec_in_variable_8.f | 14 ++ + 14 files changed, 340 insertions(+), 34 deletions(-) + create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f + create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f + +diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc +index 5c8c1b7981b..f7dc9d8263d 100644 +--- a/gcc/fortran/decl.cc ++++ b/gcc/fortran/decl.cc +@@ -1213,6 +1213,54 @@ syntax: + return MATCH_ERROR; + } + ++/* This matches the nonstandard kind given after a variable name, like: ++ INTEGER x*2, y*4 ++ The per-variable kind will override any kind given in the type ++ declaration. ++*/ ++ ++static match ++match_per_symbol_kind (int *length) ++{ ++ match m; ++ gfc_expr *expr = NULL; ++ ++ m = gfc_match_char ('*'); ++ if (m != MATCH_YES) ++ return m; ++ ++ m = gfc_match_small_literal_int (length, NULL); ++ if (m == MATCH_YES || m == MATCH_ERROR) ++ return m; ++ ++ if (gfc_match_char ('(') == MATCH_NO) ++ return MATCH_ERROR; ++ ++ m = gfc_match_expr (&expr); ++ if (m == MATCH_YES) ++ { ++ m = MATCH_ERROR; // Assume error ++ if (gfc_expr_check_typed (expr, gfc_current_ns, false)) ++ { ++ if ((expr->expr_type == EXPR_CONSTANT) ++ && (expr->ts.type == BT_INTEGER)) ++ { ++ *length = mpz_get_si(expr->value.integer); ++ m = MATCH_YES; ++ } ++ } ++ ++ if (m == MATCH_YES) ++ { ++ if (gfc_match_char (')') == MATCH_NO) ++ m = MATCH_ERROR; ++ } ++ } ++ ++ if (expr != NULL) ++ gfc_free_expr (expr); ++ return m; ++} + + /* Special subroutine for finding a symbol. Check if the name is found + in the current name space. If not, and we're compiling a function or +@@ -2443,6 +2491,35 @@ check_function_name (char *name) + } + + ++static match ++match_character_length_clause (gfc_charlen **cl, bool *cl_deferred, int elem) ++{ ++ gfc_expr* char_len; ++ char_len = NULL; ++ ++ match m = match_char_length (&char_len, cl_deferred, false); ++ if (m == MATCH_YES) ++ { ++ *cl = gfc_new_charlen (gfc_current_ns, NULL); ++ (*cl)->length = char_len; ++ } ++ else if (m == MATCH_NO) ++ { ++ if (elem > 1 ++ && (current_ts.u.cl->length == NULL ++ || current_ts.u.cl->length->expr_type != EXPR_CONSTANT)) ++ { ++ *cl = gfc_new_charlen (gfc_current_ns, NULL); ++ (*cl)->length = gfc_copy_expr (current_ts.u.cl->length); ++ } ++ else ++ *cl = current_ts.u.cl; ++ ++ *cl_deferred = current_ts.deferred; ++ } ++ return m; ++} ++ + /* Match a variable name with an optional initializer. When this + subroutine is called, a variable is expected to be parsed next. + Depending on what is happening at the moment, updates either the +@@ -2453,7 +2530,7 @@ variable_decl (int elem) + { + char name[GFC_MAX_SYMBOL_LEN + 1]; + static unsigned int fill_id = 0; +- gfc_expr *initializer, *char_len; ++ gfc_expr *initializer; + gfc_array_spec *as; + gfc_array_spec *cp_as; /* Extra copy for Cray Pointees. */ + gfc_charlen *cl; +@@ -2462,11 +2539,15 @@ variable_decl (int elem) + match m; + bool t; + gfc_symbol *sym; ++ match cl_match; ++ match kind_match; ++ int overridden_kind; + char c; + + initializer = NULL; + as = NULL; + cp_as = NULL; ++ kind_match = MATCH_NO; + + /* When we get here, we've just matched a list of attributes and + maybe a type and a double colon. The next thing we expect to see +@@ -2519,6 +2600,28 @@ variable_decl (int elem) + + var_locus = gfc_current_locus; + ++ ++ cl = NULL; ++ cl_deferred = false; ++ cl_match = MATCH_NO; ++ ++ /* Check for a character length clause before an array clause */ ++ if (flag_dec_override_kind) ++ { ++ if (current_ts.type == BT_CHARACTER) ++ { ++ cl_match = match_character_length_clause (&cl, &cl_deferred, elem); ++ if (cl_match == MATCH_ERROR) ++ goto cleanup; ++ } ++ else ++ { ++ kind_match = match_per_symbol_kind (&overridden_kind); ++ if (kind_match == MATCH_ERROR) ++ goto cleanup; ++ } ++ } ++ + /* Now we could see the optional array spec. or character length. */ + m = gfc_match_array_spec (&as, true, true); + if (m == MATCH_ERROR) +@@ -2667,40 +2770,12 @@ variable_decl (int elem) + } + } + +- char_len = NULL; +- cl = NULL; +- cl_deferred = false; +- +- if (current_ts.type == BT_CHARACTER) ++ /* Second chance for a character length clause */ ++ if (cl_match == MATCH_NO && current_ts.type == BT_CHARACTER) + { +- switch (match_char_length (&char_len, &cl_deferred, false)) +- { +- case MATCH_YES: +- cl = gfc_new_charlen (gfc_current_ns, NULL); +- +- cl->length = char_len; +- break; +- +- /* Non-constant lengths need to be copied after the first +- element. Also copy assumed lengths. */ +- case MATCH_NO: +- if (elem > 1 +- && (current_ts.u.cl->length == NULL +- || current_ts.u.cl->length->expr_type != EXPR_CONSTANT)) +- { +- cl = gfc_new_charlen (gfc_current_ns, NULL); +- cl->length = gfc_copy_expr (current_ts.u.cl->length); +- } +- else +- cl = current_ts.u.cl; +- +- cl_deferred = current_ts.deferred; +- +- break; +- +- case MATCH_ERROR: +- goto cleanup; +- } ++ m = match_character_length_clause (&cl, &cl_deferred, elem); ++ if (m == MATCH_ERROR) ++ goto cleanup; + } + + /* The dummy arguments and result of the abreviated form of MODULE +@@ -2802,6 +2877,19 @@ variable_decl (int elem) + goto cleanup; + } + ++ if (kind_match == MATCH_YES) ++ { ++ gfc_find_symbol (name, gfc_current_ns, 1, &sym); ++ /* sym *must* be found at this point */ ++ sym->ts.kind = overridden_kind; ++ if (gfc_validate_kind (sym->ts.type, sym->ts.kind, true) < 0) ++ { ++ gfc_error ("Kind %d not supported for type %s at %C", ++ sym->ts.kind, gfc_basic_typename (sym->ts.type)); ++ return MATCH_ERROR; ++ } ++ } ++ + if (!check_function_name (name)) + { + m = MATCH_ERROR; +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index 25cc948699b..4a269ebb22d 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -502,6 +502,10 @@ fdec-math + Fortran Var(flag_dec_math) + Enable legacy math intrinsics for compatibility. + ++fdec-override-kind ++Fortran Var(flag_dec_override_kind) ++Enable support for per variable kind specification. ++ + fdec-structure + Fortran Var(flag_dec_structure) + Enable support for DEC STRUCTURE/RECORD. +diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc +index d6bd36c3a8a..edbab483b36 100644 +--- a/gcc/fortran/options.cc ++++ b/gcc/fortran/options.cc +@@ -78,6 +78,7 @@ set_dec_flags (int value) + SET_BITFLAG (flag_dec_blank_format_item, value, value); + SET_BITFLAG (flag_dec_char_conversions, value, value); + SET_BITFLAG (flag_dec_duplicates, value, value); ++ SET_BITFLAG (flag_dec_override_kind, value, value); + } + + /* Finalize DEC flags. */ +diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f +new file mode 100644 +index 00000000000..706ea4112a4 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f +@@ -0,0 +1,13 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test character declaration with mixed string length and array specification ++! ++! Contributed by Jim MacArthur ++! Modified by Mark Eggleston ++! ++ PROGRAM character_declaration ++ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ ++ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/ ++ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f +new file mode 100644 +index 00000000000..26d2acf01de +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f +@@ -0,0 +1,13 @@ ++! { dg-do run } ++! { dg-options "-fdec-override-kind" } ++! ++! Test character declaration with mixed string length and array specification ++! ++! Contributed by Jim MacArthur ++! Modified by Mark Eggleston ++! ++ PROGRAM character_declaration ++ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ ++ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/ ++ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f +new file mode 100644 +index 00000000000..76e4f0bdb93 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f +@@ -0,0 +1,13 @@ ++! { dg-do compile } ++! { dg-options "-fdec-override-kind -fno-dec-override-kind" } ++! ++! Test character declaration with mixed string length and array specification ++! ++! Contributed by Jim MacArthur ++! Modified by Mark Eggleston ++! ++ PROGRAM character_declaration ++ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ ! { dg-error "Syntax error" } ++ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/ ++ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 ! { dg-error " Operands of comparison operator" } ++ END +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f +new file mode 100644 +index 00000000000..edd0f5874b7 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f +@@ -0,0 +1,31 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test kind specification in variable not in type ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer*8 ai*1, bi*4, ci ++ real*4 ar*4, br*8, cr ++ ++ ai = 1 ++ ar = 1.0 ++ bi = 2 ++ br = 2.0 ++ ci = 3 ++ cr = 3.0 ++ ++ if (ai .ne. 1) stop 1 ++ if (abs(ar - 1.0) > 1.0D-6) stop 2 ++ if (bi .ne. 2) stop 3 ++ if (abs(br - 2.0) > 1.0D-6) stop 4 ++ if (ci .ne. 3) stop 5 ++ if (abs(cr - 3.0) > 1.0D-6) stop 6 ++ if (kind(ai) .ne. 1) stop 7 ++ if (kind(ar) .ne. 4) stop 8 ++ if (kind(bi) .ne. 4) stop 9 ++ if (kind(br) .ne. 8) stop 10 ++ if (kind(ci) .ne. 8) stop 11 ++ if (kind(cr) .ne. 4) stop 12 ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f +new file mode 100644 +index 00000000000..bfaba584dbb +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f +@@ -0,0 +1,31 @@ ++! { dg-do run } ++! { dg-options "-fdec-override-kind" } ++! ++! Test kind specification in variable not in type ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer*8 ai*1, bi*4, ci ++ real*4 ar*4, br*8, cr ++ ++ ai = 1 ++ ar = 1.0 ++ bi = 2 ++ br = 2.0 ++ ci = 3 ++ cr = 3.0 ++ ++ if (ai .ne. 1) stop 1 ++ if (abs(ar - 1.0) > 1.0D-6) stop 2 ++ if (bi .ne. 2) stop 3 ++ if (abs(br - 2.0) > 1.0D-6) stop 4 ++ if (ci .ne. 3) stop 5 ++ if (abs(cr - 3.0) > 1.0D-6) stop 6 ++ if (kind(ai) .ne. 1) stop 7 ++ if (kind(ar) .ne. 4) stop 8 ++ if (kind(bi) .ne. 4) stop 9 ++ if (kind(br) .ne. 8) stop 10 ++ if (kind(ci) .ne. 8) stop 11 ++ if (kind(cr) .ne. 4) stop 12 ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f +new file mode 100644 +index 00000000000..5ff434e7466 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f +@@ -0,0 +1,31 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-override-kind" } ++! ++! Test kind specification in variable not in type ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer*8 ai*1, bi*4, ci ! { dg-error "Syntax error" } ++ real*4 ar*4, br*8, cr ! { dg-error "Syntax error" } ++ ++ ai = 1 ++ ar = 1.0 ++ bi = 2 ++ br = 2.0 ++ ci = 3 ++ cr = 3.0 ++ ++ if (ai .ne. 1) stop 1 ++ if (abs(ar - 1.0) > 1.0D-6) stop 2 ++ if (bi .ne. 2) stop 3 ++ if (abs(br - 2.0) > 1.0D-6) stop 4 ++ if (ci .ne. 3) stop 5 ++ if (abs(cr - 3.0) > 1.0D-6) stop 6 ++ if (kind(ai) .ne. 1) stop 7 ++ if (kind(ar) .ne. 4) stop 8 ++ if (kind(bi) .ne. 4) stop 9 ++ if (kind(br) .ne. 8) stop 10 ++ if (kind(ci) .ne. 8) stop 11 ++ if (kind(cr) .ne. 4) stop 12 ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f +new file mode 100644 +index 00000000000..c01980e8b9d +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! ++! Test kind specification in variable not in type. The per variable ++! kind specification is not enabled so these should fail ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer a ++ parameter(a=2) ++ integer b*(a) ! { dg-error "Syntax error" } ++ real c*(8) ! { dg-error "Syntax error" } ++ logical d*1_1 ! { dg-error "Syntax error" } ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f +new file mode 100644 +index 00000000000..e2f39da3f4f +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f +@@ -0,0 +1,19 @@ ++! { dg-do run } ++! { dg-options "-fdec-override-kind" } ++! ++! Test kind specification in variable not in type ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer a ++ parameter(a=2) ++ integer b*(a) ++ real c*(8) ++ logical d*(1_1) ++ character e*(a) ++ if (kind(b).ne.2) stop 1 ++ if (kind(c).ne.8) stop 2 ++ if (kind(d).ne.1) stop 3 ++ if (len(e).ne.2) stop 4 ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f +new file mode 100644 +index 00000000000..569747874e3 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f +@@ -0,0 +1,19 @@ ++! { dg-do run } ++! { dg-options "-fdec" } ++! ++! Test kind specification in variable not in type ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer a ++ parameter(a=2) ++ integer b*(a) ++ real c*(8) ++ logical d*(1_1) ++ character e*(a) ++ if (kind(b).ne.2) stop 1 ++ if (kind(c).ne.8) stop 2 ++ if (kind(d).ne.1) stop 3 ++ if (len(e).ne.2) stop 4 ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f +new file mode 100644 +index 00000000000..b975bfd15c5 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f +@@ -0,0 +1,15 @@ ++! { dg-do compile } ++! { dg-options "-fdec -fno-dec-override-kind" } ++! ++! Test kind specification in variable not in type as the per variable ++! kind specification is not enables these should fail ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer a ++ parameter(a=2) ++ integer b*(a) ! { dg-error "Syntax error" } ++ real c*(8) ! { dg-error "Syntax error" } ++ logical d*1_1 ! { dg-error "Syntax error" } ++ end +diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f +new file mode 100644 +index 00000000000..85732e0bd85 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! { dg-options "-fdec" } ++! ++! Check that invalid kind values are rejected. ++! ++! Contributed by Mark Eggleston ++! ++ program spec_in_var ++ integer a ++ parameter(a=3) ++ integer b*(a) ! { dg-error "Kind 3 not supported" } ++ real c*(78) ! { dg-error "Kind 78 not supported" } ++ logical d*(*) ! { dg-error "Invalid character" } ++ end +-- +2.27.0 + diff --git a/gcc13-fortran-flogical-as-integer.patch b/gcc13-fortran-flogical-as-integer.patch new file mode 100644 index 0000000..28df5e1 --- /dev/null +++ b/gcc13-fortran-flogical-as-integer.patch @@ -0,0 +1,305 @@ +From 9b45f3063dfd2b893e7963a4828c1b0afecdc68a Mon Sep 17 00:00:00 2001 +From: Mark Eggleston +Date: Fri, 22 Jan 2021 12:41:46 +0000 +Subject: [PATCH 02/10] Convert LOGICAL to INTEGER for arithmetic ops, and vice + versa + +We allow converting LOGICAL types to INTEGER when doing arithmetic +operations, and converting INTEGER types to LOGICAL for use in +boolean operations. + +This feature is enabled with the -flogical-as-integer flag. + +Note: using this feature will disable bitwise logical operations enabled by +-fdec. +--- + gcc/fortran/lang.opt | 4 ++ + gcc/fortran/resolve.cc | 55 ++++++++++++++++++- + .../logical_to_integer_and_vice_versa_1.f | 31 +++++++++++ + .../logical_to_integer_and_vice_versa_2.f | 31 +++++++++++ + .../logical_to_integer_and_vice_versa_3.f | 33 +++++++++++ + .../logical_to_integer_and_vice_versa_4.f | 33 +++++++++++ + 6 files changed, 186 insertions(+), 1 deletion(-) + create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f + create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f + create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f + create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f + +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index 52bd522051e..c4da248f07c 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -497,6 +497,10 @@ fdec-static + Fortran Var(flag_dec_static) + Enable DEC-style STATIC and AUTOMATIC attributes. + ++flogical-as-integer ++Fortran Var(flag_logical_as_integer) ++Convert from integer to logical or logical to integer for arithmetic operations. ++ + fdefault-double-8 + Fortran Var(flag_default_double) + Set the default double precision kind to an 8 byte wide type. +diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc +index c075d0fa0c4..4b90cb59902 100644 +--- a/gcc/fortran/resolve.cc ++++ b/gcc/fortran/resolve.cc +@@ -3915,7 +3915,6 @@ lookup_uop_fuzzy (const char *op, gfc_symtree *uop) + return gfc_closest_fuzzy_match (op, candidates); + } + +- + /* Callback finding an impure function as an operand to an .and. or + .or. expression. Remember the last function warned about to + avoid double warnings when recursing. */ +@@ -3975,6 +3974,22 @@ convert_hollerith_to_character (gfc_expr *e) + } + } + ++/* If E is a logical, convert it to an integer and issue a warning ++ for the conversion. */ ++ ++static void ++convert_integer_to_logical (gfc_expr *e) ++{ ++ if (e->ts.type == BT_INTEGER) ++ { ++ /* Convert to LOGICAL */ ++ gfc_typespec t; ++ t.type = BT_LOGICAL; ++ t.kind = 1; ++ gfc_convert_type_warn (e, &t, 2, 1); ++ } ++} ++ + /* Convert to numeric and issue a warning for the conversion. */ + + static void +@@ -3987,6 +4002,22 @@ convert_to_numeric (gfc_expr *a, gfc_expr *b) + gfc_convert_type_warn (a, &t, 2, 1); + } + ++/* If E is a logical, convert it to an integer and issue a warning ++ for the conversion. */ ++ ++static void ++convert_logical_to_integer (gfc_expr *e) ++{ ++ if (e->ts.type == BT_LOGICAL) ++ { ++ /* Convert to INTEGER */ ++ gfc_typespec t; ++ t.type = BT_INTEGER; ++ t.kind = 1; ++ gfc_convert_type_warn (e, &t, 2, 1); ++ } ++} ++ + /* Resolve an operator expression node. This can involve replacing the + operation with a user defined function call. */ + +@@ -4072,6 +4103,12 @@ resolve_operator (gfc_expr *e) + case INTRINSIC_TIMES: + case INTRINSIC_DIVIDE: + case INTRINSIC_POWER: ++ if (flag_logical_as_integer) ++ { ++ convert_logical_to_integer (op1); ++ convert_logical_to_integer (op2); ++ } ++ + if (gfc_numeric_ts (&op1->ts) && gfc_numeric_ts (&op2->ts)) + { + gfc_type_convert_binary (e, 1); +@@ -4108,6 +4145,13 @@ resolve_operator (gfc_expr *e) + case INTRINSIC_OR: + case INTRINSIC_EQV: + case INTRINSIC_NEQV: ++ ++ if (flag_logical_as_integer) ++ { ++ convert_integer_to_logical (op1); ++ convert_integer_to_logical (op2); ++ } ++ + if (op1->ts.type == BT_LOGICAL && op2->ts.type == BT_LOGICAL) + { + e->ts.type = BT_LOGICAL; +@@ -4158,6 +4202,9 @@ resolve_operator (gfc_expr *e) + goto simplify_op; + } + ++ if (flag_logical_as_integer) ++ convert_integer_to_logical (op1); ++ + if (op1->ts.type == BT_LOGICAL) + { + e->ts.type = BT_LOGICAL; +@@ -4198,6 +4245,12 @@ resolve_operator (gfc_expr *e) + convert_hollerith_to_character (op2); + } + ++ if (flag_logical_as_integer) ++ { ++ convert_logical_to_integer (op1); ++ convert_logical_to_integer (op2); ++ } ++ + if (op1->ts.type == BT_CHARACTER && op2->ts.type == BT_CHARACTER + && op1->ts.kind == op2->ts.kind) + { +diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f +new file mode 100644 +index 00000000000..938a91d9e9a +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f +@@ -0,0 +1,31 @@ ++! { dg-do run } ++! { dg-options "-std=legacy -flogical-as-integer" } ++! ++! Test conversion between logical and integer for logical operators ++! ++! Test case contributed by Jim MacArthur ++! Modified for -flogical-as-integer by Mark Eggleston ++! ++! ++ PROGRAM logical_integer_conversion ++ LOGICAL lpos /.true./ ++ INTEGER ineg/0/ ++ INTEGER ires ++ LOGICAL lres ++ ++ ! Test Logicals converted to Integers ++ if ((lpos.AND.ineg).EQ.1) STOP 3 ++ if ((ineg.AND.lpos).NE.0) STOP 4 ++ ires = (.true..AND.0) ++ if (ires.NE.0) STOP 5 ++ ires = (1.AND..false.) ++ if (ires.EQ.1) STOP 6 ++ ++ ! Test Integers converted to Logicals ++ if (lpos.EQ.ineg) STOP 7 ++ if (ineg.EQ.lpos) STOP 8 ++ lres = (.true..EQ.0) ++ if (lres) STOP 9 ++ lres = (1.EQ..false.) ++ if (lres) STOP 10 ++ END +diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f +new file mode 100644 +index 00000000000..9f146202ba5 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f +@@ -0,0 +1,31 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" } ++! ++! Based on logical_to_integer_and_vice_versa_1.f but with option disabled ++! to test for error messages. ++! ++! Test case contributed by by Mark Eggleston ++! ++! ++ PROGRAM logical_integer_conversion ++ LOGICAL lpos /.true./ ++ INTEGER ineg/0/ ++ INTEGER ires ++ LOGICAL lres ++ ++ ! Test Logicals converted to Integers ++ if ((lpos.AND.ineg).EQ.1) STOP 3 ! { dg-error "Operands of logical operator" } ++ if ((ineg.AND.lpos).NE.0) STOP 4 ! { dg-error "Operands of logical operator" } ++ ires = (.true..AND.0) ! { dg-error "Operands of logical operator" } ++ if (ires.NE.0) STOP 5 ++ ires = (1.AND..false.) ! { dg-error "Operands of logical operator" } ++ if (ires.EQ.1) STOP 6 ++ ++ ! Test Integers converted to Logicals ++ if (lpos.EQ.ineg) STOP 7 ! { dg-error "Operands of comparison operator" } ++ if (ineg.EQ.lpos) STOP 8 ! { dg-error "Operands of comparison operator" } ++ lres = (.true..EQ.0) ! { dg-error "Operands of comparison operator" } ++ if (lres) STOP 9 ++ lres = (1.EQ..false.) ! { dg-error "Operands of comparison operator" } ++ if (lres) STOP 10 ++ END +diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f +new file mode 100644 +index 00000000000..446873eb2dc +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f +@@ -0,0 +1,33 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy -flogical-as-integer" } ++! ++! Test conversion between logical and integer for logical operators ++! ++ program test ++ logical f /.false./ ++ logical t /.true./ ++ real x ++ ++ x = 7.7 ++ x = x + t*3.0 ++ if (abs(x - 10.7).gt.0.00001) stop 1 ++ x = x + .false.*5.0 ++ if (abs(x - 10.7).gt.0.00001) stop 2 ++ x = x - .true.*5.0 ++ if (abs(x - 5.7).gt.0.00001) stop 3 ++ x = x + t ++ if (abs(x - 6.7).gt.0.00001) stop 4 ++ x = x + f ++ if (abs(x - 6.7).gt.0.00001) stop 5 ++ x = x - t ++ if (abs(x - 5.7).gt.0.00001) stop 6 ++ x = x - f ++ if (abs(x - 5.7).gt.0.00001) stop 7 ++ x = x**.true. ++ if (abs(x - 5.7).gt.0.00001) stop 8 ++ x = x**.false. ++ if (abs(x - 1.0).gt.0.00001) stop 9 ++ x = x/t ++ if (abs(x - 1.0).gt.0.00001) stop 10 ++ if ((x/.false.).le.huge(x)) stop 11 ++ end +diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f +new file mode 100644 +index 00000000000..4301a4988d8 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f +@@ -0,0 +1,33 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" } ++! ++! Test conversion between logical and integer for logical operators ++! ++ program test ++ logical f /.false./ ++ logical t /.true./ ++ real x ++ ++ x = 7.7 ++ x = x + t*3.0 ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 10.7).gt.0.00001) stop 1 ++ x = x + .false.*5.0 ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 10.7).gt.0.00001) stop 2 ++ x = x - .true.*5.0 ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 5.7).gt.0.00001) stop 3 ++ x = x + t ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 6.7).gt.0.00001) stop 4 ++ x = x + f ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 6.7).gt.0.00001) stop 5 ++ x = x - t ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 5.7).gt.0.00001) stop 6 ++ x = x - f ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 5.7).gt.0.00001) stop 7 ++ x = x**.true. ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 5.7).gt.0.00001) stop 8 ++ x = x**.false. ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 1.0).gt.0.00001) stop 9 ++ x = x/t ! { dg-error "Operands of binary numeric" } ++ if (abs(x - 1.0).gt.0.00001) stop 10 ++ if ((x/.false.).le.huge(x)) stop 11 ! { dg-error "Operands of binary numeric" } ++ end +-- +2.27.0 + diff --git a/gcc16-hack.patch b/gcc13-hack.patch similarity index 56% rename from gcc16-hack.patch rename to gcc13-hack.patch index 61331bf..e98649e 100644 --- a/gcc16-hack.patch +++ b/gcc13-hack.patch @@ -64,119 +64,63 @@ + infodir="$(infodir)" \ GOCFLAGS="$(GOCFLAGS) $${flags}" \ GDCFLAGS="$(GDCFLAGS) $${flags}" \ - A68FLAGS="$(A68FLAGS) $${flags}" \ + CXXFLAGS="$(CXXFLAGS) $${flags}" \ --- libcpp/macro.cc.jj 2019-01-09 13:01:21.420552123 +0100 -+++ libcpp/macro.cc 2024-11-30 13:16:41.163056391 +0100 -@@ -3680,8 +3680,6 @@ static cpp_macro * ++++ libcpp/macro.cc 2019-01-11 18:18:17.736876285 +0100 +@@ -3256,8 +3256,6 @@ static cpp_macro * create_iso_definition (cpp_reader *pfile) { bool following_paste_op = false; - const char *paste_op_error_msg = -- N_("%<##%> cannot appear at either end of a macro expansion"); +- N_("'##' cannot appear at either end of a macro expansion"); unsigned int num_extra_tokens = 0; unsigned nparms = 0; cpp_hashnode **params = NULL; -@@ -3809,7 +3807,9 @@ create_iso_definition (cpp_reader *pfile +@@ -3382,7 +3380,9 @@ create_iso_definition (cpp_reader *pfile function-like macros, but not at the end. */ if (following_paste_op) { - cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); + cpp_error (pfile, CPP_DL_ERROR, -+ "%<##%> cannot appear at either end of a macro " ++ "'##' cannot appear at either end of a macro " + "expansion"); goto out; } if (!vaopt_tracker.completed ()) -@@ -3824,7 +3824,9 @@ create_iso_definition (cpp_reader *pfile +@@ -3397,7 +3397,9 @@ create_iso_definition (cpp_reader *pfile function-like macros, but not at the beginning. */ if (macro->count == 1) { - cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); + cpp_error (pfile, CPP_DL_ERROR, -+ "%<##%> cannot appear at either end of a macro " ++ "'##' cannot appear at either end of a macro " + "expansion"); goto out; } --- libcpp/expr.cc.jj 2019-01-09 13:01:22.415535734 +0100 -+++ libcpp/expr.cc 2024-11-30 13:14:52.468583689 +0100 -@@ -874,50 +874,54 @@ cpp_classify_number (cpp_reader *pfile, ++++ libcpp/expr.cc 2019-01-11 18:16:23.444726882 +0100 +@@ -803,16 +803,17 @@ cpp_classify_number (cpp_reader *pfile, if ((result & CPP_N_WIDTH) == CPP_N_LARGE && CPP_OPTION (pfile, cpp_warn_long_long)) { -- const char *message = CPP_OPTION (pfile, cplusplus) +- const char *message = CPP_OPTION (pfile, cplusplus) - ? N_("use of C++11 long long integer constant") - : N_("use of C99 long long integer constant"); - if (CPP_OPTION (pfile, c99)) -- cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location, + cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location, - 0, message); -+ cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location, 0, -+ CPP_OPTION (pfile, cplusplus) -+ ? N_("use of C++11 long long integer " -+ "constant") -+ : N_("use of C99 long long integer " -+ "constant")); ++ 0, CPP_OPTION (pfile, cplusplus) ++ ? N_("use of C++11 long long integer constant") ++ : N_("use of C99 long long integer constant")); else cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG, - virtual_location, 0, message); + virtual_location, 0, + CPP_OPTION (pfile, cplusplus) -+ ? N_("use of C++11 long long integer " -+ "constant") -+ : N_("use of C99 long long integer " -+ "constant")); ++ ? N_("use of C++11 long long integer constant") ++ : N_("use of C99 long long integer constant")); } if ((result & CPP_N_SIZE_T) == CPP_N_SIZE_T - && !CPP_OPTION (pfile, size_t_literals)) -- { -- const char *message -- = (result & CPP_N_UNSIGNED) == CPP_N_UNSIGNED -- ? N_("use of C++23 % integer constant") -- : N_("use of C++23 %%> integer constant"); -- cpp_warning_with_line (pfile, CPP_W_SIZE_T_LITERALS, -- virtual_location, 0, message); -- } -+ cpp_warning_with_line (pfile, CPP_W_SIZE_T_LITERALS, -+ virtual_location, 0, -+ (result & CPP_N_UNSIGNED) == CPP_N_UNSIGNED -+ ? N_("use of C++23 % integer " -+ "constant") -+ : N_("use of C++23 %%> " -+ "integer constant")); - - if ((result & CPP_N_BITINT) != 0 - && CPP_OPTION (pfile, cpp_warn_c11_c23_compat) != 0) - { - if (CPP_OPTION (pfile, cpp_warn_c11_c23_compat) > 0) - { -- const char *message = N_("ISO C does not support literal " -- "% suffixes before C23"); - if (CPP_PEDANTIC (pfile) && !CPP_OPTION (pfile, true_false)) - cpp_pedwarning_with_line (pfile, CPP_W_C11_C23_COMPAT, -- virtual_location, 0, message); -+ virtual_location, 0, -+ "ISO C does not support literal " -+ "% suffixes before C23"); - else - cpp_warning_with_line (pfile, CPP_W_C11_C23_COMPAT, -- virtual_location, 0, message); -- } -- else if (!CPP_OPTION (pfile, true_false)) -- { -- const char *message = N_("ISO C does not support literal " -+ virtual_location, 0, -+ "ISO C does not support literal " - "% suffixes before C23"); -- cpp_pedwarning_with_line (pfile, CPP_W_PEDANTIC, -- virtual_location, 0, message); - } -+ else if (!CPP_OPTION (pfile, true_false)) -+ cpp_pedwarning_with_line (pfile, CPP_W_PEDANTIC, -+ virtual_location, 0, -+ "ISO C does not support literal " -+ "% suffixes before C23"); - } - - result |= CPP_N_INTEGER; diff --git a/gcc16-isl-dl.patch b/gcc13-isl-dl.patch similarity index 99% rename from gcc16-isl-dl.patch rename to gcc13-isl-dl.patch index dc0c49b..20dd8bf 100644 --- a/gcc16-isl-dl.patch +++ b/gcc13-isl-dl.patch @@ -696,16 +696,16 @@ static void --- gcc/toplev.cc.jj 2017-02-19 13:02:31.000000000 +0100 -+++ gcc/toplev.cc 2024-11-30 13:22:34.175096117 +0100 -@@ -100,6 +100,7 @@ along with GCC; see the file COPYING3. ++++ gcc/toplev.cc 2017-02-19 16:50:25.536301350 +0100 +@@ -94,6 +94,7 @@ along with GCC; see the file COPYING3. #ifdef HAVE_isl #include +extern const char *get_isl_version (bool); #endif - static void general_init (const char *, bool, unique_argv original_argv); -@@ -652,7 +653,7 @@ print_version (FILE *file, const char *i + static void general_init (const char *, bool); +@@ -683,7 +684,7 @@ print_version (FILE *file, const char *i #ifndef HAVE_isl "none" #else diff --git a/gcc16-isl-dl2.patch b/gcc13-isl-dl2.patch similarity index 89% rename from gcc16-isl-dl2.patch rename to gcc13-isl-dl2.patch index 8d2c4d9..2e12499 100644 --- a/gcc16-isl-dl2.patch +++ b/gcc13-isl-dl2.patch @@ -6,8 +6,8 @@ directory. --- gcc/toplev.cc.jj 2008-12-09 23:59:10.000000000 +0100 -+++ gcc/toplev.cc 2024-11-30 13:26:05.085132543 +0100 -@@ -112,6 +112,8 @@ static void finalize (); ++++ gcc/toplev.cc 2009-01-27 14:33:52.000000000 +0100 +@@ -113,6 +113,8 @@ static void finalize (bool); static void crash_signal (int) ATTRIBUTE_NORETURN; static void compile_file (void); @@ -16,14 +16,14 @@ /* Decoded options, and number of such options. */ struct cl_decoded_option *save_decoded_options; unsigned int save_decoded_options_count; -@@ -2296,6 +2298,8 @@ toplev::main (int argc, char **argv) +@@ -2239,6 +2241,8 @@ toplev::main (int argc, char **argv) expandargv (&argc, &argv); + toplev_main_argv = CONST_CAST2 (const char **, char **, argv); + /* Initialization of GCC's environment, and diagnostics. */ - general_init (argv[0], m_init_signals, std::move (original_argv)); + general_init (argv[0], m_init_signals); --- gcc/graphite.cc.jj 2010-12-01 10:24:32.000000000 -0500 +++ gcc/graphite.cc 2010-12-01 11:46:07.832118193 -0500 diff --git a/gcc16-libgomp-omp_h-multilib.patch b/gcc13-libgomp-omp_h-multilib.patch similarity index 100% rename from gcc16-libgomp-omp_h-multilib.patch rename to gcc13-libgomp-omp_h-multilib.patch diff --git a/gcc16-libstdc++-docs.patch b/gcc13-libstdc++-docs.patch similarity index 74% rename from gcc16-libstdc++-docs.patch rename to gcc13-libstdc++-docs.patch index 7d2d357..b6c2d50 100644 --- a/gcc16-libstdc++-docs.patch +++ b/gcc13-libstdc++-docs.patch @@ -4,21 +4,21 @@ FSF

-+ Release 16.0.1 ++ Release 12.2.1 +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the --- libstdc++-v3/doc/html/api.html.jj 2011-01-03 12:53:21.000000000 +0100 -+++ libstdc++-v3/doc/html/api.html 2024-11-30 13:30:16.607594623 +0100 ++++ libstdc++-v3/doc/html/api.html 2011-01-04 18:12:01.672757784 +0100 @@ -20,7 +20,9 @@ member functions for the library classes, finding out what is in a particular include file, looking at inheritance diagrams, etc.

- The API documentation, rendered into HTML, can be viewed online + The API documentation, rendered into HTML, can be viewed locally -+ for the 16.0.1 release, ++ for the 12.2.1 release, + online - for each GCC release + for each GCC release and - + diff --git a/gcc16-libtool-no-rpath.patch b/gcc13-libtool-no-rpath.patch similarity index 87% rename from gcc16-libtool-no-rpath.patch rename to gcc13-libtool-no-rpath.patch index 8429a4c..466c661 100644 --- a/gcc16-libtool-no-rpath.patch +++ b/gcc13-libtool-no-rpath.patch @@ -5,7 +5,7 @@ libtool sucks. rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64|/usr/lib/../lib64/lp64d) continue;; esac ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then @@ -13,7 +13,7 @@ libtool sucks. rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64|/usr/lib/../lib64/lp64d) continue;; esac ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then @@ -21,7 +21,7 @@ libtool sucks. rpath= hardcode_libdirs= for libdir in $finalize_rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64|/usr/lib/../lib64/lp64d) continue;; esac ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then diff --git a/gcc16-no-add-needed.patch b/gcc13-no-add-needed.patch similarity index 96% rename from gcc16-no-add-needed.patch rename to gcc13-no-add-needed.patch index 74f5c1f..5817299 100644 --- a/gcc16-no-add-needed.patch +++ b/gcc13-no-add-needed.patch @@ -34,4 +34,4 @@ +#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} " #endif - + #define GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC \ diff --git a/gcc13-pr107678.patch b/gcc13-pr107678.patch new file mode 100644 index 0000000..3cf29ac --- /dev/null +++ b/gcc13-pr107678.patch @@ -0,0 +1,113 @@ +A recent change only initializes the regs.how[] during Dwarf unwinding +which resulted in an uninitialized offset used in return address signing +and random failures during unwinding. The fix is to encode the return +address signing state in REG_UNSAVED and REG_UNDEFINED. + +2023-01-10 Wilco Dijkstra + + PR target/107678 + * unwind-dw2.c (RA_SIGNED_BIT): Remove. + * unwind-dw2-execute_cfa.h: Use REG_UNSAVED/UNDEFINED + to encode return address signing state. + * config/aarch64/aarch64-unwind.h (aarch64_demangle_return_addr) + Check current return address signing state. + (aarch64_frob_update_contex): Remove. + +--- libgcc/config/aarch64/aarch64-unwind.h ++++ libgcc/config/aarch64/aarch64-unwind.h +@@ -29,8 +29,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + + #define MD_DEMANGLE_RETURN_ADDR(context, fs, addr) \ + aarch64_demangle_return_addr (context, fs, addr) +-#define MD_FROB_UPDATE_CONTEXT(context, fs) \ +- aarch64_frob_update_context (context, fs) + + static inline int + aarch64_cie_signed_with_b_key (struct _Unwind_Context *context) +@@ -55,42 +53,27 @@ aarch64_cie_signed_with_b_key (struct _Unwind_Context *context) + + static inline void * + aarch64_demangle_return_addr (struct _Unwind_Context *context, +- _Unwind_FrameState *fs ATTRIBUTE_UNUSED, ++ _Unwind_FrameState *fs, + _Unwind_Word addr_word) + { + void *addr = (void *)addr_word; +- if (context->flags & RA_SIGNED_BIT) ++ const int reg = DWARF_REGNUM_AARCH64_RA_STATE; ++ ++ if (fs->regs.how[reg] == REG_UNSAVED) ++ return addr; ++ ++ /* Return-address signing state is toggled by DW_CFA_GNU_window_save (where ++ REG_UNDEFINED means enabled), or set by a DW_CFA_expression. */ ++ if (fs->regs.how[reg] == REG_UNDEFINED ++ || (_Unwind_GetGR (context, reg) & 0x1) != 0) + { + _Unwind_Word salt = (_Unwind_Word) context->cfa; + if (aarch64_cie_signed_with_b_key (context) != 0) + return __builtin_aarch64_autib1716 (addr, salt); + return __builtin_aarch64_autia1716 (addr, salt); + } +- else +- return addr; +-} +- +-/* Do AArch64 private initialization on CONTEXT based on frame info FS. Mark +- CONTEXT as return address signed if bit 0 of DWARF_REGNUM_AARCH64_RA_STATE is +- set. */ +- +-static inline void +-aarch64_frob_update_context (struct _Unwind_Context *context, +- _Unwind_FrameState *fs) +-{ +- const int reg = DWARF_REGNUM_AARCH64_RA_STATE; +- int ra_signed; +- if (fs->regs.how[reg] == REG_UNSAVED) +- ra_signed = fs->regs.reg[reg].loc.offset & 0x1; +- else +- ra_signed = _Unwind_GetGR (context, reg) & 0x1; +- if (ra_signed) +- /* The flag is used for re-authenticating EH handler's address. */ +- context->flags |= RA_SIGNED_BIT; +- else +- context->flags &= ~RA_SIGNED_BIT; + +- return; ++ return addr; + } + + #endif /* defined AARCH64_UNWIND_H && defined __ILP32__ */ +--- libgcc/unwind-dw2.c ++++ libgcc/unwind-dw2.c +@@ -137,9 +137,6 @@ struct _Unwind_Context + #define SIGNAL_FRAME_BIT ((~(_Unwind_Word) 0 >> 1) + 1) + /* Context which has version/args_size/by_value fields. */ + #define EXTENDED_CONTEXT_BIT ((~(_Unwind_Word) 0 >> 2) + 1) +- /* Bit reserved on AArch64, return address has been signed with A or B +- key. */ +-#define RA_SIGNED_BIT ((~(_Unwind_Word) 0 >> 3) + 1) + _Unwind_Word flags; + /* 0 for now, can be increased when further fields are added to + struct _Unwind_Context. */ +--- libgcc/unwind-dw2-execute_cfa.h 2023-01-02 17:53:56.003021412 +0100 ++++ libgcc/unwind-dw2-execute_cfa.h 2023-01-12 19:52:05.456327742 +0100 +@@ -278,10 +278,15 @@ + case DW_CFA_GNU_window_save: + #if defined (__aarch64__) && !defined (__ILP32__) + /* This CFA is multiplexed with Sparc. On AArch64 it's used to toggle +- return address signing status. */ ++ return address signing status. The REG_UNDEFINED/UNSAVED states ++ mean RA signing is enabled/disabled. */ + reg = DWARF_REGNUM_AARCH64_RA_STATE; +- gcc_assert (fs->regs.how[reg] == REG_UNSAVED); +- fs->regs.reg[reg].loc.offset ^= 1; ++ gcc_assert (fs->regs.how[reg] == REG_UNSAVED ++ || fs->regs.how[reg] == REG_UNDEFINED); ++ if (fs->regs.how[reg] == REG_UNSAVED) ++ fs->regs.how[reg] = REG_UNDEFINED; ++ else ++ fs->regs.how[reg] = REG_UNSAVED; + #else + /* ??? Hardcoded for SPARC register window configuration. */ + if (__LIBGCC_DWARF_FRAME_REGISTERS__ >= 32) diff --git a/gcc13-rh1574936.patch b/gcc13-rh1574936.patch new file mode 100644 index 0000000..6b4be0c --- /dev/null +++ b/gcc13-rh1574936.patch @@ -0,0 +1,30 @@ +crt files and statically linked libgcc objects cause false positives +in annobin coverage, so we add the assembler flag to generate notes +for them. + +The patch also adds notes to libgcc_s.so, but this is harmless because +these notes only confer that there is no other annobin markup. + +2018-07-25 Florian Weimer + + * Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add + -Wa,--generate-missing-build-notes=yes. + +--- libgcc/Makefile.in 2018-01-13 13:05:41.000000000 +0100 ++++ libgcc/Makefile.in 2018-07-25 13:15:02.036226940 +0200 +@@ -246,6 +246,7 @@ LIBGCC2_DEBUG_CFLAGS = -g + LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \ + $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \ + -fbuilding-libgcc -fno-stack-protector \ ++ -Wa,--generate-missing-build-notes=yes \ + $(INHIBIT_LIBC_CFLAGS) + + # Additional options to use when compiling libgcc2.a. +@@ -301,6 +302,7 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(IN + $(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) \ ++ -Wa,--generate-missing-build-notes=yes \ + $(INHIBIT_LIBC_CFLAGS) $(USE_TM_CLONE_REGISTRY) + + # Extra flags to use when compiling crt{begin,end}.o. diff --git a/gcc16-sparc-config-detection.patch b/gcc13-sparc-config-detection.patch similarity index 100% rename from gcc16-sparc-config-detection.patch rename to gcc13-sparc-config-detection.patch diff --git a/gcc16-pr119006.patch b/gcc16-pr119006.patch deleted file mode 100644 index dfbdaa9..0000000 --- a/gcc16-pr119006.patch +++ /dev/null @@ -1,76 +0,0 @@ -2025-02-27 Jakub Jelinek - - PR ipa/119006 - * ipa-icf-gimple.cc (func_checker::compare_operand): If t1 and t2 - are ADDR_EXPRs, call operand_equal_p on their operands rather than on - the ADDR_EXPRs themselves. Formatting fix. - - * g++.dg/opt/pr119006.C: New test. - ---- gcc/ipa-icf-gimple.cc.jj 2025-02-01 00:50:02.080774328 +0100 -+++ gcc/ipa-icf-gimple.cc 2025-02-27 14:35:19.931183246 +0100 -@@ -437,12 +437,23 @@ func_checker::compare_operand (tree t1, - ("compare_ao_refs failed (dependence clique difference)"); - gcc_unreachable (); - } -+ else if (TREE_CODE (t1) == ADDR_EXPR && TREE_CODE (t2) == ADDR_EXPR) -+ { -+ /* For ADDR_EXPR compare the operands of the ADDR_EXPR rather than -+ the ADDR_EXPRs themselves. operand_equal_p will compare the -+ operands with OEP_ADDRESS_OF and only care about the value -+ of the ADDR_EXPR, rather than e.g. types of MEM_REFs in there. -+ Some optimizations use such details though, see PR119006. */ -+ if (operand_equal_p (TREE_OPERAND (t1, 0), TREE_OPERAND (t2, 0), -+ OEP_MATCH_SIDE_EFFECTS)) -+ return true; -+ return return_false_with_msg ("operand_equal_p failed"); -+ } - else - { - if (operand_equal_p (t1, t2, OEP_MATCH_SIDE_EFFECTS)) - return true; -- return return_false_with_msg -- ("operand_equal_p failed"); -+ return return_false_with_msg ("operand_equal_p failed"); - } - } - ---- gcc/testsuite/g++.dg/opt/pr119006.C.jj 2025-02-27 14:37:05.952707350 +0100 -+++ gcc/testsuite/g++.dg/opt/pr119006.C 2025-02-27 14:36:29.251218260 +0100 -@@ -0,0 +1,36 @@ -+// PR ipa/119006 -+// { dg-do run { target c++11 } } -+// { dg-options "-O2 -fwhole-program" } -+ -+struct A { -+ bool operator== (const char *x) const { return x && !__builtin_strcmp (a, x); } -+ char a[11]; -+}; -+ -+struct B { -+ bool operator== (const char *x) const { return x && !__builtin_strcmp (a, x); } -+ bool operator!= (const char *x) const { return !(*this == x); } -+ char a[128]; -+}; -+ -+[[gnu::noinline,gnu::used]] int -+foo (const A& lhs, const char* rhs) -+{ -+ return lhs == rhs; -+} -+ -+constexpr const char *t = "abcdefghijklmno"; -+ -+[[gnu::noinline,gnu::used]] void -+bar (B x) -+{ -+ if (x != t) __builtin_abort (); -+} -+ -+int -+main () -+{ -+ B b; -+ __builtin_strcpy (b.a, t); -+ bar (b); -+} diff --git a/gcc16-pr123273.patch b/gcc16-pr123273.patch deleted file mode 100644 index 987f6e0..0000000 --- a/gcc16-pr123273.patch +++ /dev/null @@ -1,54 +0,0 @@ -2026-01-06 Jakub Jelinek - - PR preprocessor/123273 - * lex.cc (cpp_directive_only_process): Only go to done_comment - for '/' if star is true and esc is false. When seeing '\\' with - esc set to true, clear esc as well as star instead of keeping esc - set. - - * c-c++-common/cpp/dir-only-10.c: New test. - * c-c++-common/cpp/dir-only-11.c: New test. - ---- libcpp/lex.cc.jj 2026-01-02 09:56:10.417332292 +0100 -+++ libcpp/lex.cc 2026-01-05 16:40:26.413766032 +0100 -@@ -5461,7 +5461,13 @@ cpp_directive_only_process (cpp_reader * - switch (c) - { - case '\\': -- esc = true; -+ if (esc) -+ { -+ star = false; -+ esc = false; -+ } -+ else -+ esc = true; - break; - - case '\r': -@@ -5492,7 +5498,7 @@ cpp_directive_only_process (cpp_reader * - break; - - case '/': -- if (star) -+ if (star && !esc) - goto done_comment; - /* FALLTHROUGH */ - ---- gcc/testsuite/c-c++-common/cpp/dir-only-10.c.jj 2026-01-05 17:04:26.144566116 +0100 -+++ gcc/testsuite/c-c++-common/cpp/dir-only-10.c 2026-01-05 17:05:02.226946201 +0100 -@@ -0,0 +1,5 @@ -+/* PR preprocessor/123273 */ -+/* { dg-do preprocess } */ -+/* { dg-options -fdirectives-only } */ -+ -+/* *\/""" */ ---- gcc/testsuite/c-c++-common/cpp/dir-only-11.c.jj 2026-01-05 17:05:18.498666647 +0100 -+++ gcc/testsuite/c-c++-common/cpp/dir-only-11.c 2026-01-05 17:06:17.574651691 +0100 -@@ -0,0 +1,6 @@ -+/* PR preprocessor/123273 */ -+/* { dg-do preprocess } */ -+/* { dg-options -fdirectives-only } */ -+ -+/* *\\ -+/""" */ diff --git a/gcc16-rh1574936.patch b/gcc16-rh1574936.patch deleted file mode 100644 index bcc7000..0000000 --- a/gcc16-rh1574936.patch +++ /dev/null @@ -1,21 +0,0 @@ -crt files and statically linked libgcc objects cause false positives -in annobin coverage, so we add the assembler flag to generate notes -for them. - -The patch also adds notes to libgcc_s.so, but this is harmless because -these notes only confer that there is no other annobin markup. - -2018-07-25 Florian Weimer - - * config/t-linux (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add - -Wa,--generate-missing-build-notes=yes. - ---- libgcc/config/t-linux 2022-12-15 19:25:20.581394950 +0100 -+++ libgcc/config/t-linux 2023-03-21 22:00:37.054478562 +0100 -@@ -1,3 +1,6 @@ - # Override t-slibgcc-elf-ver to export some libgcc symbols with - # the symbol versions that glibc used. - SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver -+ -+LIBGCC2_CFLAGS += -Wa,--generate-missing-build-notes=yes -+CRTSTUFF_CFLAGS += -Wa,--generate-missing-build-notes=yes diff --git a/plans/ci.fmf b/plans/ci.fmf index b661134..85710d6 100644 --- a/plans/ci.fmf +++ b/plans/ci.fmf @@ -1,13 +1,6 @@ summary: CI Gating Plan discover: how: fmf - url: https://gitlab.com/redhat/centos-stream/tests/gcc.git - filter: 'tag: Fedora-CI-gating' + directory: tests execute: how: tmt -adjust: - - prepare+: - - name: Add secondary architecture RPMs - how: shell - script: ./plans/provide_secondary_arch_rpms.sh - when: arch == x86_64 diff --git a/plans/provide_secondary_arch_rpms.sh b/plans/provide_secondary_arch_rpms.sh deleted file mode 100755 index f26a5ab..0000000 --- a/plans/provide_secondary_arch_rpms.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env bash - -# Fedora CI testing systems don't provide a repository with the i686 -# RPMs of the build being tested. As a consequence, most -# dnf install -y .i686 -# commands (whether being run by a test or by TMT's prepare) will probably -# fail on a version mismatch with the present x86_64 gcc RPMs. To prevent -# such failures we provide this script which we recommend to include in every -# Fedora CI test plan. -# -# Implementation notes: -# -# * The gcc build being tested in Fedora CI is given via KOJI_TASK_ID. See -# https://github.com/fedora-ci/dist-git-pipeline/pull/50 for details. -# -# * Currently this script just downloads and installs the i686 RPMs. It -# would not be sufficient for tests that uninstall and reinstall those -# RPMs. If such a test appears, this script should create a repository. -# -# * Fedora CI testing systems seem to have extremely small RAM-based /tmp, -# unable to host all the downloaded RPMs, and no other "real" filesystem -# than "/". That's the reason for using -# mktemp -d --tmpdir=/ - -set -x - -true "V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V" - -echo "KOJI_TASK_ID=$KOJI_TASK_ID" - -. /etc/os-release - -echo "ID=$ID" -echo "arch=$(arch)" -echo "KOJI_TASK_ID=$KOJI_TASK_ID" - -if [[ "$ID" = fedora ]] && [[ "$(arch)" = x86_64 ]] && [[ -n "$KOJI_TASK_ID" ]]; then - - if tmpd=$(mktemp -d --tmpdir=/) && pushd "$tmpd"; then - - # Download - rpm -q koji || dnf -y install koji - koji download-task "$KOJI_TASK_ID" --noprogress --arch={x86_64,i686,noarch} - - # Remove conflicting RPMs - rm -f ./*debuginfo* ./*debugsource* - rm -f gcc-[0-9]*.i686.* - rm -f ./*docs*.i686.* - - # Install - ls - dnf -y install ./*.rpm - - # Clean up - # shellcheck disable=SC2164 - popd - rm -rf "$tmpd" - fi - -else - echo "Not applicable" -fi - -true "^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^" diff --git a/rpminspect.yaml b/rpminspect.yaml deleted file mode 100644 index f31bc02..0000000 --- a/rpminspect.yaml +++ /dev/null @@ -1,37 +0,0 @@ -inspections: - # GCC subpackages are inter-dependent but without requesting an explicit - # version - which rpmdeps dislikes and creates huge reports. We can't fix - # it easily and it's not a practical problem anyway. Unfortunately we - # can't tell rpmdeps to ignore just that particular warning. Switching off - # the rpmdeps checks looks like a lesser evil. - rpmdeps: off - -badfuncs: - # GCC doesn't use the so called bad functions "much". If they appear then - # - it is instrumenting them in sanitizers - # - in languages that don't move further downstream. - # We are OK with that. - ignore: - - /usr/lib*/libasan.so.*.*.* - - /usr/lib*/libtsan.so.*.*.* - - /usr/lib*/libgnat-*.so - - /usr/lib*/libgphobos.so.*.*.* - - /usr/lib*/libm2iso.so.*.*.* - - /usr/lib*/libm2pim.so.*.*.* - -pathmigration: - # Incomplete UsrMove, known but not planned at the moment - ignore: - - /lib*/libgcc_s-*.so.* - - /lib*/libgcc_s.so.* - -debuginfo: - # Skip the Go binaries, they ship unstripped - ignore: - - /usr/bin/go.gcc - - /usr/bin/gofmt.gcc - - /usr/lib*/libgo.so.*.*.* - - /usr/libexec/gcc/*-redhat-linux/*/buildid - - /usr/libexec/gcc/*-redhat-linux/*/cgo - - /usr/libexec/gcc/*-redhat-linux/*/test2json - - /usr/libexec/gcc/*-redhat-linux/*/vet diff --git a/sources b/sources index f1dba4c..222a90d 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (gcc-16.0.1-20260115.tar.xz) = 51ab079dedde5547caba601ce03954d4c5b2bf687538f106d3e851a8918162017fe65817d9e22fd115cf4d4f970bfba6a70a34db183141ce28c5c203a68eec0b +SHA512 (gcc-13.0.0-20230112.tar.xz) = d96893d7cfb4b49e0cb7a53ee486607024553a84cdb701435290c6d1fc2692d0ab92111272664fc94cf6a41b8c67210b8d41fcb76a70b3adc5de5bbcce487228 SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 -SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881 -SHA512 (nvptx-tools-a0c1fff6534a4df9fb17937c3c4a4b1071212029.tar.xz) = 7f862986065028df70c843fc3f2c89e200a76b48ad0bd51c749ac8a5aab7be0ebdf35be182fad2407b3281615e75be1ac6833ab6a5130ae9920169a0412f94f0 +SHA512 (newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz) = b099246fe4a5d0a372cdaee5da49083df5b2f4440a4e83961600cdf22d37da50c99ce9ae46b769f188a67034ee038cf863260988fc9d594e8e5fb3905a381dec +SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6 diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c new file mode 100644 index 0000000..801bda0 --- /dev/null +++ b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c @@ -0,0 +1,12 @@ +#include +#include + +int +main () +{ + int i = 2; + if (-10 * abs (i - 1) == 10 * abs (i - 1)) + return 1; + + return 0; +} diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf new file mode 100644 index 0000000..f31d44e --- /dev/null +++ b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf @@ -0,0 +1,26 @@ +summary: gcc optimization error for neg number * abs() [extract_muldiv] +description: | + abs() from gcc was broken so it gave wrong results. +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/394271-gcc-optimization-error-for-neg-number-abs +framework: beakerlib +require: + - gcc +duration: 5m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=394271 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0062143 +extra-summary: /tools/gcc/Regression/gcc/394271-gcc-optimization-error-for-neg-number-abs +extra-task: /tools/gcc/Regression/gcc/394271-gcc-optimization-error-for-neg-number-abs diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh new file mode 100755 index 0000000..695c9fc --- /dev/null +++ b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC="${GCC:-$(type -P gcc)}" +PACKAGE=$(rpm --qf '%{name}' -qf $GCC) + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v abs.c $TmpDir" + rlRun "pushd $TmpDir" + gcc -dumpversion | grep -q '^4\.4' && export OLDGCC="true" + rlPhaseEnd + + rlPhaseStartTest "Testing the executable" + OPTS="-O0 -O1 -O2 -O3 -Os -Ofast -Og" + if [ "$OLDGCC" = "true" ]; then + OPTS=${OPTS/ -Ofast -Og/} + fi + for opt in "" $OPTS; do + rlRun "$GCC -g $opt -o abs$opt abs.c" 0 "Compiling the test case [ $opt ]" + rlRun "./abs$opt" 0 "Checking whether we have an working executable [ $opt ]" + done + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf new file mode 100644 index 0000000..35ff67d --- /dev/null +++ b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf @@ -0,0 +1,29 @@ +summary: unzip problem with CRC error for src-4.1.0.zip file on s390x +description: | + A customer has been trying to unzip the file src-4.1.0.zip + which is contained libgcj4-src-4.1.0-18.EL4.s390x.rpm. However, + unzip command can't run correctly with the CRC errors + It seems that the src-4.1.0.zip is broken. +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - libgcj-src +duration: 5m +enabled: true +tag: + - CI-Tier-1 + - Tier1 +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=462397 +adjust: + - enabled: false + when: distro != rhel-5 and distro != rhel-6 + continue: false +extra-nitrate: TC#0147365 +extra-summary: /tools/gcc/Sanity/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file +extra-task: /tools/gcc/Sanity/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh new file mode 100755 index 0000000..62d03df --- /dev/null +++ b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc libgcj-src) + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlRun "TmpDir=\`mktemp -d\`" + rlRun "pushd $TmpDir" + rlPhaseEnd + +srclist="/usr/share/java/src-*" +for src in ${srclist}; do + + rlPhaseStartTest "Try to unzip src file" + rm -rf tmp/; mkdir tmp/ + rlRun "cp -fv ${src} tmp/" 0 "[${src}]: Copy the zip file to tmp/" + cd tmp/ + rlRun "unzip ${src}" 0 "[${src}] Verify that is possible to unzip ${src}" + cd .. + rlPhaseEnd + +done + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 new file mode 100644 index 0000000..c9af75f --- /dev/null +++ b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 @@ -0,0 +1,22 @@ + subroutine a + INTEGER*4 a_i + common /block/a_i + a_i = 1 + end subroutine a + subroutine b + INTEGER*4 b_i + common /block/b_i + a_i = 3 + b_i = 2 + end subroutine b + subroutine c + INTEGER*4 a_i + common /block/a_i + if (a_i .ne. 2) call abort + end subroutine c + program abc + call a + call b + call c + end program abc + diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf new file mode 100644 index 0000000..752caf6 --- /dev/null +++ b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf @@ -0,0 +1,38 @@ +summary: Fortran DW_TAG_common_block has incorrect placement/scope +description: |+ + Problem: gcc-4.3.2 / gfortran-4.3.2 (in the forthcoming tech-preview for + RHEL5.3) appears to also have the "DW_TAG_common_block has incorrect + placement/scope" issues listed in the following gcc upstream bug: + + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37738 + + What gfortran is doing currently is: + + (1) Merges all common blocks into a single one. + (2) Places this single common block into the first subroutine where it was + used. + +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope +framework: beakerlib +require: + - gcc + - gcc-gfortran +duration: 5m +tier: '1' +enabled: true +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=465974 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0062268 +extra-summary: /tools/gcc/g77/465974-DW_TAG_common_block-has-incorrect-placement-scope +extra-task: /tools/gcc/g77/465974-DW_TAG_common_block-has-incorrect-placement-scope diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh new file mode 100755 index 0000000..741279d --- /dev/null +++ b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-gfortran) + +GFORTRAN=${GFORTRAN:-gfortran} + +rlJournalStart + rlPhaseStartSetup + if type gcc | grep -q -v toolset; then + # assert only of not devtoolset/gcc-toolset + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + fi + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v abc.f90 $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest "Testing the executable via readelf -w" + # Compile + rlRun "$GFORTRAN -g -o abc abc.f90" 0 "Compiling the test case: abc.f90" + rlRun "./abc" 0 "Checking whether we have an working executable" + rlWatchdog "readelf -w abc 2>&1 | tee gcc-readelf.log" 10 + rlAssert0 "Checking if 'readelf' ends itself" $? + # Test + cb=$(grep Abbrev gcc-readelf.log | grep DW_TAG_common_block -c) + rlRun "if [ ${cb} -eq 3 ]; then true; else false; fi" 0 "Expected amount of common blocks is 3; got ${cb}" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c new file mode 100644 index 0000000..64449ae --- /dev/null +++ b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c @@ -0,0 +1,29 @@ +#include + +/* Compile flags: + * gcc -fno-builtin-isascii -fno-builtin-isalnum -o builtin builtin.c + * + * Expected output: + * Using custom isascii() function + * ret = 0 + * + * Expected return value: + * 0 + */ + +int isascii(int c) +{ + printf("Using custom isascii() function\n"); + return 0; +} + +main() +{ + int c = 65; + int ret; + + ret = isascii(c); + printf("ret = %d\n", ret); + + return ret; +} diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf new file mode 100644 index 0000000..080f24f --- /dev/null +++ b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf @@ -0,0 +1,33 @@ +summary: 'Test for bz515799 ([RHEL5] gcc: if more than one -fno-builtin-*)' +description: | + Bug summary: [RHEL5] gcc: if more than one -fno-builtin-* options are specified, only the last one is effective + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=515799 + + This test compiles builtin.c with the flags '-fno-builtin-isascii + -fno-builtin-isalnum'. This program contains a custom isascii() function + that always returns 0. If gcc honors the -fno-builtin-isascii flag, it + will return 0. If not, it will use the built-in isascii() function which + will return 1. +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin +framework: beakerlib +require: + - gcc +duration: 5m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=515799 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0063259 +extra-summary: /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin +extra-task: /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh new file mode 100755 index 0000000..8b38afd --- /dev/null +++ b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin +# Description: Test for bz515799 ([RHEL5] gcc: if more than one -fno-builtin-*) +# Author: Jeffrey Bastian +# Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc) + +GCC=${GCC:-gcc} + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v builtin.c $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GCC -fno-builtin-isascii -fno-builtin-isalnum -o builtin builtin.c" + rlAssertExists "builtin" + rlRun "./builtin" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java new file mode 100644 index 0000000..bc72835 --- /dev/null +++ b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java @@ -0,0 +1,5 @@ +public class foo { + public static void main(String[] args) { + System.loadLibrary("foolib"); + } +} diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf new file mode 100644 index 0000000..b121552 --- /dev/null +++ b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf @@ -0,0 +1,39 @@ +summary: 'CVE-2009-3736 libtool: libltdl may load and execute code from a library + in the current directory' +description: | + cat > ~/foo.java <\EOF public class foo { public static void main(String[] args) { System.loadLibrary("foolib"); } } EOF + cd + gcj -C foo.java + cd /tmp + strace -f -v -s1024 gij -cp ~/ foo 2>&1 | grep foolib + + (resp. s/gcj/gcj4/g;s/gij/gij4/ for gcc4 testing). + + If any relative path is seen, it is wrong. Bad examples are + + {lib,}foolib.la + {hwcap,0,nosegneg}/{lib,}foolib.{so,la} +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - gcc-java + - libgcj + - strace +duration: 5m +enabled: false +tag: + - CI-Tier-1 + - Tier1 +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=537941 +adjust: + - enabled: true + when: distro == rhel-6 or distro == rhel-5 +extra-nitrate: TC#0062145 +extra-summary: /tools/gcc/Regression/gcj/537941-libltdl-may-load-library-in-current-directory +extra-task: /tools/gcc/Regression/gcj/537941-libltdl-may-load-library-in-current-directory diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh new file mode 100755 index 0000000..73e914d --- /dev/null +++ b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc libgcj strace gcc-java) + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v foo.java $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + +# I weeded out the if (isRHEL 3) support. +for gj in "" "4"; do + gcj_name="/usr/bin/gcj${gj}" + gij_name="/usr/bin/gij${gj}" + if [ -x ${gcj_name} ] && [ -x ${gij_name} ]; then + gcj_basename=$(basename ${gcj_name}) + gij_basename=$(basename ${gij_name}) + + rlPhaseStartTest "[${gij_basename}] Interpreting and compiling via java" + rlRun "${gcj_name} -C foo.java" 0 "[${gcj_basename}] Creating bytecode" + mv foo.class ~ + pushd /tmp + + echo "Dry run w/o strace" + ${gij_basename} -cp ~/ foo + + echo "=== Dry run end ===" + strace -f -v -s1024 ${gij_basename} -cp ~/ foo 2>&1 | tee out.${gij_basename} + echo + grep foolib out.${gij_basename} + foolib_cnt="$(grep foolib out.${gij_basename} -c)" + echo + rlRun "if [ ${foolib_cnt} -ne 0 ]; then egrep '\"libfoolib.la|\"foolib.la' out.${gij_basename}; else echo \"Zero lines w/ foolib\"; true; fi" 1 "[${gij_basename}] Interpreting test case" # use 'true' (sic!) + popd + rm -f ~/foo.class + rlPhaseEnd + + fi +done + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf new file mode 100644 index 0000000..6a60b30 --- /dev/null +++ b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf @@ -0,0 +1,32 @@ +summary: Test for BZ#1611637 (devtoolset-8-gcc includes avx512vbmi2intrin.h but) +description: | + Bug summary: devtoolset-8-gcc includes avx512vbmi2intrin.h but does not contain it + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1611637 + + The list of intrinsic headers keeps changing every release, sometimes + even on the release branch, and %files needs to be in sync with what has + been changed in gcc/config.gcc. immintrin.h is one of those headers and + this test makes sure that we can #include it. +contact: Vaclav Kadlcik +component: + - gcc +test: ./runtest.sh +framework: beakerlib +require: + - gcc +duration: 5m +enabled: true +tag: + - CI-Tier-1 +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1611637 +adjust: + - enabled: false + when: arch != x86_64 + continue: false + - enabled: false + when: distro == rhel-5 + continue: false +extra-nitrate: TC#0575308 +extra-summary: /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release +extra-task: /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh new file mode 100755 index 0000000..8ff645e --- /dev/null +++ b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release +# Description: Test for BZ#1611637 (devtoolset-8-gcc includes avx512vbmi2intrin.h but) +# Author: Michael Petlan +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2018 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC=${GCC:-gcc} + +rlJournalStart + rlPhaseStartSetup + cat > a.c < +int main(void) +{ + return 0; +} +EOF + rlAssertExists "a.c" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GCC -o a a.c" + rlAssertExists "a" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "rm -f a a.c" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf new file mode 100644 index 0000000..82cdc4e --- /dev/null +++ b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf @@ -0,0 +1,12 @@ +summary: Test for BZ#1815504 (Regression in the line information debug) +description: | + Bug summary: Regression in the line information debug information generated by gcc + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1815504 +recommend: +- gcc +- valgrind +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1815504 +extra-summary: /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug +extra-task: /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug diff --git a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh new file mode 100755 index 0000000..585e76c --- /dev/null +++ b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug +# Description: Test for BZ#1815504 (Regression in the line information debug) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "valgrind -q date &> log" 0 + rlAssertNotGrep "Can't handle inlined call info entry with line number" log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf new file mode 100644 index 0000000..1c87a12 --- /dev/null +++ b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1852781 (Compiling with -flto and -g removes CET support) +description: | + Bug summary: Compiling with -flto and -g removes CET support + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1852781 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- binutils +duration: 15m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1852781 +extra-summary: /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support +extra-task: /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh new file mode 100755 index 0000000..84cae8f --- /dev/null +++ b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support +# Description: Test for BZ#1852781 (Compiling with -flto and -g removes CET support) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2020 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" +TESTPROG="x" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp $TESTPROG.c $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gcc -flto -c -fcf-protection -g $TESTPROG.c" + rlRun "gcc -flto -Wl,-z,cet-report=error -fcf-protection -g $TESTPROG.o &> log" + rlAssertNotGrep " missing IBT and SHSTK properties" log + rlRun "readelf --wide --notes a.out | grep IBT &> log" + rlAsserGrep "IBT, SHSTK" log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c new file mode 100644 index 0000000..64fffec --- /dev/null +++ b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c @@ -0,0 +1,8 @@ +#include + +int +main () +{ + printf ("hello\n"); + return 0; +} diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf new file mode 100644 index 0000000..1540389 --- /dev/null +++ b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1853900 (typeinfo for stdcodecvt_utf8 not found + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1853900 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- gcc-c++ +duration: 10m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1853900 +extra-summary: /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul +extra-task: /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh new file mode 100755 index 0000000..a6eb4ed --- /dev/null +++ b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul +# Description: Test for BZ#1853900 (typeinfo for stdcodecvt_utf8 +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2020 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" +TESTPROG="test.cc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp $TESTPROG $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "g++ -std=c++17 $TESTPROG &> log" + rlAssertNotGrep "hidden symbol " log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc new file mode 100644 index 0000000..075633f --- /dev/null +++ b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc @@ -0,0 +1,7 @@ +#include + +namespace fs = std::filesystem; +int main() { + fs::create_directory("sandbox"); + fs::remove_all("sandbox"); +} diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf new file mode 100644 index 0000000..8167f92 --- /dev/null +++ b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf @@ -0,0 +1,16 @@ +summary: Test for BZ#1878841 (GOMP_parallel_loop_nonmonotonic_dynamic and) +description: | + Bug summary: GOMP_parallel_loop_nonmonotonic_dynamic and GOMP_loop_nonmonotonic_dynamic_next missing + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1878841 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1878841 +extra-summary: /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and +extra-task: /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh new file mode 100755 index 0000000..83c42ef --- /dev/null +++ b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and +# Description: Test for BZ#1878841 (GOMP_parallel_loop_nonmonotonic_dynamic and) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2020 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" +TESTPROG="tst" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp $TESTPROG.c $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gcc -fopenmp $TESTPROG.c &> log" + rlAssertNotGrep "undefined reference to `GOMP_parallel_loop_nonmonotonic_dynamic`" log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c new file mode 100644 index 0000000..741559e --- /dev/null +++ b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c @@ -0,0 +1,6 @@ +#include +int main () +{ + #pragma omp parallel for schedule(dynamic) + for (int i = 0; i < 10; i++); +} diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb new file mode 100644 index 0000000..341301d --- /dev/null +++ b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb @@ -0,0 +1,2 @@ +info functions foo +q diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf new file mode 100644 index 0000000..7054cbd --- /dev/null +++ b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1893340 (Variadic arguments are missing from debugging data) +description: | + Bug summary: Variadic arguments are missing from debugging data when building with -flto + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1893340 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- gdb +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1893340 +extra-summary: /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data +extra-task: /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh new file mode 100755 index 0000000..f2dd2ca --- /dev/null +++ b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data +# Description: Test for BZ#1893340 (Variadic arguments are missing from debugging data) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp test.c b.gdb $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gcc -fPIC -shared -o libtest.so -O0 -g test.c" + rlRun "gdb -x b.gdb libtest.so > gdb.log" + rlAssertGrep "void foo(int, ...);" gdb.log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c new file mode 100644 index 0000000..3de5962 --- /dev/null +++ b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c @@ -0,0 +1,6 @@ +#include +void foo(int args, ...) { + va_list ap; + va_start(ap, args); + va_end(ap); +} diff --git a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf new file mode 100644 index 0000000..c1da31b --- /dev/null +++ b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf @@ -0,0 +1,16 @@ +summary: Test for BZ#1896093 (Compiling with -flto=auto fails if make is not) +description: | + Bug summary: Compiling with -flto=auto fails if make is not installed + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1896093 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1896093 +extra-summary: /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not +extra-task: /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not diff --git a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh new file mode 100755 index 0000000..a23ce5c --- /dev/null +++ b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not +# Description: Test for BZ#1896093 (Compiling with -flto=auto fails if make is not) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2020 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + MAKE_WAS_PRESENT=false + rpm -q make &>/dev/null && MAKE_WAS_PRESENT=true + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlRun "rpm -e --nodeps make" 0,1 + rlPhaseEnd + + rlPhaseStartTest + echo "void main() { }" | gcc -x c -flto=auto - &> log + rlAssertNotGrep "lto-wrapper: fatal error: execvp: No such file or directory" log + rlPhaseEnd + + rlPhaseStartCleanup + if $MAKE_WAS_PRESENT; then + rpm -q make &>/dev/null || rlRun "yum -y install make" + fi + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 new file mode 100644 index 0000000..8765255 --- /dev/null +++ b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 @@ -0,0 +1,5 @@ +program test_allocated + integer :: i = 4 + real(4), allocatable :: x(:) + if (.not. allocated(x)) allocate(x(i)) +end program test_allocated diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf new file mode 100644 index 0000000..d6b5ead --- /dev/null +++ b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1927579 (libgfortran seems to be missing) +description: | + Bug summary: libgfortran seems to be missing _gfortran_os_error_at + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1927579 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- gcc-gfortran +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1927579 +extra-summary: /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing +extra-task: /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh new file mode 100755 index 0000000..e635213 --- /dev/null +++ b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing +# Description: Test for BZ#1927579 (libgfortran seems to be missing) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp alloc1.f90 $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gfortran alloc1.f90" &> log + rlAssertNotGrep "alloc1.f90:(.text+0x131): undefined reference" log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf new file mode 100644 index 0000000..4cfef47 --- /dev/null +++ b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1939638 (gcc-toolset-10-libasan-devel depends on the wrong) +description: | + Bug summary: gcc-toolset-10-libasan-devel depends on the wrong libasan + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1939638 +contact: Alexandra Hájková +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- libasan +duration: 5m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1939638 +extra-summary: /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong +extra-task: /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong diff --git a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh new file mode 100755 index 0000000..1d29c6c --- /dev/null +++ b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong +# Description: Test for BZ#1939638 (gcc-toolset-10-libasan-devel depends on the wrong) +# Author: Alexandra Hájková +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "echo 'int main () { return 0; }' | gcc -xc -fsanitize=address -" &> log + rlAssertNotGrep "cannot find /usr/lib64/libasan" log + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf new file mode 100644 index 0000000..fc2414e --- /dev/null +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf @@ -0,0 +1,27 @@ +summary: Test for BZ#1960701 (Wrong-code regression starting with gcc 8.2) +description: | + Bug summary: Wrong-code regression starting with gcc 8.2 + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1960701 +contact: Vaclav Kadlcik +component: +- gcc +test: ./runtest.sh +framework: beakerlib +require: +- gcc-c++ +duration: 15m +enabled: true +tag: + - CI-Tier-1 +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1960701 +adjust: + - enabled: false + when: distro < rhel-8 and collection is not defined + continue: false + - enabled: false + when: distro ~< rhel-8.5 and collection is not defined + continue: false +extra-nitrate: TC#0610780 +extra-summary: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 +extra-task: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc new file mode 100644 index 0000000..6ebd8e0 --- /dev/null +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc @@ -0,0 +1,14 @@ +#include + +struct T { + unsigned a; + float b {8.}; +}; + +int main() +{ + T t = {1}; + std::vector tt = {{1}, {2}}; + if (t.a != 1 || t.b != 8.0f || tt[0].a != 1 || tt[0].b != 8.0f || tt[1].a != 2 || tt[1].b != 8.0f) + __builtin_abort (); +} diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh new file mode 100755 index 0000000..9dd4ea3 --- /dev/null +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 +# Description: Test for BZ#1960701 (Wrong-code regression starting with gcc 8.2) +# Author: Vaclav Kadlcik +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +# Notes on relevancy +# +# The test is applicable to GCCs supporting -std=c++17. In practice, +# * any supported toolset GCC +# * system GCC of RHEL 8+; however the respective fix landed in 8.5 +# and isn't planned for backporting. +# +# Suggested TCMS relevancy: +# distro < rhel-8 && collection !defined: False +# distro < rhel-8.5 && collection !defined: False + +GCC="${GCC:-$(type -P gcc)}" +PACKAGE=$(rpm --qf '%{name}\n' -qf $GCC | head -1) +PACKAGES="${PACKAGE} ${PACKAGE}-c++" + +rlJournalStart + rlPhaseStartSetup + rlLogInfo "PACKAGES=$PACKAGES" + rlLogInfo "COLLECTIONS=$COLLECTIONS" + rlAssertRpm --all + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp reproducer.cc $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun 'g++ -o reproducer -Wall -Wextra -std=c++17 reproducer.cc' + rlRun './reproducer' + rlPhaseEnd + + rlPhaseStartCleanup + rlRun 'popd' + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf new file mode 100644 index 0000000..c699de0 --- /dev/null +++ b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf @@ -0,0 +1,16 @@ +summary: Test for BZ#1965951 (Wrong-code regression starting with gcc 8.5) +description: | + Bug summary: Wrong-code regression starting with gcc 8.5 + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1965951 +contact: Vaclav Kadlcik +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc-c++ +duration: 15m +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1965951 +extra-summary: /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5 +extra-task: /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5 diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc new file mode 100644 index 0000000..40b0c81 --- /dev/null +++ b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc @@ -0,0 +1,12 @@ +#include +struct S1 { virtual ~S1() = default; }; +struct S2 { virtual void f1() = 0; }; +struct S3: S1, S2 { + void f1() { f2(); } + virtual void f2() = 0; +}; +struct S4: S3 { + void f2() { std::cout << "called\n"; } + using S2::f1; +}; +int main() { S4().f1(); } diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh new file mode 100755 index 0000000..d8d69d0 --- /dev/null +++ b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5 +# Description: Test for BZ#1965951 (Wrong-code regression starting with gcc 8.5) +# Author: Vaclav Kadlcik +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC="${GCC:-$(type -P gcc)}" +PACKAGE=$(rpm --qf '%{name}\n' -qf $GCC | head -1) +PACKAGES="${PACKAGE} ${PACKAGE}-c++" + +rlJournalStart + rlPhaseStartSetup + rlLogInfo "PACKAGES=$PACKAGES" + rlRun "dnf -y install $PACKAGES" 0-255 + rlAssertRpm --all + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp reproducer.cc $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun 'g++ -o reproducer reproducer.cc' + rlRun './reproducer' + rlPhaseEnd + + rlPhaseStartCleanup + rlRun 'popd' + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf new file mode 100644 index 0000000..5ce67d3 --- /dev/null +++ b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf @@ -0,0 +1,26 @@ +summary: SystemTap fails to retrieve location attribute for local variable +description: '' +contact: mcermak@redhat.com +component: + - gcc + - systemtap +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - systemtap + - kernel-devel + - kernel-headers +duration: 50m +enabled: true +tag: + - CI-Tier-1 + - STAP-EWA + - mcu_stap + - mcu_stap_6g + - mcu_stap_7g +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=576287 +extra-nitrate: TC#0062256 +extra-summary: /tools/gcc/Regression/gcc/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable +extra-task: /tools/gcc/Regression/gcc/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh new file mode 100755 index 0000000..0003300 --- /dev/null +++ b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Copyright (c) 2010 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + kernel_uname="$(uname -a | awk '{ print $3 }')" + kernel_arch="$(uname -a | awk '{ print $12 }')" + echo kernel_arch: $kernel_arch + kernel_version="$(echo ${kernel_uname} | sed 's/-/ /' | awk '{ print $1 }')" + echo kernel_version: $kernel_version + kernel_release="$(echo ${kernel_uname} | sed 's/-/ /' | awk '{ print $2 }' | sed 's/\./ /g' | awk '{ print $1,".",$2 }' | sed 's/ //g')" + echo kernel_release_1: $kernel_release + if $(echo ${kernel_release} | grep -iq PAE); then + kernel_release="$(echo ${kernel_release} | sed 's/PAE//g' | sed 's/pae//g')" + PAE="PAE-" + fi + echo kernel_release_2: $kernel_release + if rlIsRHEL 6; then + arch="${kernel_arch}-" + fi + kernel_debug="http://download.devel.redhat.com/brewroot/packages/kernel/${kernel_version}/${kernel_release}/${kernel_arch}/kernel-${PAE}debuginfo-${kernel_version}-${kernel_release}.${kernel_arch}.rpm" + kernel_debug_common="http://download.devel.redhat.com/brewroot/packages/kernel/${kernel_version}/${kernel_release}/${kernel_arch}/kernel-debuginfo-common-${arch}${kernel_version}-${kernel_release}.${kernel_arch}.rpm" + echo ">>> $kernel_debug $kernel_debug_common" + debuginfo-install -y kernel + rpmquery kernel-debuginfo || rpm -ivh ${kernel_debug} ${kernel_debug_common} + rlPhaseEnd + + rlPhaseStartTest opt-O$opt + rlRun "stap -vvvv -p2 -e 'probe kernel.function(\"sig_ignored\") {println($$parms)}' 2>&1 | grep 'variable location problem'" 1 "gcc produced good enough debuginfo w/o 'variable location problem'" + rlPhaseEnd + + rlPhaseStartCleanup + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc new file mode 100644 index 0000000..7b815cd --- /dev/null +++ b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc @@ -0,0 +1,15 @@ +template int func (void); + +template struct Foo +{ + static const unsigned int a = sizeof (T); + + //enum { b = a }; + + enum + { + c = sizeof (func < (a == 0) > ()) + }; +}; + +Foo x; diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf new file mode 100644 index 0000000..4c38d10 --- /dev/null +++ b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf @@ -0,0 +1,28 @@ +summary: Try to compile a program that has a template parameter with a boolean expression + involving a templated static constant +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template +framework: beakerlib +require: + - gcc + - gcc-c++ + - file +duration: 5m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=703059 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0111110 +extra-summary: /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template +extra-task: /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh new file mode 100755 index 0000000..8f50b77 --- /dev/null +++ b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template +# Description: Try to compile a program that has a template parameter with a boolean expression involving a templated static constant +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2011, 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GXX=${GXX:-g++} + +rlJournalStart + rlPhaseStartSetup + rlLog "GXX = $GXX" + rlLog "Installed within `rpmquery -f $(which $GXX)`" + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v f.cc $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GXX -c f.cc" + rlAssertExists "f.o" + rlRun "file f.o | grep ELF" # Basic obj file sanity check + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/unused_parameter_warning/main.fmf b/tests/Regression/unused_parameter_warning/main.fmf new file mode 100644 index 0000000..7084e32 --- /dev/null +++ b/tests/Regression/unused_parameter_warning/main.fmf @@ -0,0 +1,31 @@ +summary: Check to see if g++ throws unused parameter warnings with standard libraries + with option -Wall +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/unused_parameter_warning +framework: beakerlib +require: + - gcc-c++ + - glibc-devel + - libstdc++-devel +recommend: + - gcc44-c++ + - glibc-devel.ppc64 + - glibc-devel.ppc + - libstdc++43-devel.ppc + - libstdc++44-devel.ppc + - libstdc++-devel.ppc +duration: 10m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=201342 +tag: + - CI-Tier-1 + - Tier1 + - dts_stable +extra-nitrate: TC#0062265 +extra-summary: /tools/gcc/c++/unused_parameter_warning +extra-task: /tools/gcc/c++/unused_parameter_warning diff --git a/tests/Regression/unused_parameter_warning/runtest.sh b/tests/Regression/unused_parameter_warning/runtest.sh new file mode 100755 index 0000000..4a5d2fb --- /dev/null +++ b/tests/Regression/unused_parameter_warning/runtest.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# g++ - check for unused parameter warning +# expected exit code is 0 +# +# Author: Sachin Prabhu +# Maintainer: Marek Polacek + + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-c++ grep) + +GXX=${GXX:-g++} + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlLog "GXX = $GXX" + rlLog "Installed within `rpmquery -f $(which $GXX)`" + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v test.cpp $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GXX -W -Wall -o test.bin test.cpp &> output" + cat output + rlRun "grep -E 'warning:\W+unused\W+parameter' -q output" 1 "'warning: unused parameter' not present" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/unused_parameter_warning/test.cpp b/tests/Regression/unused_parameter_warning/test.cpp new file mode 100644 index 0000000..15d375b --- /dev/null +++ b/tests/Regression/unused_parameter_warning/test.cpp @@ -0,0 +1,2 @@ +#include +int main() {} diff --git a/tests/Sanity/compile-rpm/main.fmf b/tests/Sanity/compile-rpm/main.fmf new file mode 100644 index 0000000..d6c5faa --- /dev/null +++ b/tests/Sanity/compile-rpm/main.fmf @@ -0,0 +1,45 @@ +summary: Compile a Red Hat RPM package. +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/compile-rpm +framework: beakerlib +require: + - autoconf + - bison + - dejagnu + - elfutils-libelf-devel + - expat-devel + - flex + - gcc + - gdb + - glibc-devel + - grep + - libselinux-devel + - make + - mpfr-devel + - ncurses-devel + - python-devel + - readline-devel + - rpm-build + - rpm-devel + - texinfo + - xz-devel + - yum-utils + - zlib-devel +duration: 240m +adjust: + - require+: + - ncurses-devel.i686 + - ncurses-devel.x86_64 + when: arch == x86_64 + - enabled: false + # Too "heavy" for Fedora CI (for now) + when: distro == fedora and trigger is defined + continue: false +enabled: true +extra-nitrate: TC#0142522 +extra-summary: /tools/gcc/Sanity/compile-rpm +extra-task: /tools/gcc/Sanity/compile-rpm diff --git a/tests/Sanity/compile-rpm/runtest.sh b/tests/Sanity/compile-rpm/runtest.sh new file mode 100755 index 0000000..5f68e75 --- /dev/null +++ b/tests/Sanity/compile-rpm/runtest.sh @@ -0,0 +1,99 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/compile-rpm +# Description: Compile a Red Hat RPM package. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC=${GCC:-gcc} + +# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset. +if $( echo `which gcc` | grep -qE '/opt/rh/' ); then + UNDER_DTS="true" + # Set the actual version of DTS + DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` +fi + +rlJournalStart + rlPhaseStartSetup + # Work around troubles with buildroot packages being out-of-sync + if rlIsRHEL; then + rlMountRedhat + for i in libipt source-highlight libbabeltrace; do + rpm -q $i &>/dev/null || rlRun "yum -y install $i" 0-255 + rpm -q ${i}-devel &>/dev/null || rlRun "yum -y install ${i}-devel" 0-255 + d=/mnt/redhat/brewroot/packages/$i + if rpm -q $i &>/dev/null && ! rpm -q ${i}-devel &>/dev/null; then + if [[ -e /mnt/redhat/brewroot/packages/$i ]]; then + d=/mnt/redhat/brewroot/packages/$i + else + d=/mnt/redhat/brewroot/packages/${i#lib} + fi + rlRun "yum -y install $d/$(rpm -q --qf='%{VERSION}/%{RELEASE}/%{ARCH}' $i)/${i}-devel-$(rpm -q --qf='%{VERSION}-%{RELEASE}.%{ARCH}' $i).rpm" + fi + done + fi + + rlRun "TmpDir=\$(mktemp -d)" + rlRun "pushd $TmpDir" + + if [ -z ${UNDER_DTS} ]; then + rlFetchSrcForInstalled gdb || yumdownloader --source gdb + else + rlFetchSrcForInstalled $DTS-gdb || yumdownloader --source $DTS-gdb + fi + + if [ -z ${UNDER_DTS} ]; then + srpm=$(rpmquery gdb --queryformat=%{NAME}-%{VERSION}-%{RELEASE})".src.rpm" + else + srpm=$(rpmquery $DTS-gdb --queryformat=%{NAME}-%{VERSION}-%{RELEASE})".src.rpm" + fi + rlRun "rpm -Uvh $srpm" + spec_dir=$(rpm --eval=%_specdir) + build_dir=$(rpm --eval=%_builddir) + + if [ -z ${UNDER_DTS} ]; then + pkg_dir=$(rpmquery gdb} --queryformat=%{NAME}-%{VERSION}) + else + pkg_dir=$(rpmquery $DTS-gdb} --queryformat=%{NAME}-%{VERSION}) + fi + + yum-builddep -y $spec_dir/gdb.spec + rlPhaseEnd + + rlPhaseStartTest + rlRun "CC=$GCC rpmbuild -bb $spec_dir/gdb.spec &> BUILD_LOG" + test $? -eq 0 || tail -n 20 BUILD_LOG + rlPhaseEnd + + rlPhaseStartCleanup + rlBundleLogs "Build-log" BUILD_LOG + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz b/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz new file mode 100644 index 0000000..d528f03 Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/bins_i686.tar.gz b/tests/Sanity/libitm-smoke/bins_i686.tar.gz new file mode 100644 index 0000000..ce0e948 Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_i686.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz b/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz new file mode 100644 index 0000000..0589c6a Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz b/tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz new file mode 100644 index 0000000..b8e9215 Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/bins_s390x.tar.gz b/tests/Sanity/libitm-smoke/bins_s390x.tar.gz new file mode 100644 index 0000000..742a917 Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_s390x.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/bins_x86_64.tar.gz b/tests/Sanity/libitm-smoke/bins_x86_64.tar.gz new file mode 100644 index 0000000..e884185 Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_x86_64.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/main.fmf b/tests/Sanity/libitm-smoke/main.fmf new file mode 100644 index 0000000..77c1763 --- /dev/null +++ b/tests/Sanity/libitm-smoke/main.fmf @@ -0,0 +1,34 @@ +summary: Just runs prebuilt binaries +description: | + Just running prebuilt binaries that require libitm. + This test is designed to run in gcc-libraries CI. we + cannot build anything on our own, since we don't have + devtoolset's gcc and -devel libraries. + + This should run OK on RHEL-6 and RHEL-7, currently all + arches. + + The sources of the tests are in Sanity/libitm-sanity. + !!! THIS TEST IS INTENTIONALLY NOT IN gcc General PLAN !!! +contact: Michael Petlan +component: + - gcc + - gcc-libraries +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - libitm +recommend: + - gcc-libraries +duration: 5m +enabled: true +tag: + - CI-Tier-1 +adjust: + - enabled: false + when: distro == rhel-6 and arch == s390x + continue: false +extra-nitrate: TC#0539542 +extra-summary: /tools/gcc/Sanity/libitm-smoke +extra-task: /tools/gcc/Sanity/libitm-smoke diff --git a/tests/Sanity/libitm-smoke/runtest.sh b/tests/Sanity/libitm-smoke/runtest.sh new file mode 100755 index 0000000..8c78f78 --- /dev/null +++ b/tests/Sanity/libitm-smoke/runtest.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/libitm-smoke +# Description: Just runs prebuilt binaries +# Author: Michael Petlan +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +# Relevant for any system with libitm binary compatible with the attached +# binaries. +# Suggested TCMS relevancy: +# distro = rhel-6 && arch = s390x: False + +PACKAGE="gcc" +REALLY_WANT_TO_RUN="true" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + if [ "$BASEOS_CI" = "true" ]; then + # in CI, we need to be able to skip this testcase + # in case libitm is not a part of gcc-libraries + rlCheckRpm "libitm" || REALLY_WANT_TO_RUN="false" + else + rlCheckRpm "libitm" || rlRun "yum install -y libitm" 0 "Installing missing libitm" + rlAssertRpm "libitm" + fi + TARBALL="bins_`arch`.tar.gz" + if [ ! -f $TARBALL ]; then + rlDie "We do not have binaries for your arch (`arch`)" + fi + rlRun "zcat $TARBALL | tar x" + rlRun "pushd bins" + rlPhaseEnd + + if [ "$REALLY_WANT_TO_RUN" = "true" ]; then + rlPhaseStartTest + for i in T_*; do + rlRun "./$i" + done + rlPhaseEnd + else + rlPhaseStartTest + rlPass "SKIPPING THIS TEST -- libitm is probably not shipped within current gcc-libraries" + rlPhaseEnd + fi + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -rf bins" 0 "Removing the stuff we created" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/rebuild-binutils/main.fmf b/tests/Sanity/rebuild-binutils/main.fmf new file mode 100644 index 0000000..2d7e5d5 --- /dev/null +++ b/tests/Sanity/rebuild-binutils/main.fmf @@ -0,0 +1,70 @@ +summary: Rebuild binutils. +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/rebuild-binutils +framework: beakerlib +require: + - autoconf + - automake + - binutils + - gcc + - glibc + - glibc-devel + - glibc-static + - libstdc++ + - libstdc++-devel + - libstdc++-static + - perl + - rpm-build + - sharutils + - texinfo + - yum-utils + - zlib-devel + - zlib-static +recommend: + - glibc-devel.ppc + - glibc-devel.s390 + - glibc-static.ppc + - glibc-static.s390 + - libgcc.ppc + - libgcc.s390 + - libstdc++-devel.ppc + - libstdc++-devel.s390 + - libstdc++.ppc + - libstdc++.s390 + - libstdc++-static.ppc + - libstdc++-static.s390 + - zlib-devel.ppc + - zlib-static.ppc + - dnf-utils + - yum-utils +duration: 3h +enabled: true +adjust: + - require+: + - glibc-devel.i686 + - glibc-devel.x86_64 + - glibc-static.i686 + - glibc-static.x86_64 + - libgcc.i686 + - libgcc.x86_64 + - libstdc++-devel.i686 + - libstdc++-devel.x86_64 + - libstdc++.i686 + - libstdc++.x86_64 + - libstdc++-static.i686 + - libstdc++-static.x86_64 + when: arch == x86_64 + - enabled: false + when: distro == rhel-6 and collection is defined + continue: false + - enabled: false + # Too "heavy" for Fedora CI (for now) + when: distro == fedora and trigger is defined + continue: false +extra-nitrate: TC#0147459 +extra-summary: /tools/gcc/Sanity/rebuild-binutils +extra-task: /tools/gcc/Sanity/rebuild-binutils diff --git a/tests/Sanity/rebuild-binutils/runtest.sh b/tests/Sanity/rebuild-binutils/runtest.sh new file mode 100755 index 0000000..714ac4d --- /dev/null +++ b/tests/Sanity/rebuild-binutils/runtest.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/rebuild-binutils +# Description: Rebuild binutils. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +# The test is expected to fail in devtoolset-* on RHEL-6 because of +# the "Unresolvable `R_X86_64_NONE` relocation" family of bugs, e.g. +# https://bugzilla.redhat.com/show_bug.cgi?id=1545386 +# They have been fixed for both the base and devtoolset binutils +# on RHEL-7 but on RHEL-6, it was just the base binutils. + +GCC=${GCC:-gcc} + +# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset. +if $( echo `which gcc` | grep -qE '/opt/rh/' ); then + UNDER_DTS="true" + # Set the actual version of DTS + DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` +fi + +rlJournalStart + rlPhaseStartSetup + rlLog "Using GCC: `rpmquery -f $(which $GCC)`" + rlRun "rpmquery -a | grep -e yum-utils -e dnf-utils" 0 "YUM or DNF utils are installed" + rlRun "TmpDir=\$(mktemp -d)" + rlRun "pushd $TmpDir" + + if [ -z ${UNDER_DTS} ]; then + rlFetchSrcForInstalled binutils || yumdownloader --source binutils + srpm=$(find binutils*.src.rpm | tail -n1) + else + rlFetchSrcForInstalled $DTS-binutils || yumdownloader --source $DTS-binutils + srpm=$(find $DTS-binutils*.src.rpm | tail -n1) + fi + rlRun "rpm -Uvh $srpm" + spec_dir=$(rpm --eval=%_specdir) + yum-builddep -y $spec_dir/binutils.spec + rlPhaseEnd + + rlPhaseStartTest + if [ "$(uname -i)" == "ppc64" ]; then + if rlIsRHEL 6; then + target='--target=ppc64' + else + target='--target=ppc' + fi + fi + if [ "$(uname -i)" == "i386" ]; then + target='--target=i686' + fi + + rlRun "setsebool allow_execmod 1" + rlRun "CC=$GCC rpmbuild -bb $target --clean $spec_dir/binutils.spec &> BUILD_LOG" || ( echo "========== BUILD_LOG tail ==========" ; tail -n 20 BUILD_LOG ) + rlRun "setsebool allow_execmod 0" + rlPhaseEnd + + rlPhaseStartCleanup + rlBundleLogs "Build-log" BUILD_LOG + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/rebuild-glibc/main.fmf b/tests/Sanity/rebuild-glibc/main.fmf new file mode 100644 index 0000000..53eee30 --- /dev/null +++ b/tests/Sanity/rebuild-glibc/main.fmf @@ -0,0 +1,76 @@ +description: | + Rebuild current glibc. +summary: Rebuild glibc +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/rebuild-glibc +framework: beakerlib +require: + - audit-libs-devel + - binutils + - gcc + - gd-devel + - glibc-devel + - glibc-static + - glibc-utils + - libcap-devel + - libgcc + - libpng-devel + - libstdc++ + - libstdc++-devel + - libstdc++-static + - libXpm-devel + - nspr-devel + - nss-devel + - nss-softokn-devel + - nss-util-devel + - rpm-build + - systemtap-sdt-devel + - yum-utils +recommend: + - glibc-devel.ppc + - glibc-devel.s390 + - glibc-static.ppc + - glibc-static.s390 + - libgcc.ppc + - libgcc.s390 + - libstdc++-devel.ppc + - libstdc++-devel.s390 + - libstdc++.ppc + - libstdc++.s390 + - libstdc++-static.ppc + - libstdc++-static.s390 + - dnf-utils + - yum-utils +duration: 18h +enabled: true +tag: + - NoDTS + - rhel8-buildroot +adjust: + - require+: + - glibc-devel.i686 + - glibc-devel.x86_64 + - glibc-static.i686 + - glibc-static.x86_64 + - libgcc.i686 + - libgcc.x86_64 + - libstdc++-devel.i686 + - libstdc++-devel.x86_64 + - libstdc++.i686 + - libstdc++.x86_64 + - libstdc++-static.i686 + - libstdc++-static.x86_64 + when: arch == x86_64 + - enabled: false + when: collection is defined + continue: false + - enabled: false + # Too "heavy" for Fedora CI (for now) + when: distro == fedora and trigger is defined + continue: false +extra-nitrate: TC#0035677 +extra-summary: /tools/gcc/Sanity/rebuild-glibc +extra-task: /tools/gcc/Sanity/rebuild-glibc diff --git a/tests/Sanity/rebuild-glibc/runtest.sh b/tests/Sanity/rebuild-glibc/runtest.sh new file mode 100755 index 0000000..52255c5 --- /dev/null +++ b/tests/Sanity/rebuild-glibc/runtest.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Michal Nowak +# Rewrite: Marek Polacek + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +cpu_good_for_make_check () { + # glibc can create several alternative CPU-specific bits that are selected + # in runtime. However the "make check" phase tries to test all of them and + # fails when testing a more "advanced" binary than the SUT's CPU. In such + # case we'd want to skip "make check" to prevent "rpmbuild" from a certain + # failure. + if rlIsRHEL '>=8' && [[ $(arch) = ppc64le ]] && grep -q 'POWER[2-8]' /proc/cpuinfo; then + rlLogInfo 'RHEL8+ on BUILD_LOG" + test $? -eq 0 || tail -n 20 BUILD_LOG + rlPhaseEnd + + rlPhaseStartCleanup + rlBundleLogs "Build-log" BUILD_LOG + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/test-m32-m64-options/clear_cache.c b/tests/Sanity/test-m32-m64-options/clear_cache.c new file mode 100644 index 0000000..b10479f --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/clear_cache.c @@ -0,0 +1,7 @@ +int +main (void) +{ + char *mem = __builtin_alloca (40); + __builtin___clear_cache (mem, mem + 40); + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/cpp11.cpp b/tests/Sanity/test-m32-m64-options/cpp11.cpp new file mode 100644 index 0000000..649daec --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/cpp11.cpp @@ -0,0 +1,78 @@ +template +class X +{ + T p; +public: + template auto f() -> decltype(+p) { } +}; + +struct A +{ + int i = 42; +}; + +struct B +{ + int i = 42; + B() { } + B(int i): i(i) { } +}; + +template +struct C +{ + T m = t; +}; + +template +struct D +{ + T m = t; + D() { } + D(T m):m(m) { } +}; + +struct complex +{ + typedef float value_type; + typedef __complex__ float _ComplexT; + + constexpr complex(_ComplexT __z) : _M_value(__z) { } + + constexpr complex(float __r = 0.0f, float __i = 0.0f) + : _M_value(__r + __i * 1.0f) { } + +private: + _ComplexT _M_value; +}; + +constexpr complex c1; + +int +main (void) +{ + X().f(); + A a1; + if (a1.i != 42) return 1; + A a2{}; + if (a2.i != 42) return 2; + A a3[1]; + if (a3[0].i != 42) return 3; + + B b1; + if (b1.i != 42) return 3; + B b2 (24); + if (b2.i != 24) return 4; + + C c1; + if (c1.m != 3) return 5; + C c2 {}; + if (c2.m != 5) return 6; + + D d1; + if (d1.m != 3) return 7; + D d2 (5) ; + if (d2.m != 5) return 8; + + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/hello.c b/tests/Sanity/test-m32-m64-options/hello.c new file mode 100644 index 0000000..98a53b6 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/hello.c @@ -0,0 +1,8 @@ +#include + +int +main (void) +{ + puts ("Hello World!"); + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/hello.cpp b/tests/Sanity/test-m32-m64-options/hello.cpp new file mode 100644 index 0000000..0f2234e --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/hello.cpp @@ -0,0 +1,7 @@ +#include + +int +main (void) +{ + std::cout << "Hello, world!\n"; +} diff --git a/tests/Sanity/test-m32-m64-options/hello.f90 b/tests/Sanity/test-m32-m64-options/hello.f90 new file mode 100644 index 0000000..afabbb2 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/hello.f90 @@ -0,0 +1,3 @@ + program hello + print *, "Hello World!" + end program hello diff --git a/tests/Sanity/test-m32-m64-options/lambda-template.C b/tests/Sanity/test-m32-m64-options/lambda-template.C new file mode 100644 index 0000000..b4db3b8 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/lambda-template.C @@ -0,0 +1,41 @@ +// { dg-options -std=c++0x } +// { dg-do run } + +extern "C" void abort(); + +template +auto apply (T t) -> decltype (t()) +{ + return t(); +} + +template +T f(T t) +{ + T t2 = t; + if (t != [=]()->T { return t; }()) + abort (); + if (t != [=] { return t; }()) + abort (); + if (t != [=] { return t2; }()) + abort (); + if (t != [&] { return t; }()) + abort (); + if (t != apply([=]{return t;})) + abort (); + + int i; + [&] (int a) { return a+i+t; } (0); + [&] (int a) -> decltype(a) { return a+i+t; } (0); + [&] (int a) -> decltype(i) { return a+i+t; } (0); + [&] (int a) -> decltype(t) { return a+i+t; } (0); + [&] (int a) -> decltype(a+i) { return a+i+t; } (0); + [&] (int a) -> decltype(a+t) { return a+i+t; } (0); + [&] (int a) -> decltype(i+t) { return a+i+t; } (0); + [&] (int a) -> decltype(a+i+t) { return a+i+t; } (0); +} + +int main() +{ + f(0xbeef); +} diff --git a/tests/Sanity/test-m32-m64-options/main.fmf b/tests/Sanity/test-m32-m64-options/main.fmf new file mode 100644 index 0000000..732b996 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/main.fmf @@ -0,0 +1,51 @@ +summary: Try -m32 and -m64 options. +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/test-m32-m64-options +framework: beakerlib +require: + - gcc + - gcc-c++ + - gcc-gfortran + - glibc-common + - libgcc + - libgomp + - libgfortran + - libstdc++ + - libstdc++-devel + - glibc-devel + - libitm +recommend: + - libgfortran44.i686 + - libgfortran44.x86_64 + - libgfortran4.i686 + - libgfortran4.x86_64 +duration: 10m +enabled: true +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1113429 +adjust: + - enabled: false + when: arch == ia64, ppc64, s390, s390x + continue: false + - require+: + - glibc-devel.i686 + - glibc-devel.x86_64 + - libgcc.i686 + - libgcc.x86_64 + - libgfortran.i686 + - libgfortran.x86_64 + - libgomp.i686 + - libgomp.x86_64 + - libitm.i686 + - libitm.x86_64 + - libstdc++.i686 + - libstdc++.x86_64 + when: arch == x86_64 + continue: false +extra-nitrate: TC#0197178 +extra-summary: /tools/gcc/Sanity/test-m32-m64-options +extra-task: /tools/gcc/Sanity/test-m32-m64-options diff --git a/tests/Sanity/test-m32-m64-options/omphello.c b/tests/Sanity/test-m32-m64-options/omphello.c new file mode 100644 index 0000000..85b591f --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/omphello.c @@ -0,0 +1,24 @@ +#include +#include +#include + +int +main (void) +{ + int th_id; + int nthreads; + + #pragma omp parallel private(th_id) + { + th_id = omp_get_thread_num (); + printf ("Hello World from thread %d\n", th_id); + + #pragma omp barrier + if (th_id == 0) + { + nthreads = omp_get_num_threads (); + printf ("There are %d threads\n", nthreads); + } + } + return EXIT_SUCCESS; +} diff --git a/tests/Sanity/test-m32-m64-options/quad.c b/tests/Sanity/test-m32-m64-options/quad.c new file mode 100644 index 0000000..f9e5ef1 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/quad.c @@ -0,0 +1,38 @@ +#include +#include +#include + +int +main (void) +{ + __float128 r = strtoflt128 ("1.23456789", NULL); + + int prec = 20; + int width = 46; + char buf[128]; + + r = 2.0q; + r = sqrtq (r); + int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", width, r); + if ((size_t) n < sizeof buf) + /* Prints: +1.41421356237309504880e+00. */ + printf ("%s\n", buf); + quadmath_snprintf (buf, sizeof buf, "%Qa", r); + if ((size_t) n < sizeof buf) + /* Prints: 0x1.6a09e667f3bcc908b2fb1366ea96p+0. */ + printf ("%s\n", buf); + n = quadmath_snprintf (NULL, 0, "%+-#46.*Qe", prec, r); + if (n > -1) + { + char *str = malloc (n + 1); + if (str) + { + quadmath_snprintf (str, n + 1, "%+-#46.*Qe", prec, r); + /* Prints: +1.41421356237309504880e+00. */ + printf ("%s\n", str); + } + free (str); + } + + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/runtest.sh b/tests/Sanity/test-m32-m64-options/runtest.sh new file mode 100755 index 0000000..15e99af --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/runtest.sh @@ -0,0 +1,213 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/test-m32-m64-options +# Description: Try -m32 and -m64 options. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# This is for Toolset. +# +# In this test, we try to compile and run programs using -m32 and -m64. +# We compile C, C++ and Fortran Hello World programs. Also, there are two +# proglets which are exercising some C++11 features. Furthermore, we try +# -fgnu-tm, -fopenmp options. We also use libquadmath a little bit. +# We call a function from libgcc. We also use the __thread keyword. +# Everything should be ok when running under e.g.: +# scl enable devtoolset-1.0 bash +# Note, that gfortran is not a part of 1.0 release. + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-c++ gcc-gfortran glibc-common libgcc libgomp libgfortran glibc-devel libitm) + +PACKAGES_X86_64=(libgomp libgfortran glibc-devel libgcc libitm) + +# Choose the compiler. +GCC=${GCC:-gcc} +GXX=${GXX:-g++} +GFORTRAN=${GFORTRAN:-gfortran} + +PACKAGE=$GCC + +# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset +if $( echo `which gcc` | grep -qE '/opt/rh/' ); then + UNDER_DTS="true" + # Set the actual version of DTS + DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` +fi + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rpm -q "$p" || yum install -y $p + rlAssertRpm "$p" + done; unset p + yum update -y libitm # this is a hack, since libitm is a troublemaker + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libitm.`rlGetSecondaryArch`" || yum install -y libitm.`rlGetSecondaryArch` + rlAssertRpm "libitm.`rlGetSecondaryArch`" + fi + + rlCheckRpm "libstdc++-devel.`rlGetPrimaryArch`" || yum install -y libstdc++-devel.`rlGetPrimaryArch` + rlAssertRpm "libstdc++-devel.`rlGetPrimaryArch`" + # RHEL-8 CI debugging hack (to be removed when not needed): + rlRun "rpmquery -l libstdc++-devel.`rlGetPrimaryArch` | grep -e bits/c++config" + rlRun "rpmquery -l libstdc++-devel.`rlGetPrimaryArch` | grep -e iostream" + + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libitm.`rlGetSecondaryArch`" || yum install -y libitm.`rlGetSecondaryArch` + rlAssertRpm "libitm.`rlGetSecondaryArch`" + fi + + if [ ! -z ${UNDER_DTS} ]; then + rlCheckRpm "$DTS-libstdc++-devel" || yum install -y $DTS-libstdc++-devel + rlAssertRpm "$DTS-libstdc++-devel" + if [ "`arch`" = 'x86_64' ]; then + rlCheckRpm "$DTS-libquadmath-devel" || yum install -y $DTS-libquadmath-devel + rlAssertRpm "$DTS-libquadmath-devel" + fi + if rlIsRHEL '<=7'; then # no libgfortran[45] on RHEL8+ + rlCheckRpm "libgfortran4" || yum install -y libgfortran4 + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libgfortran4.`rlGetSecondaryArch`" || yum install -y libgfortran4.`rlGetSecondaryArch` + rlAssertRpm "libgfortran4.`rlGetSecondaryArch`" + fi + rlCheckRpm "libgfortran5" || yum install -y libgfortran5 + rlAssertRpm "libgfortran5" && yum -y update libgfortran5 + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libgfortran5.`rlGetSecondaryArch`" || yum install -y libgfortran5.`rlGetSecondaryArch` + rlAssertRpm "libgfortran5.`rlGetSecondaryArch`" + fi + fi + fi + + # Check whether on rhel6 x86_64 i686-packages are installed too. + # On rhel5 i386-packages should be already installed. + if [ "$(uname -i)" == "x86_64" ]; then + for pack in "${PACKAGES_X86_64[@]}"; do + rpm -q ${pack}.i?86 || yum install -y ${pack}.i?86 + done; unset pack + + if [ ! -z ${UNDER_DTS} ]; then + yum install -y $DTS-libstdc++-devel.i?86 + yum install -y $DTS-libquadmath-devel.i?86 + fi + fi + + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + # We need some files. + rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c \ + clear_cache.c omphello.c lambda-template.C cpp11.cpp $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartSetup "Showing compiler versions" + for compiler in $GCC $GXX $GFORTRAN + do + rlLog "Version of compiler: $compiler" + eval "$compiler --version 2>&1" | while read line + do + rlLog " $line" + done + done + rlPhaseEnd + +ARCH="$(uname -i)" +case "$ARCH" in + "aarch64") export SWITCHES="-mlittle-endian" # we don't have -m64, so let's use some dummy switch that is enabled by default + ;; + "i386") export SWITCHES="-m32" + ;; + "ppc64") export SWITCHES="-m32 -m64" + ;; + "ppc64le") export SWITCHES="-m64" + ;; + "s390x") export SWITCHES="-m31 -m64" + ;; + "x86_64") export SWITCHES="-m32 -m64" + ;; +esac + +# Always try both -m32 and -m64. +for m in $SWITCHES; do + rlPhaseStartTest "Compile and run [$m]" + rlRun "$GCC $m hello.c -o hello_c" + rlRun "./hello_c" + + rlRun "$GXX $m hello.cpp -o hello_cpp" + rlRun "./hello_cpp" + + # Now try a few C++11 features. + $GXX -xc++ -std=c++11 - <<< "int main(){}" + if test $? -eq 0; then + rlRun "$GXX $m -std=c++11 lambda-template.C -o lambda" + rlRun "./lambda" + + rlRun "$GXX $m -std=c++11 cpp11.cpp -o cpp11" + rlRun "./cpp11" + fi + + rlRun "$GFORTRAN $m hello.f90 -o hello_fortran" + rlRun "./hello_fortran" + + # TM support is GCC >=4.7 only. + $GCC -xc -O2 -std=gnu99 -fgnu-tm - <<< "int main(){}" + if test $? -eq 0; then + rlRun "$GCC $m -O2 -std=gnu99 -fgnu-tm tm.c -o tm" + rlRun "./tm" + fi + + # Test OpenMP. + rlRun "$GCC $m omphello.c -O2 -std=gnu99 -fopenmp -o omp" + rlRun "./omp" + + # Test __thread. + rlRun "$GCC $m thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr" + rlRun "./thr" + + # Now test some libquadmath stuff (__float128 support). + # libquadmath is mising on RHEL machines, usually. + # But with DTS, this should be available. + if [ ! -z ${UNDER_DTS} ]; then + if [ "`arch`" = 'x86_64' ]; then + rlRun "$GCC $m quad.c -O2 -std=gnu99 -lquadmath -o quad -lm" + rlRun "./quad" + else + rlLog "quadmath test skipped (needs x86_64)" + fi + fi + + # And now something from libgcc, e.g. __builtin___clear_cache. + rlRun "$GCC $m clear_cache.c -O2 -std=gnu99 -o cache" + rlRun "./cache" + rlPhaseEnd +done; unset m + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/test-m32-m64-options/thr-init-2.c b/tests/Sanity/test-m32-m64-options/thr-init-2.c new file mode 100644 index 0000000..5b70dd2 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/thr-init-2.c @@ -0,0 +1,20 @@ +extern void abort() ; + +static __thread int fstat ; +static __thread int fstat = 1; + +int test_code(int b) +{ + fstat += b ; + return fstat; +} + +int main (int ac, char *av[]) +{ + int a = test_code(1); + + if ((a != 2) || (fstat != 2)) + abort () ; + + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/tm.c b/tests/Sanity/test-m32-m64-options/tm.c new file mode 100644 index 0000000..92b90db --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/tm.c @@ -0,0 +1,34 @@ +extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe)); + +static int __attribute__((transaction_safe)) +something (void) +{ + return 0; +} + +struct large { int foo[500]; }; + +int +main (void) +{ + int *p; + struct large *lp; + + __transaction_atomic { + p = malloc (sizeof (*p) * 100); + lp = malloc (sizeof (*lp) * 100); + + /* No instrumentation necessary; P and LP are transaction local. */ + p[5] = 123; + lp->foo[66] = 123; + + if (something ()) + __transaction_cancel; + } + + __transaction_relaxed { + ++p[5]; + } + + return ((p[5] == 124) ? 0 : 1); +} diff --git a/tests/fedora-flags/hello.c b/tests/fedora-flags/hello.c new file mode 100644 index 0000000..51b259b --- /dev/null +++ b/tests/fedora-flags/hello.c @@ -0,0 +1,5 @@ +#include + +void hello() { + printf("Hello World\n"); +} diff --git a/tests/fedora-flags/hello.cpp b/tests/fedora-flags/hello.cpp new file mode 100644 index 0000000..400612b --- /dev/null +++ b/tests/fedora-flags/hello.cpp @@ -0,0 +1,5 @@ +#include + +void hello() { + std::cout << "Hello World\n"; +} diff --git a/tests/fedora-flags/main.c b/tests/fedora-flags/main.c new file mode 100644 index 0000000..1a3455d --- /dev/null +++ b/tests/fedora-flags/main.c @@ -0,0 +1,6 @@ +void hello(); + +int main(int argc, char **argv) { + hello(); + return 0; +} diff --git a/tests/fedora-flags/main.cpp b/tests/fedora-flags/main.cpp new file mode 100644 index 0000000..1a3455d --- /dev/null +++ b/tests/fedora-flags/main.cpp @@ -0,0 +1,6 @@ +void hello(); + +int main(int argc, char **argv) { + hello(); + return 0; +} diff --git a/tests/fedora-flags/main.fmf b/tests/fedora-flags/main.fmf new file mode 100644 index 0000000..43934a7 --- /dev/null +++ b/tests/fedora-flags/main.fmf @@ -0,0 +1,10 @@ +summary: Test compiling with the Fedora C/CXX flags. +description: '' +component: + - gcc +test: ./runtest.sh +require: + - annobin-annocheck + - gcc + - gcc-c++ + - redhat-rpm-config diff --git a/tests/fedora-flags/runtest.sh b/tests/fedora-flags/runtest.sh new file mode 100755 index 0000000..01b656b --- /dev/null +++ b/tests/fedora-flags/runtest.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -ex + +default_cflags=$(rpm -E '%{build_cflags}') +default_cxxflags=$(rpm -E '%{build_cxxflags}') +default_ldflags=$(rpm -E '%{build_ldflags}') + +cflags=$(rpm -D '%toolchain gcc' -E '%{build_cflags}') +cxxflags=$(rpm -D '%toolchain gcc' -E '%{build_cxxflags}') +ldflags=$(rpm -D '%toolchain gcc' -E '%{build_ldflags}') + +test "$default_cflags" = "$cflags" +test "$default_cxxflags" = "$cxxflags" +test "$default_ldflags" = "$ldflags" + +gcc $cflags -o hello.o -c hello.c +annocheck hello.o +gcc $cflags -o main.o -c main.c +gcc $ldflags -o hello main.o hello.o +annocheck hello +./hello | grep "Hello World" + +g++ $cxxflags -o hello-cpp.o -c hello.cpp +annocheck hello-cpp.o +g++ $cxxflags -o main-cpp.o -c main.cpp +g++ $ldflags -o hello-cpp main-cpp.o hello-cpp.o +annocheck hello-cpp +./hello-cpp | grep "Hello World" diff --git a/tests/smoke-test/Makefile b/tests/smoke-test/Makefile new file mode 100644 index 0000000..fb46790 --- /dev/null +++ b/tests/smoke-test/Makefile @@ -0,0 +1,65 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/gcc/Sanity/smoke-test +# Description: Basic smoke test. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/gcc/Sanity/smoke-test +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE hello.c hello.f90 hello.cpp tm.c quad.c omphello.c thr-init-2.c clear_cache.c + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Marek Polacek " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Basic smoke test." >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 10m" >> $(METADATA) + @echo "RunFor: gcc" >> $(METADATA) + @echo "RunFor: devtoolset-1.0-gcc" >> $(METADATA) + @echo "Requires: gcc gcc-c++ gcc-gfortran glibc-common glibc-devel" >> $(METADATA) + @echo "Requires: libquadmath libquadmath-devel libgomp libgcc libstdc++-devel" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/smoke-test/PURPOSE b/tests/smoke-test/PURPOSE new file mode 100644 index 0000000..912f7b4 --- /dev/null +++ b/tests/smoke-test/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /tools/gcc/Sanity/smoke-test +Description: Basic smoke test. +Author: Marek Polacek diff --git a/tests/smoke-test/clear_cache.c b/tests/smoke-test/clear_cache.c new file mode 100644 index 0000000..b10479f --- /dev/null +++ b/tests/smoke-test/clear_cache.c @@ -0,0 +1,7 @@ +int +main (void) +{ + char *mem = __builtin_alloca (40); + __builtin___clear_cache (mem, mem + 40); + return 0; +} diff --git a/tests/smoke-test/hello.c b/tests/smoke-test/hello.c new file mode 100644 index 0000000..4096e11 --- /dev/null +++ b/tests/smoke-test/hello.c @@ -0,0 +1,7 @@ +#include + +int +main (void) +{ + puts ("Hello World!"); +} diff --git a/tests/smoke-test/hello.cpp b/tests/smoke-test/hello.cpp new file mode 100644 index 0000000..0f2234e --- /dev/null +++ b/tests/smoke-test/hello.cpp @@ -0,0 +1,7 @@ +#include + +int +main (void) +{ + std::cout << "Hello, world!\n"; +} diff --git a/tests/smoke-test/hello.f90 b/tests/smoke-test/hello.f90 new file mode 100644 index 0000000..afabbb2 --- /dev/null +++ b/tests/smoke-test/hello.f90 @@ -0,0 +1,3 @@ + program hello + print *, "Hello World!" + end program hello diff --git a/tests/smoke-test/main.fmf b/tests/smoke-test/main.fmf new file mode 100644 index 0000000..3710ca3 --- /dev/null +++ b/tests/smoke-test/main.fmf @@ -0,0 +1,22 @@ +summary: Basic smoke test. +description: '' +contact: +- Marek Polacek +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- gcc-c++ +- gcc-gfortran +- glibc-common +- glibc-devel +- libquadmath +- libquadmath-devel +- libgomp +- libgcc +- libstdc++-devel +duration: 10m +extra-summary: /tools/gcc/Sanity/smoke-test +extra-task: /tools/gcc/Sanity/smoke-test diff --git a/tests/smoke-test/omphello.c b/tests/smoke-test/omphello.c new file mode 100644 index 0000000..85b591f --- /dev/null +++ b/tests/smoke-test/omphello.c @@ -0,0 +1,24 @@ +#include +#include +#include + +int +main (void) +{ + int th_id; + int nthreads; + + #pragma omp parallel private(th_id) + { + th_id = omp_get_thread_num (); + printf ("Hello World from thread %d\n", th_id); + + #pragma omp barrier + if (th_id == 0) + { + nthreads = omp_get_num_threads (); + printf ("There are %d threads\n", nthreads); + } + } + return EXIT_SUCCESS; +} diff --git a/tests/smoke-test/quad.c b/tests/smoke-test/quad.c new file mode 100644 index 0000000..e5a6cc7 --- /dev/null +++ b/tests/smoke-test/quad.c @@ -0,0 +1,38 @@ +#include +#include +#include + +int +main (void) +{ + __float128 r = strtoflt128 ("1.23456789", NULL); + + int prec = 20; + int width = 46; + char buf[128]; + + r = 2.0q; + r = sqrtq (r); + int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", width, r); + if ((size_t) n < sizeof buf) + /* Prints: +1.41421356237309504880e+00 */ + printf ("%s\n", buf); + quadmath_snprintf (buf, sizeof buf, "%Qa", r); + if ((size_t) n < sizeof buf) + /* Prints: 0x1.6a09e667f3bcc908b2fb1366ea96p+0 */ + printf ("%s\n", buf); + n = quadmath_snprintf (NULL, 0, "%+-#46.*Qe", prec, r); + if (n > -1) + { + char *str = malloc (n + 1); + if (str) + { + quadmath_snprintf (str, n + 1, "%+-#46.*Qe", prec, r); + /* Prints: +1.41421356237309504880e+00 */ + printf ("%s\n", str); + } + free (str); + } + + return 0; +} diff --git a/tests/smoke-test/runtest.sh b/tests/smoke-test/runtest.sh new file mode 100755 index 0000000..78fda72 --- /dev/null +++ b/tests/smoke-test/runtest.sh @@ -0,0 +1,125 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/smoke-test +# Description: Basic smoke test. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-c++ gcc-gfortran glibc-common libgomp libgcc glibc-devel libstdc++ libstdc++-devel) + +# Choose the compiler. +GCC=${GCC:-gcc} +GXX=${GXX:-g++} +GFORTRAN=${GFORTRAN:-gfortran} + +PACKAGE=gcc + +rlJournalStart + rlPhaseStartSetup + export PRI_ARCH=`rlGetPrimaryArch` + export SEC_ARCH=`rlGetSecondaryArch` + # don't assert anything under devtoolset + if type gcc | grep -q -v devtoolset + then + for p in "${PACKAGES[@]}"; do + rpm -q "$p.$PRI_ARCH" || yum install -y "$p.$PRI_ARCH" + rlAssertRpm "$p.$PRI_ARCH" + done; unset p + fi + rlLog "GCC = $GCC" + rlLog "Installed within `rpmquery -f $(which $GCC)`" + rlLog "GXX = $GXX" + rlLog "Installed within `rpmquery -f $(which $GXX)`" + rlLog "GFORTRAN = $GFORTRAN" + rlLog "Installed within `rpmquery -f $(which $GFORTRAN)`" + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + # We need some files. + rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c clear_cache.c omphello.c $TmpDir" + rlRun "pushd $TmpDir" + rlRun "rpmquery -l libstdc++-devel.$PRI_ARCH" + test -n "$SEC_ARCH" && rpmquery "libstdc++-devel.$SEC_ARCH" && rlRun "rpmquery -l libstdc++-devel.$SEC_ARCH" + rlPhaseEnd + + rlPhaseStartSetup "Showing compiler versions" + for compiler in $GCC $GXX $GFORTRAN + do + rlLog "Version of compiler: $compiler" + eval "$compiler --version 2>&1" | while read line + do + rlLog " $line" + done + done + rlPhaseEnd + + rlPhaseStartTest "Compile" + rlRun "$GCC hello.c -o hello_c" + rlRun "$GXX hello.cpp -o hello_cpp" + rlRun "$GFORTRAN hello.f90 -o hello_fortran" + + # TM support is GCC >=4.7 only. + $GCC -xc -O2 -std=gnu99 -fgnu-tm - <<< "int main(){}" + if test $? -eq 0; then + rlRun "$GCC -O2 -std=gnu99 -fgnu-tm tm.c -o tm" + rlRun "./tm" + fi + + # Test OpenMP. + rlRun "$GCC omphello.c -O2 -std=gnu99 -fopenmp -o omp" + rlRun "./omp" + + # Test __thread. + rlRun "$GCC thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr" + rlRun "./thr" + + # Now test some libquadmath stuff (__float128 support). + # libquadmath is mising on RHEL machines, usually. + test "`rpmquery --qf '%{version}-%{release}' libquadmath`" = "`rpmquery --qf '%{version}-%{release}' $GCC`" + if test $? -eq 0 -a "$GCC" = "gcc"; then + rlRun "$GCC quad.c -O2 -std=gnu99 -lquadmath -lm -o quad" + rlRun "./quad" + fi + + # And now something from libgcc, e.g. __builtin___clear_cache. + # But not on RHEL5. + if ! rlIsRHEL 5; then + rlRun "$GCC clear_cache.c -O2 -std=gnu99 -o cache" + rlRun "./cache" + fi + rlPhaseEnd + + rlPhaseStartTest "Check dependant libraries" + rlRun "ldd hello_{c,cpp,fortran} &> ldd.out" + # Nothing should be linked against anything in /opt. + rlAssertNotGrep "/opt" ldd.out + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/smoke-test/thr-init-2.c b/tests/smoke-test/thr-init-2.c new file mode 100644 index 0000000..051cff9 --- /dev/null +++ b/tests/smoke-test/thr-init-2.c @@ -0,0 +1,24 @@ +/* { dg-do run } */ +/* { dg-require-effective-target tls_runtime } */ +/* { dg-add-options tls } */ + +extern void abort() ; + +static __thread int fstat ; +static __thread int fstat = 1; + +int test_code(int b) +{ + fstat += b ; + return fstat; +} + +int main (int ac, char *av[]) +{ + int a = test_code(1); + + if ((a != 2) || (fstat != 2)) + abort () ; + + return 0; +} diff --git a/tests/smoke-test/tm.c b/tests/smoke-test/tm.c new file mode 100644 index 0000000..f9b4c9b --- /dev/null +++ b/tests/smoke-test/tm.c @@ -0,0 +1,34 @@ +extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe)); + +static int __attribute__((transaction_safe)) +something (void) +{ + return 0; +} + +struct large { int foo[500]; }; + +int +main (void) +{ + int *p; + struct large *lp; + + __transaction_atomic { + p = malloc (sizeof (*p) * 100); + lp = malloc (sizeof (*lp) * 100); + + /* No instrumentation necessary; P and LP are transaction local. */ + p[5] = 123; + lp->foo[66] = 123; + + if (something ()) + __transaction_cancel; + } + + __transaction_relaxed { + ++p[5]; + } + + return ( (p[5] == 124) ? 0 : 1 ); +} diff --git a/update-gcc.sh b/update-gcc.sh index 47d7d70..66e94c6 100755 --- a/update-gcc.sh +++ b/update-gcc.sh @@ -1,36 +1,7 @@ #!/bin/sh -if [ "$#" -eq 0 ]; then - echo "Usage: ./update-gcc.sh gcc/redhat/heads/gcc-NN-branch_commit_hash [git_reference_dir_to_speed_up]" - exit 1 -fi -export LC_ALL=C -if ! [ -f gcc.spec ]; then echo Must be run in the directory with gcc.spec file.; exit 1; fi -if [ -d gcc-dir.tmp ]; then echo gcc-dir.tmp already exists.; exit 1; fi -v=`sed -n 's/^%global gcc_version //p' gcc.spec` -p=`sed -n 's/^%global gitrev //p' gcc.spec` -h=$1 -if [ "$#" -ge 2 ]; then - git clone --dissociate --reference $2 https://gcc.gnu.org/git/gcc.git gcc-dir.tmp -else - git clone https://gcc.gnu.org/git/gcc.git gcc-dir.tmp -fi -git --git-dir=gcc-dir.tmp/.git fetch origin $h +[ -d gcc-dir.tmp ] && echo gcc-dir.tmp already exists && exit 1 +git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp +git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1 d=`date --iso | sed 's/-//g'` -cd gcc-dir.tmp -git diff $p..$h > P1 -git log --format=%B `git log --format='%ae %H' $p..$h | awk '/^gccadmin@gcc.gnu.org/{print $2;exit 0}'`..$h > P2 -diff -up /dev/null P2 >> P1 -sed -n 's,^+[[:blank:]]\+PR \([a-z0-9+-]\+/[0-9]\+\)$,\1,p' P1 | sed 's/ - .*$//;s/[: ;.]//g' | LC_ALL=C sort -u -t / -k 1,1 -k 2,2n > P3 -> P4 -for i in `cat P3`; do if grep -F $i ../gcc.spec >/dev/null; then echo $i already recorded.; else echo $i >> P4; fi; done -case "$v" in - *.0.*) echo "- update from trunk" > P5;; - *) echo "- update from releases/gcc-`echo $v | sed 's/\..*$//'` branch" > P5;; -esac -echo `cat P4` | sed 's/ /, /g' | fold -w 71 -s | sed '1s/^/ - PRs /;2,$s/^/ /;s/, $/,/' >> P5 -echo >> P5 -cd .. -sed -i -e '/^%global gitrev /s/ [0-9a-f]\+$/ '$h'/;/^%global DATE /s/ [0-9]\+$/ '$d'/;/^%changelog$/r gcc-dir.tmp/P5' gcc.spec -git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-$v-$d/ $h | xz -9e > gcc-$v-$d.tar.xz +git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.0.0-$d/ $1 | xz -9e > gcc-13.0.0-$d.tar.xz rm -rf gcc-dir.tmp -fedpkg new-sources gcc-$v-$d.tar.xz `sed 's/SHA512 (\(.*\)) = [0-9a-f]\+$/\1/' sources | grep -v '^gcc-'`