Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gcc15 for openSUSE:Factory checked in at 2025-04-14 12:55:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gcc15 (Old) and /work/SRC/openSUSE:Factory/.gcc15.new.1907 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gcc15" Mon Apr 14 12:55:41 2025 rev:5 rq:1268364 version:15.0.1+git9352 Changes: -------- --- /work/SRC/openSUSE:Factory/gcc15/gcc15.changes 2025-03-31 11:39:06.438034483 +0200 +++ /work/SRC/openSUSE:Factory/.gcc15.new.1907/gcc15.changes 2025-04-14 12:56:18.431020623 +0200 @@ -1,0 +2,9 @@ +Thu Apr 10 06:17:49 UTC 2025 - Richard Biener <rguent...@suse.com> + +- Update to GCC trunk head, 15.0.1+git9352 +- Make sure link editing is done against our own shared library + copy rather than the installed system runtime. [bsc#1240788] +- Add newlib-gcn-libm-fix.patch to fix newlib libm miscompilation + for GCN offloading. + +------------------------------------------------------------------- Old: ---- gcc-15.0.1+git9001.tar.xz New: ---- gcc-15.0.1+git9352.tar.xz newlib-gcn-libm-fix.patch BETA DEBUG BEGIN: New: copy rather than the installed system runtime. [bsc#1240788] - Add newlib-gcn-libm-fix.patch to fix newlib libm miscompilation for GCN offloading. BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cross-aarch64-gcc15-bootstrap.spec ++++++ --- /var/tmp/diff_new_pack.6LwOH2/_old 2025-04-14 12:56:20.155093024 +0200 +++ /var/tmp/diff_new_pack.6LwOH2/_new 2025-04-14 12:56:20.155093024 +0200 @@ -102,7 +102,7 @@ %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ -Version: 15.0.1+git9001 +Version: 15.0.1+git9352 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/+/-/') @@ -128,6 +128,8 @@ # Some patches taken from Debian Patch60: gcc44-textdomain.patch Patch61: gcc44-rename-info-files.patch +# Patches for newlib +Patch70: newlib-gcn-libm-fix.patch # Define the canonical target and host architecture # %%gcc_target_arch is supposed to be the full target triple @@ -310,6 +312,7 @@ %if 0%{?nvptx_newlib:1}%{?amdgcn_newlib:1} %setup -q -n gcc-%{version} -a 5 ln -s newlib-4.5.0.20241231/newlib . +%patch -p1 -P 70 %else %setup -q -n gcc-%{version} %endif @@ -807,7 +810,7 @@ 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 +# 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. cross-aarch64-gcc15.spec: same change cross-amdgcn-gcc15.spec: same change cross-arm-gcc15.spec: same change cross-arm-none-gcc15-bootstrap.spec: same change cross-arm-none-gcc15.spec: same change cross-avr-gcc15-bootstrap.spec: same change cross-avr-gcc15.spec: same change cross-bpf-gcc15.spec: same change cross-hppa-gcc15-bootstrap.spec: same change cross-hppa-gcc15.spec: same change cross-loongarch64-gcc15-bootstrap.spec: same change cross-loongarch64-gcc15.spec: same change cross-m68k-gcc15.spec: same change cross-mips-gcc15.spec: same change cross-nvptx-gcc15.spec: same change cross-ppc64-gcc15.spec: same change cross-ppc64le-gcc15-bootstrap.spec: same change cross-ppc64le-gcc15.spec: same change cross-pru-gcc15-bootstrap.spec: same change cross-pru-gcc15.spec: same change cross-riscv64-elf-gcc15-bootstrap.spec: same change cross-riscv64-elf-gcc15.spec: same change cross-riscv64-gcc15-bootstrap.spec: same change cross-riscv64-gcc15.spec: same change cross-rx-gcc15-bootstrap.spec: same change cross-rx-gcc15.spec: same change cross-s390x-gcc15-bootstrap.spec: same change cross-s390x-gcc15.spec: same change cross-sparc-gcc15.spec: same change cross-sparc64-gcc15.spec: same change cross-x86_64-gcc15.spec: same change ++++++ gcc15-testresults.spec ++++++ --- /var/tmp/diff_new_pack.6LwOH2/_old 2025-04-14 12:56:21.083131996 +0200 +++ /var/tmp/diff_new_pack.6LwOH2/_new 2025-04-14 12:56:21.083131996 +0200 @@ -238,7 +238,7 @@ %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ -Version: 15.0.1+git9001 +Version: 15.0.1+git9352 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/+/-/') @@ -411,6 +411,8 @@ # Some patches taken from Debian Patch60: gcc44-textdomain.patch Patch61: gcc44-rename-info-files.patch +# Patches for newlib +Patch70: newlib-gcn-libm-fix.patch Summary: Testsuite results License: SUSE-Public-Domain @@ -521,6 +523,7 @@ %if 0%{?nvptx_newlib:1}%{?amdgcn_newlib:1} %setup -q -n gcc-%{version} -a 5 ln -s newlib-4.5.0.20241231/newlib . +%patch -p1 -P 70 %else %setup -q -n gcc-%{version} %endif ++++++ gcc15.spec ++++++ --- /var/tmp/diff_new_pack.6LwOH2/_old 2025-04-14 12:56:21.115133339 +0200 +++ /var/tmp/diff_new_pack.6LwOH2/_new 2025-04-14 12:56:21.115133339 +0200 @@ -217,7 +217,7 @@ %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ -Version: 15.0.1+git9001 +Version: 15.0.1+git9352 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/+/-/') @@ -390,6 +390,8 @@ # Some patches taken from Debian Patch60: gcc44-textdomain.patch Patch61: gcc44-rename-info-files.patch +# Patches for newlib +Patch70: newlib-gcn-libm-fix.patch License: GPL-3.0-or-later Summary: The GNU C Compiler and Support Files @@ -2448,6 +2450,7 @@ %if 0%{?nvptx_newlib:1}%{?amdgcn_newlib:1} %setup -q -n gcc-%{version} -a 5 ln -s newlib-4.5.0.20241231/newlib . +%patch -p1 -P 70 %else %setup -q -n gcc-%{version} %endif @@ -2992,7 +2995,8 @@ fi %endif -# move shared libs from versionspecific dir to main libdir +# move shared libs from versionspecific dir to main libdir, keep a copy +# for link-editing in the .so for libname in \ %if %{build_fortran} libgfortran \ @@ -3059,8 +3063,16 @@ mv $lib %{buildroot}/%{mainlibdir}/ done if test -L %{buildroot}/%{versmainlibdir}/$libname.so; then - ln -sf %{mainlibdir}/`readlink %{buildroot}/%{versmainlibdir}/$libname.so | sed -e 's/\(.*\.so\.[^\.]*\).*/\1/'` \ - %{buildroot}/%{versmainlibdir}/$libname.so + cp %{buildroot}/%{mainlibdir}/`readlink %{buildroot}/%{versmainlibdir}/$libname.so` \ + %{buildroot}/%{versmainlibdir}/$libname.so.tem + rm %{buildroot}/%{versmainlibdir}/$libname.so + mv %{buildroot}/%{versmainlibdir}/$libname.so.tem %{buildroot}/%{versmainlibdir}/$libname.so + strip -g %{buildroot}/%{versmainlibdir}/$libname.so + else + if test -e %{buildroot}/%{versmainlibdir}/$libname.so; then + echo ERROR: unexpected linker script for $libname.so + exit 1 + fi fi %if %{biarch} if test -d %{buildroot}/%{versmainlibdirbi}; then @@ -3068,8 +3080,16 @@ mv $lib %{buildroot}/%{mainlibdirbi}/ done if test -L %{buildroot}/%{versmainlibdirbi}/$libname.so; then - ln -sf %{mainlibdirbi}/`readlink %{buildroot}/%{versmainlibdirbi}/$libname.so | sed -e 's/\(.*\.so\.[^\.]*\).*/\1/'` \ - %{buildroot}/%{versmainlibdirbi}/$libname.so + cp %{buildroot}/%{mainlibdirbi}/`readlink %{buildroot}/%{versmainlibdirbi}/$libname.so` \ + %{buildroot}/%{versmainlibdirbi}/$libname.so.tem + rm %{buildroot}/%{versmainlibdirbi}/$libname.so + mv %{buildroot}/%{versmainlibdirbi}/$libname.so.tem %{buildroot}/%{versmainlibdirbi}/$libname.so + strip -g %{buildroot}/%{versmainlibdirbi}/$libname.so + else + if test -e %{buildroot}/%{versmainlibdirbi}/$libname.so; then + echo ERROR: unexpected linker script for $libname.so + exit 1 + fi fi fi %endif @@ -3089,40 +3109,50 @@ %endif %endif -# Move libgcc_s around +# Move libgcc_s around, make sure a version specific copy is available +# for link editing +chmod a+x %{buildroot}/%{_lib}/libgcc_s.so.%{libgcc_s} if test -L %{buildroot}/%{_lib}/libgcc_s.so; then rm -f %{buildroot}/%{_lib}/libgcc_s.so - ln -sf /%{_lib}/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdir}/libgcc_s.so + cp %{buildroot}//%{_lib}/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdir}/libgcc_s.so + strip -g %{buildroot}/%{versmainlibdir}/libgcc_s.so else mv %{buildroot}/%{_lib}/libgcc_s.so %{buildroot}/%{versmainlibdir}/ + cp %{buildroot}//%{_lib}/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdir}/libgcc_s.so.%{libgcc_s} + strip -g %{buildroot}/%{versmainlibdir}/libgcc_s.so.%{libgcc_s} fi -chmod a+x %{buildroot}/%{_lib}/libgcc_s.so.%{libgcc_s} %if 0%{?usrmerged} mv %{buildroot}/%{_lib}/libgcc_s.so.%{libgcc_s} %{buildroot}/%{_slibdir}/libgcc_s.so.%{libgcc_s} %endif %if %{biarch} +chmod a+x %{buildroot}/lib/libgcc_s.so.%{libgcc_s} %if %{build_primary_64bit} if test -L %{buildroot}/lib/libgcc_s.so; then rm -f %{buildroot}/lib/libgcc_s.so - ln -sf /lib/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi32}/libgcc_s.so + cp %{buildroot}/lib/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi32}/libgcc_s.so + strip -g %{buildroot}/%{versmainlibdirbi32}/libgcc_s.so else mv %{buildroot}/lib/libgcc_s.so %{buildroot}/%{versmainlibdirbi32}/ + cp %{buildroot}/lib/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi32}/libgcc_s.so.%{libgcc_s} + strip -g %{buildroot}/%{versmainlibdirbi32}/libgcc_s.so.%{libgcc_s} fi ln -sf %{versmainlibdirbi32}/libgcc_s.so %{buildroot}/%{versmainlibdirbi32}/libgcc_s_32.so -chmod a+x %{buildroot}/lib/libgcc_s.so.%{libgcc_s} %if 0%{?usrmerged} mv %{buildroot}/lib/libgcc_s.so.%{libgcc_s} %{buildroot}/%{slibdir}/libgcc_s.so.%{libgcc_s} %endif %else # 32-bit biarch systems +chmod a+x %{buildroot}/lib64/libgcc_s.so.%{libgcc_s} if test -L %{buildroot}/lib64/libgcc_s.so; then rm -f %{buildroot}/lib64/libgcc_s.so - ln -sf /lib64/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi64}/libgcc_s.so + cp %{buildroot}/lib64/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi64}/libgcc_s.so + strip -g %{buildroot}/%{versmainlibdirbi64}/libgcc_s.so else mv %{buildroot}/lib64/libgcc_s.so %{buildroot}/%{versmainlibdirbi64}/ + cp %{buildroot}/lib64/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi64}/libgcc_s.so.%{libgcc_s} + strip -g %{buildroot}/%{versmainlibdirbi64}/libgcc_s.so.%{libgcc_s} fi ln -sf %{versmainlibdirbi64}/libgcc_s.so %{buildroot}/%{versmainlibdirbi64}/libgcc_s_64.so -chmod a+x %{buildroot}/lib64/libgcc_s.so.%{libgcc_s} %if 0%{?usrmerged} mv %{buildroot}/lib64/libgcc_s.so.%{libgcc_s} %{buildroot}/%{slibdir64}/libgcc_s.so.%{libgcc_s} %endif @@ -3176,7 +3206,7 @@ %endif # Remove files that we do not need to clean up filelist -# Preserve %{GCCDIST}-gcc%{binsuffix} binary for libgccjit as it is used as a driver +# Preserve %%{GCCDIST}-gcc%%{binsuffix} binary for libgccjit as it is used as a driver mv %{buildroot}/%{_prefix}/bin/%{GCCDIST}-gcc%{binsuffix} %{buildroot} rm -f %{buildroot}/%{_prefix}/bin/%{GCCDIST}-* mv %{buildroot}/%{GCCDIST}-gcc%{binsuffix} %{buildroot}/%{_prefix}/bin/ @@ -3577,7 +3607,7 @@ %versmainlib *crt*.o %versmainlib libgcc*.a %versmainlib libgcov.a -%versmainlib libgcc_s*.so +%versmainlib libgcc_s*.so* %versmainlib libgomp.so %versmainlib libgomp.a %versmainlib libgomp.spec @@ -3643,7 +3673,7 @@ %versbiarchlib *crt*.o %versbiarchlib libgcc*.a %versbiarchlib libgcov.a -%versbiarchlib libgcc_s*.so +%versbiarchlib libgcc_s*.so* %versbiarchlib libgomp.so %versbiarchlib libgomp.a %versbiarchlib libgomp.spec @@ -4302,6 +4332,7 @@ %{libsubdir}/cobol1 %versmainlib libgcobol.a %versmainlib libgcobol.so +%versmainlib libgcobol.spec %doc %{_mandir}/man1/gcobol%{binsuffix}.1.gz %doc %{_mandir}/man3/gcobol%{binsuffix}.3.gz ++++++ cross.spec.in ++++++ --- /var/tmp/diff_new_pack.6LwOH2/_old 2025-04-14 12:56:21.283140395 +0200 +++ /var/tmp/diff_new_pack.6LwOH2/_new 2025-04-14 12:56:21.287140562 +0200 @@ -291,7 +291,7 @@ 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 +# 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. ++++++ gcc-15.0.1+git9001.tar.xz -> gcc-15.0.1+git9352.tar.xz ++++++ /work/SRC/openSUSE:Factory/gcc15/gcc-15.0.1+git9001.tar.xz /work/SRC/openSUSE:Factory/.gcc15.new.1907/gcc-15.0.1+git9352.tar.xz differ: char 15, line 1 ++++++ gcc.obsinfo ++++++ --- /var/tmp/diff_new_pack.6LwOH2/_old 2025-04-14 12:56:21.335142578 +0200 +++ /var/tmp/diff_new_pack.6LwOH2/_new 2025-04-14 12:56:21.335142578 +0200 @@ -1,5 +1,5 @@ name: gcc -version: 15.0.1+git9001 -mtime: 1743148447 -commit: 9ac0ff5ea5f5a2c96f1599d271a42e226929d30b +version: 15.0.1+git9352 +mtime: 1744244286 +commit: 6284f555e877c75ddecc776286ec4b8c20007de2 ++++++ gcc.spec.in ++++++ --- /var/tmp/diff_new_pack.6LwOH2/_old 2025-04-14 12:56:21.363143754 +0200 +++ /var/tmp/diff_new_pack.6LwOH2/_new 2025-04-14 12:56:21.367143922 +0200 @@ -395,6 +395,8 @@ # Some patches taken from Debian Patch60: gcc44-textdomain.patch Patch61: gcc44-rename-info-files.patch +# Patches for newlib +Patch70: newlib-gcn-libm-fix.patch # GCC-TESTSUITE-DELETE-BEGIN # SRC-COMMON-END @@ -1375,6 +1377,7 @@ %if 0%{?nvptx_newlib:1}%{?amdgcn_newlib:1} %setup -q -n gcc-%{version} -a 5 ln -s newlib-4.5.0.20241231/newlib . +%patch -p1 -P 70 %else %setup -q -n gcc-%{version} %endif @@ -1922,7 +1925,8 @@ fi %endif -# move shared libs from versionspecific dir to main libdir +# move shared libs from versionspecific dir to main libdir, keep a copy +# for link-editing in the .so for libname in \ %if %{build_fortran} libgfortran \ @@ -1989,8 +1993,16 @@ mv $lib %{buildroot}/%{mainlibdir}/ done if test -L %{buildroot}/%{versmainlibdir}/$libname.so; then - ln -sf %{mainlibdir}/`readlink %{buildroot}/%{versmainlibdir}/$libname.so | sed -e 's/\(.*\.so\.[^\.]*\).*/\1/'` \ - %{buildroot}/%{versmainlibdir}/$libname.so + cp %{buildroot}/%{mainlibdir}/`readlink %{buildroot}/%{versmainlibdir}/$libname.so` \ + %{buildroot}/%{versmainlibdir}/$libname.so.tem + rm %{buildroot}/%{versmainlibdir}/$libname.so + mv %{buildroot}/%{versmainlibdir}/$libname.so.tem %{buildroot}/%{versmainlibdir}/$libname.so + strip -g %{buildroot}/%{versmainlibdir}/$libname.so + else + if test -e %{buildroot}/%{versmainlibdir}/$libname.so; then + echo ERROR: unexpected linker script for $libname.so + exit 1 + fi fi %if %{biarch} if test -d %{buildroot}/%{versmainlibdirbi}; then @@ -1998,8 +2010,16 @@ mv $lib %{buildroot}/%{mainlibdirbi}/ done if test -L %{buildroot}/%{versmainlibdirbi}/$libname.so; then - ln -sf %{mainlibdirbi}/`readlink %{buildroot}/%{versmainlibdirbi}/$libname.so | sed -e 's/\(.*\.so\.[^\.]*\).*/\1/'` \ - %{buildroot}/%{versmainlibdirbi}/$libname.so + cp %{buildroot}/%{mainlibdirbi}/`readlink %{buildroot}/%{versmainlibdirbi}/$libname.so` \ + %{buildroot}/%{versmainlibdirbi}/$libname.so.tem + rm %{buildroot}/%{versmainlibdirbi}/$libname.so + mv %{buildroot}/%{versmainlibdirbi}/$libname.so.tem %{buildroot}/%{versmainlibdirbi}/$libname.so + strip -g %{buildroot}/%{versmainlibdirbi}/$libname.so + else + if test -e %{buildroot}/%{versmainlibdirbi}/$libname.so; then + echo ERROR: unexpected linker script for $libname.so + exit 1 + fi fi fi %endif @@ -2019,40 +2039,50 @@ %endif %endif -# Move libgcc_s around +# Move libgcc_s around, make sure a version specific copy is available +# for link editing +chmod a+x %{buildroot}/%{_lib}/libgcc_s.so.%{libgcc_s} if test -L %{buildroot}/%{_lib}/libgcc_s.so; then rm -f %{buildroot}/%{_lib}/libgcc_s.so - ln -sf /%{_lib}/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdir}/libgcc_s.so + cp %{buildroot}//%{_lib}/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdir}/libgcc_s.so + strip -g %{buildroot}/%{versmainlibdir}/libgcc_s.so else mv %{buildroot}/%{_lib}/libgcc_s.so %{buildroot}/%{versmainlibdir}/ + cp %{buildroot}//%{_lib}/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdir}/libgcc_s.so.%{libgcc_s} + strip -g %{buildroot}/%{versmainlibdir}/libgcc_s.so.%{libgcc_s} fi -chmod a+x %{buildroot}/%{_lib}/libgcc_s.so.%{libgcc_s} %if 0%{?usrmerged} mv %{buildroot}/%{_lib}/libgcc_s.so.%{libgcc_s} %{buildroot}/%{_slibdir}/libgcc_s.so.%{libgcc_s} %endif %if %{biarch} +chmod a+x %{buildroot}/lib/libgcc_s.so.%{libgcc_s} %if %{build_primary_64bit} if test -L %{buildroot}/lib/libgcc_s.so; then rm -f %{buildroot}/lib/libgcc_s.so - ln -sf /lib/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi32}/libgcc_s.so + cp %{buildroot}/lib/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi32}/libgcc_s.so + strip -g %{buildroot}/%{versmainlibdirbi32}/libgcc_s.so else mv %{buildroot}/lib/libgcc_s.so %{buildroot}/%{versmainlibdirbi32}/ + cp %{buildroot}/lib/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi32}/libgcc_s.so.%{libgcc_s} + strip -g %{buildroot}/%{versmainlibdirbi32}/libgcc_s.so.%{libgcc_s} fi ln -sf %{versmainlibdirbi32}/libgcc_s.so %{buildroot}/%{versmainlibdirbi32}/libgcc_s_32.so -chmod a+x %{buildroot}/lib/libgcc_s.so.%{libgcc_s} %if 0%{?usrmerged} mv %{buildroot}/lib/libgcc_s.so.%{libgcc_s} %{buildroot}/%{slibdir}/libgcc_s.so.%{libgcc_s} %endif %else # 32-bit biarch systems +chmod a+x %{buildroot}/lib64/libgcc_s.so.%{libgcc_s} if test -L %{buildroot}/lib64/libgcc_s.so; then rm -f %{buildroot}/lib64/libgcc_s.so - ln -sf /lib64/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi64}/libgcc_s.so + cp %{buildroot}/lib64/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi64}/libgcc_s.so + strip -g %{buildroot}/%{versmainlibdirbi64}/libgcc_s.so else mv %{buildroot}/lib64/libgcc_s.so %{buildroot}/%{versmainlibdirbi64}/ + cp %{buildroot}/lib64/libgcc_s.so.%{libgcc_s} %{buildroot}/%{versmainlibdirbi64}/libgcc_s.so.%{libgcc_s} + strip -g %{buildroot}/%{versmainlibdirbi64}/libgcc_s.so.%{libgcc_s} fi ln -sf %{versmainlibdirbi64}/libgcc_s.so %{buildroot}/%{versmainlibdirbi64}/libgcc_s_64.so -chmod a+x %{buildroot}/lib64/libgcc_s.so.%{libgcc_s} %if 0%{?usrmerged} mv %{buildroot}/lib64/libgcc_s.so.%{libgcc_s} %{buildroot}/%{slibdir64}/libgcc_s.so.%{libgcc_s} %endif @@ -2108,7 +2138,7 @@ # GCC-TESTSUITE-DELETE-BEGIN # Remove files that we do not need to clean up filelist -# Preserve %{GCCDIST}-gcc%{binsuffix} binary for libgccjit as it is used as a driver +# Preserve %%{GCCDIST}-gcc%%{binsuffix} binary for libgccjit as it is used as a driver mv %{buildroot}/%{_prefix}/bin/%{GCCDIST}-gcc%{binsuffix} %{buildroot} rm -f %{buildroot}/%{_prefix}/bin/%{GCCDIST}-* mv %{buildroot}/%{GCCDIST}-gcc%{binsuffix} %{buildroot}/%{_prefix}/bin/ @@ -2510,7 +2540,7 @@ %versmainlib *crt*.o %versmainlib libgcc*.a %versmainlib libgcov.a -%versmainlib libgcc_s*.so +%versmainlib libgcc_s*.so* %versmainlib libgomp.so %versmainlib libgomp.a %versmainlib libgomp.spec @@ -2576,7 +2606,7 @@ %versbiarchlib *crt*.o %versbiarchlib libgcc*.a %versbiarchlib libgcov.a -%versbiarchlib libgcc_s*.so +%versbiarchlib libgcc_s*.so* %versbiarchlib libgomp.so %versbiarchlib libgomp.a %versbiarchlib libgomp.spec @@ -3247,6 +3277,7 @@ %{libsubdir}/cobol1 %versmainlib libgcobol.a %versmainlib libgcobol.so +%versmainlib libgcobol.spec %doc %{_mandir}/man1/gcobol%{binsuffix}.1.gz %doc %{_mandir}/man3/gcobol%{binsuffix}.3.gz ++++++ newlib-gcn-libm-fix.patch ++++++ >From 2ef1a37e7823b21eda524972c006e0e8c26f97b3 Mon Sep 17 00:00:00 2001 From: Andrew Stubbs <a...@baylibre.com> Date: Thu, 20 Mar 2025 09:32:31 +0000 Subject: [PATCH] Fix GCN SIMD libm bug Since January, GCC has been miscompiling Newlib libm on AMD GCN due to undefined behaviour in the RESIZE_VECTOR macro. It was "working" but expanding the size of a vector would no longer zero the additional lanes, as it expected. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119325 --- newlib/libm/machine/amdgcn/amdgcn_veclib.h | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/newlib/libm/machine/amdgcn/amdgcn_veclib.h b/newlib/libm/machine/amdgcn/amdgcn_veclib.h index bd67740ac..9e9d3ebf0 100644 --- a/newlib/libm/machine/amdgcn/amdgcn_veclib.h +++ b/newlib/libm/machine/amdgcn/amdgcn_veclib.h @@ -85,8 +85,21 @@ typedef union { #define RESIZE_VECTOR(to_t, from) \ ({ \ - __auto_type __from = (from); \ - *((to_t *) &__from); \ + to_t __to; \ + if (VECTOR_WIDTH (to_t) < VECTOR_WIDTH (__typeof (from))) \ + asm ("; no-op cast %0" : "=v"(__to) : "0"(from)); \ + else \ + { \ + unsigned long __mask = -1L; \ + int lanes = VECTOR_WIDTH (__typeof (from)); \ + __mask <<= lanes; \ + __builtin_choose_expr ( \ + V_SF_SI_P (to_t), \ + ({asm ("v_mov_b32 %0, 0" : "=v"(__to) : "0"(from), "e"(__mask));}), \ + ({asm ("v_mov_b32 %H0, 0\n\t" \ + "v_mov_b32 %L0, 0" : "=v"(__to) : "0"(from), "e"(__mask));})); \ + } \ + __to; \ }) /* Bit-wise cast vector FROM to type TO_T. */ -- 2.43.0