Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gcc16 for openSUSE:Factory checked in at 2026-07-31 15:26:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gcc16 (Old) and /work/SRC/openSUSE:Factory/.gcc16.new.2004 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gcc16" Fri Jul 31 15:26:57 2026 rev:7 rq:1368360 version:16.1.1+git9423 Changes: -------- --- /work/SRC/openSUSE:Factory/gcc16/gcc16.changes 2026-05-10 16:46:41.604774625 +0200 +++ /work/SRC/openSUSE:Factory/.gcc16.new.2004/gcc16.changes 2026-07-31 16:07:20.368495863 +0200 @@ -1,0 +2,25 @@ +Tue Jul 28 13:14:07 UTC 2026 - Richard Biener <[email protected]> + +- Update to gcc-16.1.1+git9423 + +------------------------------------------------------------------- +Tue Jul 28 09:16:51 UTC 2026 - Richard Biener <[email protected]> + +- Build a full cross-x86_64 compiler [bsc#1272616], but not on %ix86 + +------------------------------------------------------------------- +Tue Jun 30 10:41:57 UTC 2026 - Richard Biener <[email protected]> + +- Update gcc15-Wtime_t-conversion.patch + +------------------------------------------------------------------- +Sat Jun 20 15:11:37 UTC 2026 - Jan Engelhardt <[email protected]> + +- Make build recipe compatible with POSIX sh + +------------------------------------------------------------------- +Mon May 25 11:21:55 UTC 2026 - Marcus Meissner <[email protected]> + +- do not pass in -fhardened + +------------------------------------------------------------------- Old: ---- gcc-16.1.1+git8886.tar.xz New: ---- cross-x86_64-gcc16-bootstrap.spec gcc-16.1.1+git9423.tar.xz pre_checkin.sh ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cross-aarch64-gcc16-bootstrap.spec ++++++ --- /var/tmp/diff_new_pack.mWM2YT/_old 2026-07-31 16:07:22.008552927 +0200 +++ /var/tmp/diff_new_pack.mWM2YT/_new 2026-07-31 16:07:22.012553066 +0200 @@ -102,7 +102,7 @@ %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ -Version: 16.1.1+git8886 +Version: 16.1.1+git9423 Release: 0 %define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1) %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/') @@ -249,6 +249,11 @@ %ifarch %{cross_arch} ExcludeArch: %{cross_arch} %endif +%if "%{cross_arch}" == "x86_64" && 0%{!?gcc_libc_bootstrap:1} +%ifarch %ix86 +ExclusiveArch: do-not-build +%endif +%endif %endif %if 0%{?gcc_libc_bootstrap:1} %if %{suse_version} < 1699 && "%{cross_arch}" == "loongarch64" @@ -349,7 +354,7 @@ add_flag= case $flag in -U_FORTIFY_SOURCE|-D_FORTIFY_SOURCE=*) ;; - -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*) ;; + -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*|-fhardened) ;; -ffortify=*|-Wall|-m32|-m64) ;; %ifarch %ix86 # -mcpu is superseded by -mtune but -mtune is not supported by @@ -370,13 +375,13 @@ *) add_flag=$flag ;; esac if test -n "$add_flag"; then - optflags+=" $add_flag" + optflags="$optflags $add_flag" case $add_flag in # Filter out -Werror=return-type for D (only valid for C and C++) -Werror=return-type) ;; # Likewise -Wtime_t-conversion -Wtime_t-conversion) ;; - *) optflags_d+=" $add_flag" ;; + *) optflags_d="$optflags_d $add_flag" ;; esac fi done cross-aarch64-gcc16.spec: same change cross-amdgcn-gcc16.spec: same change cross-arm-gcc16.spec: same change cross-arm-none-gcc16-bootstrap.spec: same change cross-arm-none-gcc16.spec: same change cross-avr-gcc16-bootstrap.spec: same change cross-avr-gcc16.spec: same change cross-bpf-gcc16.spec: same change cross-hppa-gcc16-bootstrap.spec: same change cross-hppa-gcc16.spec: same change cross-loongarch64-gcc16-bootstrap.spec: same change cross-loongarch64-gcc16.spec: same change cross-nvptx-gcc16.spec: same change cross-ppc64-gcc16.spec: same change cross-ppc64le-gcc16-bootstrap.spec: same change cross-ppc64le-gcc16.spec: same change cross-pru-gcc16-bootstrap.spec: same change cross-pru-gcc16.spec: same change cross-riscv64-elf-gcc16-bootstrap.spec: same change cross-riscv64-elf-gcc16.spec: same change cross-riscv64-gcc16-bootstrap.spec: same change cross-riscv64-gcc16.spec: same change cross-rx-gcc16-bootstrap.spec: same change cross-rx-gcc16.spec: same change cross-s390x-gcc16-bootstrap.spec: same change cross-s390x-gcc16.spec: same change ++++++ cross-x86_64-gcc16-bootstrap.spec ++++++ # # spec file for package cross-x86_64-gcc16-bootstrap # # Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define pkgname cross-x86_64-gcc16-bootstrap %define cross_arch x86_64 %define gcc_target_arch x86_64-suse-linux %define gcc_target_glibc 1 %define gcc_libc_bootstrap 1 # nospeccleaner %bcond_without release_checking %define build_cp 1 %if 0%{?gcc_libc_bootstrap:1} || "%{cross_arch}" == "bpf" %define build_cp 0 %endif %define build_ada 0 %define build_libjava 0 %define build_java 0 %define build_fortran 0%{?gcc_accel:1} %define build_objc 0 %define build_objcp 0 %define build_go 0 %define build_nvptx 0 %define build_gcn 0 %define build_d 0 %define build_rust 0 %define build_m2 0 %define build_cobol 0 %define build_algol68 0 %define enable_plugins 0 %define build_jit 0 %define use_lto_bootstrap 0 %define binutils_target %{cross_arch} %if "%{cross_arch}" == "armv7l" || "%{cross_arch}" == "armv7hl" %define binutils_target arm %endif %if "%{cross_arch}" == "armv6l" || "%{cross_arch}" == "armv6hl" %define binutils_target arm %endif %if "%{cross_arch}" == "armv5tel" %define binutils_target arm %endif %if "%{cross_arch}" == "arm-none" %define binutils_target arm %endif %if "%{cross_arch}" == "riscv64-elf" %define binutils_target riscv64 %endif %if "%{cross_arch}" == "sparcv9" %define binutils_target sparc %endif %define canonical_target %(echo %{binutils_target} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;") %if "%{binutils_target}" == "avr" || "%{binutils_target}" == "pru" %define binutils_os %{canonical_target} %else %if "%{binutils_target}" == "epiphany" || "%{binutils_target}" == "nds32le" || "%{binutils_target}" == "rl78" || "%{binutils_target}" == "rx" %define binutils_os %{canonical_target}-elf %else %if "%{binutils_target}" == "arm" %define binutils_os %{canonical_target}-suse-linux-gnueabi %else %if "%{binutils_target}" == "bpf" %define binutils_os %{canonical_target}-none %else %if 0%{?gcc_accel:1} %define binutils_os %{gcc_target_arch} %else %define binutils_os %{canonical_target}-suse-linux %endif %endif %endif %endif %endif # offloading builds newlib in-tree and can install in # the GCC private path without extra sysroot %if 0%{!?gcc_accel:1} # use same sysroot as in binutils.spec %define sysroot %{_prefix}/%{binutils_os}/sys-root %endif Name: %{pkgname} %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ Version: 16.1.1+git9423 Release: 0 %define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1) %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/') %define binsuffix -16 Group: Development/Languages/C and C++ Source: gcc-%{version}.tar.xz Source1: change_spec Source2: gcc16-rpmlintrc Source3: gcc16-testresults-rpmlintrc Source4: README.First-for.SuSE.packagers Source5: newlib-4.6.0.20260123.tar.xz Patch2: gcc-add-defaultsspec.diff Patch5: tls-no-direct.diff Patch6: gcc43-no-unwind-tables.diff Patch7: gcc48-libstdc++-api-reference.patch Patch11: gcc7-remove-Wexpansion-to-defined-from-Wextra.patch Patch15: gcc7-avoid-fixinc-error.diff Patch16: gcc9-reproducible-builds.patch Patch17: gcc9-reproducible-builds-buildid-for-checksum.patch Patch19: gcc11-gdwarf-4-default.patch Patch20: gcc15-bsc1253043.patch Patch22: gcc15-Wtime_t-conversion.patch # A set of patches from the RH srpm Patch51: gcc41-ppc32-retaddr.patch # Some patches taken from Debian Patch60: gcc44-textdomain.patch Patch61: gcc44-rename-info-files.patch # Define the canonical target and host architecture # %%gcc_target_arch is supposed to be the full target triple # %%cross_arch is supposed to be the rpm target variant arch # %%TARGET_ARCH will be the canonicalized target CPU part # %%HOST_ARCH will be the canonicalized host CPU part %if 0%{?gcc_target_arch:1} %define TARGET_ARCH %(echo %{cross_arch} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;") %else %define TARGET_ARCH %(echo %{_target_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;") %endif %if 0%{?disable_32bit:1} %define biarch 0 %else %define biarch %(case " %{biarch_targets} " in (*" %{TARGET_ARCH} "*) echo 1;; (*) echo 0;; esac) %endif %define HOST_ARCH %(echo %{_target_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;") %ifarch ppc %define GCCDIST powerpc64-suse-linux %else %ifarch %sparc %define GCCDIST sparc64-suse-linux %else %ifarch %arm %define GCCDIST %{HOST_ARCH}-suse-linux-gnueabi %else %define GCCDIST %{HOST_ARCH}-suse-linux %endif %endif %endif %define libsubdir %{_libdir}/gcc/%{GCCDIST}/%{gcc_dir_version} %define gxxinclude %{_prefix}/include/c++/%{gcc_dir_version} %if "%{cross_arch}" != "nvptx" %if "%{cross_arch}" != "amdgcn" BuildRequires: cross-%{binutils_target}-binutils %requires_ge cross-%{binutils_target}-binutils %endif %endif %define hostsuffix %{nil} BuildRequires: gcc-c++ %if %{suse_version} > 1500 BuildRequires: libzstd-devel %endif BuildRequires: bison BuildRequires: flex BuildRequires: gettext-devel BuildRequires: glibc-devel-32bit %if %{with limitbuild} BuildRequires: memory-constraints %endif BuildRequires: isl-devel BuildRequires: makeinfo BuildRequires: mpc-devel BuildRequires: mpfr-devel BuildRequires: perl BuildRequires: zlib-devel %ifarch ia64 BuildRequires: libunwind-devel %endif %if 0%{!?gcc_libc_bootstrap:1} %if 0%{?gcc_target_newlib:1} %if !0%{?is_opensuse} ExclusiveArch: do-not-build %endif BuildRequires: cross-%cross_arch-newlib-devel %requires_ge cross-%cross_arch-newlib-devel %endif %if "%{cross_arch}" == "avr" %if !0%{?is_opensuse} ExclusiveArch: do-not-build %endif BuildRequires: avr-libc %endif %if 0%{?gcc_target_glibc:1} %if %{suse_version} < 1600 ExclusiveArch: do-not-build %else %if %{suse_version} < 1699 %if "%{cross_arch}" == "hppa" || "%{cross_arch}" == "loongarch64" ExclusiveArch: do-not-build %endif %endif %endif BuildRequires: cross-%cross_arch-glibc-devel %requires_ge cross-%cross_arch-glibc-devel %endif %if "%{cross_arch}" == "nvptx" BuildRequires: nvptx-tools Requires: cross-nvptx-newlib-devel >= %{version}-%{release} Requires: nvptx-tools ExclusiveArch: %define nvptx_newlib 1 %endif %if "%{cross_arch}" == "amdgcn" BuildRequires: llvm%{product_libs_llvm_ver} Requires: llvm%{product_libs_llvm_ver} BuildRequires: lld%{product_libs_llvm_ver} Requires: cross-amdgcn-newlib-devel >= %{version}-%{release} Requires: lld%{product_libs_llvm_ver} # The default multilib set requires llvm20 or later but we support llvm19 # as well with a reduced set of multilibs %if 0%{?product_libs_llvm_ver} >= 19 ExclusiveArch: %else ExclusiveArch: do-not-build %endif %define amdgcn_newlib 1 %endif %endif %if "%{cross_arch}" == "pru" ExclusiveArch: %arm %endif %if 0%{?gcc_target_glibc:1} %ifarch %{cross_arch} ExcludeArch: %{cross_arch} %endif %if "%{cross_arch}" == "x86_64" && 0%{!?gcc_libc_bootstrap:1} %ifarch %ix86 ExclusiveArch: do-not-build %endif %endif %endif %if 0%{?gcc_libc_bootstrap:1} %if %{suse_version} < 1699 && "%{cross_arch}" == "loongarch64" ExclusiveArch: do-not-build %else ExclusiveArch: i586 ppc64le s390x aarch64 riscv64 loongarch64 %endif %endif %define _binary_payload w.ufdio # Obsolete cross-ppc-gcc49 from cross-ppc64-gcc49 which has # file conflicts with it and is no longer packaged %if "%pkgname" == "cross-ppc64-gcc49" Obsoletes: cross-ppc-gcc49 <= 4.9.0+r209354 %endif %if 0%{!?gcc_accel:1} # Generally only one cross for the same target triplet can be installed # at the same time as we are populating a non-version-specific sysroot # The -bootstrap packages file-conflict with the non-bootstrap variants. # Even if we don't actually (want to) distribute the bootstrap variants # the following avoids repo-checker spamming us endlessly. %if 0%{!?gcc_libc_bootstrap:1} Provides: %{gcc_target_arch}-gcc Conflicts: %{gcc_target_arch}-gcc %endif %if 0%{!?gcc_libc_bootstrap:1} Conflicts: %{pkgname}-bootstrap %endif %endif #!BuildIgnore: gcc-PIE %if %{build_cp} # The cross compiler only packages the arch specific c++ headers, so # we need to depend on the host libstdc++ devel headers (we wouldn't need # the libs, though) Requires: libstdc++6-devel-gcc16 %endif %if 0%{!?gcc_accel:1} && 0%{!?gcc_libc_bootstrap:1} && %{suse_version} < 1600 BuildRequires: update-alternatives Requires(post): update-alternatives Requires(preun): update-alternatives %endif Summary: The GNU Compiler Collection targeting %{cross_arch} License: GPL-3.0-or-later %description The GNU Compiler Collection as a cross-compiler targeting %{cross_arch}. %if 0%{?gcc_libc_bootstrap:1} This is a package that is necessary for bootstrapping another package only, it is not intended for any other use. %endif %if 0%{suse_version} >= 1500 # Synchronize output by lines, useful for configure output %define make_output_sync -Oline %endif %prep %if 0%{?nvptx_newlib:1}%{?amdgcn_newlib:1} %setup -q -n gcc-%{version} -a 5 ln -s newlib-4.6.0.20260123/newlib . %else %setup -q -n gcc-%{version} %endif #test patching start %patch -P 2 -P 5 -P 6 -P 7 %patch -p1 -P 11 %patch -P 15 -P 16 %patch -p1 -P 17 %if %{suse_version} < 1550 # In SLE15 and earlier default to dwarf4, not dwarf5 %patch -p1 -P 19 # For SLE15 and earlier make _Unwind_Find_FDE dynamically detec # newer glibc _dl_find_object %patch -p1 -P 20 %endif %patch -p1 -P 22 %patch -P 51 %patch -p1 -P 60 -P 61 #test patching end %build %if %{with limitbuild} %limit_build -m 900 %endif %define _lto_cflags %{nil} # Avoid rebuilding of generated files contrib/gcc_update --touch rm -rf obj-%{GCCDIST} mkdir obj-%{GCCDIST} cd obj-%{GCCDIST} # Filter out unwanted flags from $RPM_OPT_FLAGS optflags= optflags_d= for flag in $RPM_OPT_FLAGS; do add_flag= case $flag in -U_FORTIFY_SOURCE|-D_FORTIFY_SOURCE=*) ;; -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*|-fhardened) ;; -ffortify=*|-Wall|-m32|-m64) ;; %ifarch %ix86 # -mcpu is superseded by -mtune but -mtune is not supported by # our bootstrap compiler. -mcpu gives a warning that stops # the build process, so remove it for now. Also remove all other # -march and -mtune flags. They are superseded by proper # default compiler settings now. -mcpu=i?86|-march=i?86|-mtune=i?86) ;; %endif %ifarch s390 s390x -fsigned-char) ;; -O1) add_flag=-O2 ;; %endif %if 0%{?gcc_target_arch:1} # Kill all -march/tune/cpu because that screws building the target libs -march=*|-mtune=*|-mcpu=*) ;; %endif *) add_flag=$flag ;; esac if test -n "$add_flag"; then optflags="$optflags $add_flag" case $add_flag in # Filter out -Werror=return-type for D (only valid for C and C++) -Werror=return-type) ;; # Likewise -Wtime_t-conversion -Wtime_t-conversion) ;; *) optflags_d="$optflags_d $add_flag" ;; esac fi done languages=c %if %{build_cp} languages=$languages,c++ %endif %if %{build_objc} languages=$languages,objc %endif %if %{build_fortran} languages=$languages,fortran %endif %if %{build_objcp} languages=$languages,obj-c++ %endif %if %{build_ada} languages=$languages,ada %endif %if %{build_go} languages=$languages,go %endif %if %{build_d} languages=$languages,d %endif %if %{build_jit} languages=$languages,jit %endif %if %{build_rust} languages=$languages,rust %endif %if %{build_m2} languages=$languages,m2 %endif %if %{build_cobol} languages=$languages,cobol %endif %if %{build_algol68} languages=$languages,algol68 %endif # In general we want to ship release checking enabled compilers # which is the default for released compilers %if %{with release_checking} ENABLE_CHECKING="--enable-checking=release" %else ENABLE_CHECKING="--enable-checking=yes" %endif #ENABLE_CHECKING="" # Work around tail/head -1 changes export _POSIX2_VERSION=199209 %if "%{TARGET_ARCH}" == "amdgcn" mkdir -p target-tools/bin ln -s /usr/bin/llvm-ar-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-ar ln -s /usr/bin/llvm-mc-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-as ln -s /usr/bin/lld-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-ld ln -s /usr/bin/llvm-nm-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-nm ln -s /usr/bin/llvm-ranlib-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-ranlib ln -s /usr/bin/llvm-objdump-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-objdump export PATH="`pwd`/target-tools/bin:$PATH" %endif %if "%{hostsuffix}" != "" mkdir -p host-tools/bin # Using the host gnatmake like # CC="gcc%%{hostsuffix}" GNATBIND="gnatbind%%{hostsuffix}" # GNATMAKE="gnatmake%%{hostsuffix}" # doesn't work due to PR33857, so an un-suffixed gnatmake has to be # available %if %{build_ada} cp -a /usr/bin/gnatmake%{hostsuffix} host-tools/bin/gnatmake cp -a /usr/bin/gnatlink%{hostsuffix} host-tools/bin/gnatlink cp -a /usr/bin/gnatbind%{hostsuffix} host-tools/bin/gnatbind %endif cp -a /usr/bin/gcc%{hostsuffix} host-tools/bin/gcc cp -a /usr/bin/g++%{hostsuffix} host-tools/bin/g++ ln -sf /usr/%{_lib} host-tools/%{_lib} export PATH="`pwd`/host-tools/bin:$PATH" %endif %if %{build_d} && %{suse_version} < 1550 # We are using gcc11-d to bootstrap d export GDC=gdc-11 %endif # libsanitizer needs <crypt.h> and since the glibc/libxcrypt split # we don't have that yet in a pure cross environment %if 0%{?gcc_target_arch:1} CONFARGS="$CONFARGS --disable-libsanitizer" %endif ../configure \ CFLAGS="$optflags" \ CXXFLAGS="$optflags" \ XCFLAGS="$optflags" \ TCFLAGS="$optflags" \ GDCFLAGS="$optflags_d" \ --prefix=%{_prefix} \ --infodir=%{_infodir} \ --mandir=%{_mandir} \ --libdir=%{_libdir} \ --libexecdir=%{_libdir} \ --enable-languages=$languages \ %if !0%{?is_opensuse} --enable-host-pie \ %endif %if %{build_nvptx} || %{build_gcn} --enable-offload-targets=\ %if %{build_nvptx} nvptx-none,\ %endif %if %{build_gcn} amdgcn-amdhsa,\ %endif --enable-offload-defaulted \ %endif %if %{build_nvptx} --without-cuda-driver \ %endif %if %{build_jit} --enable-host-shared \ %endif $ENABLE_CHECKING \ --disable-werror \ --with-gxx-include-dir=%{_prefix}/include/c++/%{gcc_dir_version} \ --with-libstdcxx-zoneinfo=%{_datadir}/zoneinfo \ --enable-ssp \ --disable-libssp \ %if 0%{!?build_libvtv:1} --disable-libvtv \ %endif %if 0%{suse_version} >= 1500 --enable-cet=auto \ %else --disable-cet \ %endif --disable-libcc1 \ %if %{enable_plugins} --enable-plugin \ %else --disable-plugin \ %endif --with-bugurl="https://bugs.opensuse.org/" \ --with-pkgversion="SUSE Linux" \ %if 0%{?sysroot:1} --with-slibdir=%{sysroot}/%{_lib} \ %else --with-slibdir=/%{_lib} \ %endif --with-system-zlib \ --enable-libstdcxx-allocator=new \ --disable-libstdcxx-pch \ %if 0%{suse_version} <= 1320 --with-default-libstdcxx-abi=gcc4-compatible \ %endif %if %{build_d} --enable-libphobos \ %endif --enable-version-specific-runtime-libs \ --with-gcc-major-version-only \ %if 0%{!?gcc_target_arch:1} --enable-linker-build-id \ %else %if 0%{?gcc_target_glibc:1} --enable-linker-build-id \ %endif %endif --enable-linux-futex \ %ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390 s390x %sparc --enable-gnu-indirect-function \ %endif %ifarch %{disable_multilib_arch} --disable-multilib \ %endif %if 0%{!?gcc_target_arch:1} --program-suffix=%{binsuffix} \ %ifarch ia64 --with-system-libunwind \ %else --without-system-libunwind \ %endif %endif %if 0%{?gcc_target_arch:1} %if 0%{?gcc_accel:1} || 0%{?gcc_libc_bootstrap:1} || %{suse_version} < 1600 --program-suffix=%{binsuffix} \ %endif --program-prefix=%{gcc_target_arch}- \ --target=%{gcc_target_arch} \ --disable-nls \ %if 0%{?sysroot:1} --with-sysroot=%sysroot \ %endif %if 0%{?build_sysroot:1} --with-build-sysroot=%{build_sysroot} \ %else %if 0%{?sysroot:1} --with-build-sysroot=%{sysroot} \ %endif %endif %if 0%{?binutils_os:1} --with-build-time-tools=/usr/%{binutils_os}/bin \ %endif %if 0%{?gcc_target_newlib} --with-newlib \ %if 0%{?gcc_libc_bootstrap:1} --disable-gcov \ %endif %else %if 0%{?gcc_libc_bootstrap:1} --disable-gcov --disable-threads --disable-shared \ --disable-libmudflap --disable-libssp --disable-libgomp \ --disable-libquadmath --disable-libatomic \ --without-headers --with-newlib \ %endif %endif %if "%{TARGET_ARCH}" == "bpf" --disable-gcov \ %endif %if "%{TARGET_ARCH}" == "nvptx" --enable-as-accelerator-for=%{GCCDIST} \ --disable-sjlj-exceptions \ --enable-newlib-io-long-long \ %endif %if "%{TARGET_ARCH}" == "amdgcn" --enable-as-accelerator-for=%{GCCDIST} \ --enable-libgomp \ %if 0%{?product_libs_llvm_ver} < 20 --with-multilib-list=gfx908,gfx90a,gfx9-generic,gfx942,gfx10-3-generic,gfx11-generic \ %else --with-multilib-list=default \ %endif %endif %if "%{TARGET_ARCH}" == "avr" --enable-lto \ --without-gxx-include-dir \ --with-native-system-header-dir=/include \ %endif %endif %if "%{TARGET_ARCH}" == "arm-none" --enable-multilib \ --with-multilib-list=aprofile,rmprofile \ --disable-decimal-float \ --disable-libffi \ --disable-libgomp \ --disable-libmudflap \ --disable-libquadmath \ --disable-shared \ --disable-threads \ --disable-tls \ %endif %if "%{TARGET_ARCH}" == "armv6hl" || "%{TARGET_ARCH}" == "arm" --with-cpu=arm1176jzf-s \ --with-float=hard \ --with-abi=aapcs-linux \ --with-fpu=vfpv2 \ --disable-sjlj-exceptions \ %endif %if "%{TARGET_ARCH}" == "armv7hl" --with-cpu=generic-armv7-a \ --with-float=hard \ --with-abi=aapcs-linux \ --with-fpu=vfpv3-d16 \ --disable-sjlj-exceptions \ %endif %if "%{TARGET_ARCH}" == "aarch64" --enable-fix-cortex-a53-835769 \ --enable-fix-cortex-a53-843419 \ %endif %if "%{TARGET_ARCH}" == "powerpc64le" %if 0%{?cross_arch:1} --with-glibc-version=2.32 \ %endif %if %{suse_version} >= 1600 && !0%{?is_opensuse} --with-cpu=power9 \ --with-tune=power10 \ %else %if %{suse_version} >= 1350 --with-cpu=power8 \ --with-tune=power9 \ %else --with-cpu=power8 \ --with-tune=power8 \ %endif %endif %if %{suse_version} > 1500 --with-long-double-format=ieee \ %else --with-long-double-format=ibm \ %endif --enable-secureplt \ --with-long-double-128 \ --enable-targets=powerpcle-linux \ --disable-multilib \ %endif %if "%{TARGET_ARCH}" == "powerpc" || "%{TARGET_ARCH}" == "powerpc64" %if "%{TARGET_ARCH}" == "powerpc" --with-cpu=default32 \ %endif --with-cpu-64=power4 \ --enable-secureplt \ --with-long-double-128 \ %endif %if "%{TARGET_ARCH}" == "sparc64" --with-cpu=ultrasparc \ --with-long-double-128 \ %endif %if "%{TARGET_ARCH}" == "sparc" --with-cpu=v8 \ --with-long-double-128 \ %endif %if "%{TARGET_ARCH}" == "i586" %if %{suse_version} >= 1600 && !0%{?is_opensuse} --with-arch-32=x86-64-v2 \ %else %if 0%{?sle_version:%sle_version} >= 150000 --with-arch-32=x86-64 \ %else --with-arch-32=i586 \ %endif %endif --with-tune=generic \ %endif %if "%{TARGET_ARCH}" == "x86_64" %ifnarch %{disable_multilib_arch} --enable-multilib \ %if %{suse_version} >= 1600 && !0%{?is_opensuse} --with-arch-32=x86-64-v2 \ %else --with-arch-32=x86-64 \ %endif %endif %if %{suse_version} >= 1600 && !0%{?is_opensuse} --with-arch=x86-64-v2 \ %endif --with-tune=generic \ %endif %if "%{TARGET_ARCH}" == "s390" || "%{TARGET_ARCH}" == "s390x" %if %{suse_version} >= 1600 && !0%{?is_opensuse} --with-tune=z15 --with-arch=z14 \ %else --with-tune=zEC12 --with-arch=z196 \ %endif --with-long-double-128 \ --enable-decimal-float \ %if 0%{?cross_arch:1} --disable-multilib \ %endif %endif %if "%{TARGET_ARCH}" == "m68k" --disable-multilib \ %endif %if "%{TARGET_ARCH}" == "riscv64" --disable-multilib \ %endif %if %{with bootstrap} %if %{use_lto_bootstrap} && !0%{?building_testsuite:1} --with-build-config=bootstrap-lto-lean \ %endif %else --disable-bootstrap \ %endif --enable-link-serialization \ $CONFARGS \ --build=%{GCCDIST} \ --host=%{GCCDIST} || \ { rc=$?; echo "------- BEGIN config.log ------"; %{__cat} config.log; echo "------- END config.log ------"; exit $rc; } %if 0%{?qemu_user_space_build} # Tell qemu to use the stack size that gcc is trying to use # The default of 8Mb is too small for some big files like insn-opinit.cc export QEMU_STACK_SIZE=64M %endif make %{?make_output_sync} %{?_smp_mflags} %if 0%{?nvptx_newlib:1} %package -n cross-nvptx-newlib16-devel Summary: Newlib for the nvptx offload target Group: Development/Languages/C and C++ Provides: cross-nvptx-newlib-devel = %{version}-%{release} Conflicts: cross-nvptx-newlib-devel %description -n cross-nvptx-newlib16-devel Newlib development files for the nvptx offload target compiler. %endif %if 0%{?amdgcn_newlib:1} %package -n cross-amdgcn-newlib16-devel Summary: Newlib for the amdgcn offload target Group: Development/Languages/C and C++ Provides: cross-amdgcn-newlib-devel = %{version}-%{release} Conflicts: cross-amdgcn-newlib-devel %description -n cross-amdgcn-newlib16-devel Newlib development files for the amdgcn offload target compiler. %endif %define targetlibsubdir %{_libdir}/gcc/%{gcc_target_arch}/%{gcc_dir_version} %define __provides_exclude_from ^(%{targetlibsubdir}|%{libsubdir}|%{_prefix}/%{gcc_target_arch})/.*$ %define __requires_exclude_from ^(%{targetlibsubdir}|%{libsubdir}|%{_prefix}/%{gcc_target_arch})/.*$ %install cd obj-%{GCCDIST} %if "%{TARGET_ARCH}" == "amdgcn" # libtool needs to be able to call ranlib export PATH="`pwd`/target-tools/bin:$PATH" %endif # install and fixup host parts make DESTDIR=$RPM_BUILD_ROOT install-host rm -rf $RPM_BUILD_ROOT/%{targetlibsubdir}/install-tools rm -f $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.la # common fixup rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty.a # install and fixup target parts # We want shared libraries to reside in the sysroot but the .so symlinks # on the host. Once we have a cross target that has shared libs we need # to manually fix up things here like we do for non-cross compilers mkdir -p $RPM_BUILD_ROOT/%{?sysroot:%sysroot} make DESTDIR=$RPM_BUILD_ROOT install-target %if %{build_cp} # So we installed libstdc++ headers into %%prefix where they conflict # with other host compilers. Rip out the non-target specific parts # again. Note not all cross targets support libstdc++, so create the # directory to make things easier. mkdir -p $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version} find $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version} -mindepth 1 -maxdepth 1 -type d -a -not -name %{gcc_target_arch} | xargs -r rm -r find $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version} -maxdepth 1 -type f | xargs -r rm # And also remove installed pretty printers which conflict in similar ways rm -rf $RPM_BUILD_ROOT/%{_datadir}/gcc%{binsuffix} %endif %if 0%{?binutils_os:1} for prog in as ld; do ln -s /usr/%{binutils_os}/bin/$prog $RPM_BUILD_ROOT%{targetlibsubdir}/ done %endif # remove docs rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} # for accelerators remove all frontends but lto1 and also install-tools %if 0%{?gcc_accel:1} rm -f $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/cc1 rm -f $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/f951 rm -f $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/cc1plus rm -rf $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/install-tools rm -rf $RPM_BUILD_ROOT%{targetlibsubdir}/install-tools # also move things from target directories into the accel path since # that is the place where we later search for (only) ( cd $RPM_BUILD_ROOT%{targetlibsubdir} && tar cf - . ) | ( cd $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch} && tar xf - ) rm -rf $RPM_BUILD_ROOT%{targetlibsubdir} # also remove installed libstdc++ headers rm -rf $RPM_BUILD_ROOT%{_prefix}/include/c++ %endif # for amdgcn install the symlinks to the llvm tools # follow alternatives symlinks to the hardcoded version requirement %if "%{TARGET_ARCH}" == "amdgcn" mkdir -p $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin ln -s /usr/bin/llvm-ar-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ar ln -s /usr/bin/llvm-mc-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/as ln -s /usr/bin/lld-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ld ln -s /usr/bin/llvm-nm-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/nm ln -s /usr/bin/llvm-ranlib-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ranlib ln -s %{_prefix}/amdgcn-amdhsa/bin/ar $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ar ln -s %{_prefix}/amdgcn-amdhsa/bin/as $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-as ln -s %{_prefix}/amdgcn-amdhsa/bin/ld $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ld ln -s %{_prefix}/amdgcn-amdhsa/bin/nm $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-nm ln -s %{_prefix}/amdgcn-amdhsa/bin/ranlib $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ranlib %endif # for the -bootstrap compilers only keep versioned gcc and cpp binaries # so they are co-installable %if 0%{?gcc_libc_bootstrap:1} rm -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_arch}-gcc-ar%{binsuffix} rm -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_arch}-gcc-nm%{binsuffix} rm -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_arch}-gcc-ranlib%{binsuffix} rm -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_arch}-lto-dump%{binsuffix} %endif # we provide update-alternatives for selecting a compiler version for # crosses %if 0%{!?gcc_accel:1} && 0%{!?gcc_libc_bootstrap:1} && %{suse_version} < 1600 mkdir -p %{buildroot}%{_sysconfdir}/alternatives for ex in gcc cpp \ %if %{build_cp} c++ g++ \ %endif gcc-ar gcc-nm gcc-ranlib lto-dump \ %if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" != "bpf" gcov gcov-dump gcov-tool \ %endif ; do ln -s %{_sysconfdir}/alternatives/%{gcc_target_arch}-$ex \ %{buildroot}%{_bindir}/%{gcc_target_arch}-$ex done %post %{_sbindir}/update-alternatives \ --install %{_bindir}/%{gcc_target_arch}-gcc %{gcc_target_arch}-gcc %{_bindir}/%{gcc_target_arch}-gcc%{binsuffix} 16 \ --slave %{_bindir}/%{gcc_target_arch}-cpp %{gcc_target_arch}-cpp %{_bindir}/%{gcc_target_arch}-cpp%{binsuffix} \ %if %{build_cp} --slave %{_bindir}/%{gcc_target_arch}-c++ %{gcc_target_arch}-c++ %{_bindir}/%{gcc_target_arch}-c++%{binsuffix} \ --slave %{_bindir}/%{gcc_target_arch}-g++ %{gcc_target_arch}-g++ %{_bindir}/%{gcc_target_arch}-g++%{binsuffix} \ %endif %if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" != "bpf" --slave %{_bindir}/%{gcc_target_arch}-gcov %{gcc_target_arch}-gcov %{_bindir}/%{gcc_target_arch}-gcov%{binsuffix} \ --slave %{_bindir}/%{gcc_target_arch}-gcov-dump %{gcc_target_arch}-gcov-dump %{_bindir}/%{gcc_target_arch}-gcov-dump%{binsuffix} \ --slave %{_bindir}/%{gcc_target_arch}-gcov-tool %{gcc_target_arch}-gcov-tool %{_bindir}/%{gcc_target_arch}-gcov-tool%{binsuffix} \ %endif --slave %{_bindir}/%{gcc_target_arch}-gcc-ar %{gcc_target_arch}-gcc-ar %{_bindir}/%{gcc_target_arch}-gcc-ar%{binsuffix} \ --slave %{_bindir}/%{gcc_target_arch}-gcc-nm %{gcc_target_arch}-gcc-nm %{_bindir}/%{gcc_target_arch}-gcc-nm%{binsuffix} \ --slave %{_bindir}/%{gcc_target_arch}-lto-dump %{gcc_target_arch}-lto-dump %{_bindir}/%{gcc_target_arch}-lto-dump%{binsuffix} \ --slave %{_bindir}/%{gcc_target_arch}-gcc-ranlib %{gcc_target_arch}-gcc-ranlib %{_bindir}/%{gcc_target_arch}-gcc-ranlib%{binsuffix} %postun if [ ! -f %{_bindir}/%{gcc_target_arch}-gcc ] ; then %{_sbindir}/update-alternatives --remove %{gcc_target_arch}-gcc %{_bindir}/%{gcc_target_arch}-gcc%{binsuffix} fi %endif %files %defattr(-,root,root) %if 0%{?gcc_accel:1} %{_prefix}/bin/%{GCCDIST}-accel-%{gcc_target_arch}-* %dir %{libsubdir} %dir %{libsubdir}/accel %{libsubdir}/accel/%{gcc_target_arch} %if "%{cross_arch}" == "amdgcn" %{_prefix}/%{gcc_target_arch}/bin %{_prefix}/bin/amdgcn-amdhsa-ar %{_prefix}/bin/amdgcn-amdhsa-as %{_prefix}/bin/amdgcn-amdhsa-ld %{_prefix}/bin/amdgcn-amdhsa-nm %{_prefix}/bin/amdgcn-amdhsa-ranlib %endif %else %if 0%{?gcc_libc_bootstrap:1} %{_prefix}/bin/%{gcc_target_arch}-gcc%{binsuffix} %{_prefix}/bin/%{gcc_target_arch}-cpp%{binsuffix} %else %{_prefix}/bin/%{gcc_target_arch}-gcc%{binsuffix} %if %{suse_version} < 1600 %{_prefix}/bin/%{gcc_target_arch}-cpp%{binsuffix} %{_prefix}/bin/%{gcc_target_arch}-gcc-ar%{binsuffix} %{_prefix}/bin/%{gcc_target_arch}-gcc-nm%{binsuffix} %{_prefix}/bin/%{gcc_target_arch}-gcc-ranlib%{binsuffix} %{_prefix}/bin/%{gcc_target_arch}-lto-dump%{binsuffix} %endif %if "%{cross_arch}" != "bpf" %if %{suse_version} < 1600 %{_prefix}/bin/%{gcc_target_arch}-gcov%{binsuffix} %{_prefix}/bin/%{gcc_target_arch}-gcov-dump%{binsuffix} %{_prefix}/bin/%{gcc_target_arch}-gcov-tool%{binsuffix} %endif %{_prefix}/bin/%{gcc_target_arch}-gcov %{_prefix}/bin/%{gcc_target_arch}-gcov-dump %{_prefix}/bin/%{gcc_target_arch}-gcov-tool %endif %{_prefix}/bin/%{gcc_target_arch}-gcc %{_prefix}/bin/%{gcc_target_arch}-cpp %{_prefix}/bin/%{gcc_target_arch}-gcc-ar %{_prefix}/bin/%{gcc_target_arch}-gcc-nm %{_prefix}/bin/%{gcc_target_arch}-gcc-ranlib %{_prefix}/bin/%{gcc_target_arch}-lto-dump %if %{suse_version} < 1600 %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-cpp %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-ar %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-nm %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-ranlib %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-lto-dump %if "%{cross_arch}" != "bpf" %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov-dump %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov-tool %endif %endif %if %{build_cp} %{_prefix}/bin/%{gcc_target_arch}-c++ %{_prefix}/bin/%{gcc_target_arch}-g++ %if %{suse_version} < 1600 %{_prefix}/bin/%{gcc_target_arch}-c++%{binsuffix} %{_prefix}/bin/%{gcc_target_arch}-g++%{binsuffix} %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-c++ %ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-g++ %endif %if "%{cross_arch}" == "avr" || 0%{?gcc_target_newlib:1} || 0%{?gcc_target_glibc:1} %{_prefix}/include/c++ %endif %endif %endif %dir %{targetlibsubdir} %dir %{_libdir}/gcc/%{gcc_target_arch} %{targetlibsubdir} %endif %if 0%{!?gcc_libc_bootstrap:1} && 0%{?sysroot:1} %{sysroot} %endif %if 0%{?nvptx_newlib:1} %files -n cross-nvptx-newlib16-devel %defattr(-,root,root) %{_prefix}/%{gcc_target_arch} %endif %if 0%{?amdgcn_newlib:1} %files -n cross-amdgcn-newlib16-devel %defattr(-,root,root) %{_prefix}/%{gcc_target_arch} %exclude %{_prefix}/%{gcc_target_arch}/bin %endif %changelog ++++++ cross-x86_64-gcc16.spec ++++++ --- /var/tmp/diff_new_pack.mWM2YT/_old 2026-07-31 16:07:25.748683061 +0200 +++ /var/tmp/diff_new_pack.mWM2YT/_new 2026-07-31 16:07:25.752683200 +0200 @@ -20,7 +20,6 @@ %define cross_arch x86_64 %define gcc_target_arch x86_64-suse-linux %define gcc_target_glibc 1 -%define gcc_libc_bootstrap 1 # nospeccleaner %bcond_without release_checking @@ -102,7 +101,7 @@ %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ -Version: 16.1.1+git8886 +Version: 16.1.1+git9423 Release: 0 %define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1) %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/') @@ -249,6 +248,11 @@ %ifarch %{cross_arch} ExcludeArch: %{cross_arch} %endif +%if "%{cross_arch}" == "x86_64" && 0%{!?gcc_libc_bootstrap:1} +%ifarch %ix86 +ExclusiveArch: do-not-build +%endif +%endif %endif %if 0%{?gcc_libc_bootstrap:1} %if %{suse_version} < 1699 && "%{cross_arch}" == "loongarch64" @@ -349,7 +353,7 @@ add_flag= case $flag in -U_FORTIFY_SOURCE|-D_FORTIFY_SOURCE=*) ;; - -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*) ;; + -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*|-fhardened) ;; -ffortify=*|-Wall|-m32|-m64) ;; %ifarch %ix86 # -mcpu is superseded by -mtune but -mtune is not supported by @@ -370,13 +374,13 @@ *) add_flag=$flag ;; esac if test -n "$add_flag"; then - optflags+=" $add_flag" + optflags="$optflags $add_flag" case $add_flag in # Filter out -Werror=return-type for D (only valid for C and C++) -Werror=return-type) ;; # Likewise -Wtime_t-conversion -Wtime_t-conversion) ;; - *) optflags_d+=" $add_flag" ;; + *) optflags_d="$optflags_d $add_flag" ;; esac fi done ++++++ gcc16-testresults.spec ++++++ --- /var/tmp/diff_new_pack.mWM2YT/_old 2026-07-31 16:07:25.804685010 +0200 +++ /var/tmp/diff_new_pack.mWM2YT/_new 2026-07-31 16:07:25.808685149 +0200 @@ -245,7 +245,7 @@ %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ -Version: 16.1.1+git8886 +Version: 16.1.1+git9423 Release: 0 %define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1) %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/') @@ -574,7 +574,7 @@ add_flag= case $flag in -U_FORTIFY_SOURCE|-D_FORTIFY_SOURCE=*) ;; - -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*) ;; + -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*|-fhardened) ;; -ffortify=*|-Wall|-m32|-m64) ;; %ifarch %ix86 # -mcpu is superseded by -mtune but -mtune is not supported by @@ -595,13 +595,13 @@ *) add_flag=$flag ;; esac if test -n "$add_flag"; then - optflags+=" $add_flag" + optflags="$optflags $add_flag" case $add_flag in # Filter out -Werror=return-type for D (only valid for C and C++) -Werror=return-type) ;; # Likewise -Wtime_t-conversion -Wtime_t-conversion) ;; - *) optflags_d+=" $add_flag" ;; + *) optflags_d="$optflags_d $add_flag" ;; esac fi done gcc16.spec: same change ++++++ _multibuild ++++++ --- /var/tmp/diff_new_pack.mWM2YT/_old 2026-07-31 16:07:25.940689742 +0200 +++ /var/tmp/diff_new_pack.mWM2YT/_new 2026-07-31 16:07:25.944689881 +0200 @@ -17,6 +17,7 @@ <flavor>cross-avr-gcc16</flavor> <flavor>cross-pru-gcc16-bootstrap</flavor> <flavor>cross-pru-gcc16</flavor> +<flavor>cross-x86_64-gcc16-bootstrap</flavor> <flavor>cross-x86_64-gcc16</flavor> <flavor>cross-ppc64-gcc16</flavor> <flavor>cross-arm-none-gcc16-bootstrap</flavor> ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.mWM2YT/_old 2026-07-31 16:07:25.968690716 +0200 +++ /var/tmp/diff_new_pack.mWM2YT/_new 2026-07-31 16:07:25.972690856 +0200 @@ -1,5 +1,5 @@ -mtime: 1778230708 -commit: e7778a496685a2bc9d9862cf13a6dbdd20e9f0831c77c4c3af535d964ffd2a24 +mtime: 1785325118 +commit: af1dffd92f7dd74dcfea63144e8dd37a3dc7eb2a050e07b4a487167c38eb1d68 url: https://src.opensuse.org/gcc/gcc16.git revision: main ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-07-29 13:38:38.000000000 +0200 @@ -0,0 +1,4 @@ +*.obscpio +*.osc +_build.* +.pbuild diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre_checkin.sh new/pre_checkin.sh --- old/pre_checkin.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/pre_checkin.sh 2026-07-29 13:38:38.000000000 +0200 @@ -0,0 +1,31 @@ +#!/bin/bash +# This script is called automatically during autobuild checkin. + +case $0 in + \./*) + here=$PWD + ;; + */*) + here=${0%/*} + ;; + *) + here=$PWD + ;; +esac +case ${here##*/} in + gcc*.*) + # Handle maintainance projects with .$REPO suffix + suffix=${here##*/} + suffix=${suffix%%\.*} + set ${suffix#gcc} + ;; + gcc-*) + suffix=${here##*/} + set ${suffix#*-}- + ;; + gcc[0-9]*) + suffix=${here##*/} + set ${suffix#gcc} + ;; +esac +. ${here}/change_spec ++++++ change_spec ++++++ --- /var/tmp/diff_new_pack.mWM2YT/_old 2026-07-31 16:07:26.144696840 +0200 +++ /var/tmp/diff_new_pack.mWM2YT/_new 2026-07-31 16:07:26.148696980 +0200 @@ -115,7 +115,7 @@ add_cross cross-avr-gcc$base_ver-bootstrap avr avr "%define gcc_libc_bootstrap 1" add_cross cross-avr-gcc$base_ver avr avr add_newlib_cross cross-pru-gcc$base_ver pru pru -add_glibc_bootstrap_cross cross-x86_64-gcc$base_ver x86_64 x86_64-suse-linux +add_glibc_cross cross-x86_64-gcc$base_ver x86_64 x86_64-suse-linux add_glibc_bootstrap_cross cross-ppc64-gcc$base_ver ppc64 powerpc64-suse-linux %define add_newlib_cross cross-arm-none-gcc$base_ver arm-none arm-none-eabi #add_newlib_cross cross-epiphany-gcc$base_ver epiphany epiphany-elf ++++++ cross.spec.in ++++++ --- /var/tmp/diff_new_pack.mWM2YT/_old 2026-07-31 16:07:26.248700459 +0200 +++ /var/tmp/diff_new_pack.mWM2YT/_new 2026-07-31 16:07:26.252700598 +0200 @@ -162,6 +162,11 @@ %ifarch %{cross_arch} ExcludeArch: %{cross_arch} %endif +%if "%{cross_arch}" == "x86_64" && 0%{!?gcc_libc_bootstrap:1} +%ifarch %ix86 +ExclusiveArch: do-not-build +%endif +%endif %endif %if 0%{?gcc_libc_bootstrap:1} %if %{suse_version} < 1699 && "%{cross_arch}" == "loongarch64" ++++++ gcc-16.1.1+git8886.tar.xz -> gcc-16.1.1+git9423.tar.xz ++++++ /work/SRC/openSUSE:Factory/gcc16/gcc-16.1.1+git8886.tar.xz /work/SRC/openSUSE:Factory/.gcc16.new.2004/gcc-16.1.1+git9423.tar.xz differ: char 15, line 1 ++++++ gcc.obsinfo ++++++ --- /var/tmp/diff_new_pack.mWM2YT/_old 2026-07-31 16:07:26.316702825 +0200 +++ /var/tmp/diff_new_pack.mWM2YT/_new 2026-07-31 16:07:26.320702964 +0200 @@ -1,5 +1,5 @@ name: gcc -version: 16.1.1+git8886 -mtime: 1778221046 -commit: 27b8544e08922d4625a4e2787bd00f36af13d12f +version: 16.1.1+git9423 +mtime: 1785234422 +commit: 642e52b049a24b28a0495f4d2c08f97ad2cb6666 ++++++ gcc.spec.in ++++++ --- /var/tmp/diff_new_pack.mWM2YT/_old 2026-07-31 16:07:26.356704217 +0200 +++ /var/tmp/diff_new_pack.mWM2YT/_new 2026-07-31 16:07:26.360704356 +0200 @@ -1463,7 +1463,7 @@ add_flag= case $flag in -U_FORTIFY_SOURCE|-D_FORTIFY_SOURCE=*) ;; - -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*) ;; + -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*|-fhardened) ;; -ffortify=*|-Wall|-m32|-m64) ;; %ifarch %ix86 # -mcpu is superseded by -mtune but -mtune is not supported by @@ -1484,13 +1484,13 @@ *) add_flag=$flag ;; esac if test -n "$add_flag"; then - optflags+=" $add_flag" + optflags="$optflags $add_flag" case $add_flag in # Filter out -Werror=return-type for D (only valid for C and C++) -Werror=return-type) ;; # Likewise -Wtime_t-conversion -Wtime_t-conversion) ;; - *) optflags_d+=" $add_flag" ;; + *) optflags_d="$optflags_d $add_flag" ;; esac fi done ++++++ gcc15-Wtime_t-conversion.patch ++++++ --- /var/tmp/diff_new_pack.mWM2YT/_old 2026-07-31 16:07:26.380705052 +0200 +++ /var/tmp/diff_new_pack.mWM2YT/_new 2026-07-31 16:07:26.384705191 +0200 @@ -1,4 +1,4 @@ -From 35344d5a9209c58b4c28589d0f43b95c6d5f7c0d Mon Sep 17 00:00:00 2001 +From f6442abaa10819b87809565192414b30fea94030 Mon Sep 17 00:00:00 2001 From: Richard Biener <[email protected]> Date: Thu, 26 Jun 2025 10:14:54 +0200 Subject: [PATCH] c/96570 - diagnostics for conversions to/from time_t @@ -39,18 +39,18 @@ * c-c++-common/Wtime_t-1.c: New testcase. --- - gcc/c-family/c-warn.cc | 36 ++++++++++- + gcc/c-family/c-warn.cc | 37 ++++++++++- gcc/c-family/c.opt | 4 ++ gcc/doc/invoke.texi | 6 ++ - gcc/testsuite/c-c++-common/Wtime_t-1.c | 83 ++++++++++++++++++++++++++ - 4 files changed, 128 insertions(+), 1 deletion(-) + gcc/testsuite/c-c++-common/Wtime_t-1.c | 85 ++++++++++++++++++++++++++ + 4 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/c-c++-common/Wtime_t-1.c diff --git a/gcc/c-family/c-warn.cc b/gcc/c-family/c-warn.cc -index d547b08f55d..956807ac707 100644 +index 1767d2dc090..0205e89e156 100644 --- a/gcc/c-family/c-warn.cc +++ b/gcc/c-family/c-warn.cc -@@ -1394,6 +1394,17 @@ conversion_warning (location_t loc, tree type, tree expr, tree result) +@@ -1393,6 +1393,17 @@ conversion_warning (location_t loc, tree type, tree expr, tree result) return false; } @@ -68,7 +68,7 @@ /* Produce warnings after a conversion. RESULT is the result of converting EXPR to TYPE. This is a helper function for convert_and_check and cp_convert_and_check. */ -@@ -1506,7 +1517,30 @@ warnings_for_convert_and_check (location_t loc, tree type, tree expr, +@@ -1505,7 +1516,31 @@ warnings_for_convert_and_check (location_t loc, tree type, tree expr, exprtype, type, expr); } else @@ -80,6 +80,7 @@ + if (TREE_CODE (result) == INTEGER_CST) + ; + else if (is_time_t (TREE_TYPE (expr)) ++ && !COMPARISON_CLASS_P (result) + && INTEGRAL_TYPE_P (type) + && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (expr)) + /* A conversion to uint32_t or larger is OK. */ @@ -101,10 +102,10 @@ /* Subroutines of c_do_switch_warnings, called via splay_tree_foreach. diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt -index 75b6531860e..c94a1e32ec8 100644 +index 8bad323a437..064d4ac4782 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt -@@ -589,6 +589,10 @@ Wconversion-null +@@ -611,6 +611,10 @@ Wconversion-null C++ ObjC++ Var(warn_conversion_null) Init(1) Warning Warn for converting NULL from/to a non-pointer type. @@ -116,10 +117,10 @@ C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE) ; Documented in common.opt diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi -index e7af79e09ae..a40b47c870d 100644 +index 4fbd25e49dd..f47e6e54280 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi -@@ -9725,6 +9725,12 @@ unsigned integers are disabled by default in C++ unless +@@ -10266,6 +10266,12 @@ unsigned integers are disabled by default in C++ unless Warnings about conversion from arithmetic on a small type back to that type are only given with @option{-Warith-conversion}. @@ -134,15 +135,15 @@ @item -Wdangling-else diff --git a/gcc/testsuite/c-c++-common/Wtime_t-1.c b/gcc/testsuite/c-c++-common/Wtime_t-1.c new file mode 100644 -index 00000000000..dc9471ae366 +index 00000000000..e2c091f8005 --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wtime_t-1.c -@@ -0,0 +1,83 @@ +@@ -0,0 +1,85 @@ +/* Test for diagnostics for conversions between time_t and integer types + These tests are based on gcc.dg/Wconversion-integer.c */ + +/* { dg-do compile { target ilp32 } } */ -+/* { dg-options "-std=c99 -fsigned-char -Wtime_t-conversion" } */ ++/* { dg-options "-fsigned-char -Wtime_t-conversion" } */ + +#define __USE_TIME_BITS64 +#include <time.h> @@ -220,6 +221,8 @@ + t = (time_t)sl; + t = (time_t)ul; + t = (time_t)ull; ++ if (t) /* { dg-bogus "conversion" } */ ++ fsc (0); +} -- 2.51.0 ++++++ pre_checkin.sh ++++++ #!/bin/bash # This script is called automatically during autobuild checkin. case $0 in \./*) here=$PWD ;; */*) here=${0%/*} ;; *) here=$PWD ;; esac case ${here##*/} in gcc*.*) # Handle maintainance projects with .$REPO suffix suffix=${here##*/} suffix=${suffix%%\.*} set ${suffix#gcc} ;; gcc-*) suffix=${here##*/} set ${suffix#*-}- ;; gcc[0-9]*) suffix=${here##*/} set ${suffix#gcc} ;; esac . ${here}/change_spec
