packaging: Bump version to 12.2.0
authorDongkyun Son <dongkyun.s@samsung.com>
Wed, 8 Feb 2023 08:17:40 +0000 (17:17 +0900)
committerSlava Barinov <v.barinov@samsung.com>
Thu, 27 Apr 2023 09:07:04 +0000 (12:07 +0300)
Change-Id: I1e5119b75e065ffd7a27715627de7347d873716f
Signed-off-by: Dongkyun Son <dongkyun.s@samsung.com>
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
packaging/gcc-aarch64.spec
packaging/gcc-armv7hl.spec
packaging/gcc-armv7l.spec
packaging/gcc.spec

index 04aa774..3ef9350 100644 (file)
@@ -67,7 +67,8 @@
 %define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64
 %define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64
 %define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k
-%define lsan_arch x86_64 %ix86 %arm aarch64
+%define lsan_arch x86_64 aarch64
+%define hwasan_arch aarch64
 %define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64
 
 %ifarch armv7l
@@ -105,6 +106,7 @@ BuildRequires: makeinfo
 ## until here, but at least renaming and patching info files breaks this
 BuildRequires: gcc-c++
 BuildRequires: zlib-devel
+BuildRequires: xz-devel
 %ifarch x86_64
 BuildRequires: glibc-devel-32bit
 %endif
@@ -120,7 +122,7 @@ BuildRequires: expect
 BuildRequires: configure-dumper
 %endif
 URL:           http://gcc.gnu.org/
-Version:       9.2.0
+Version:       12.2.0
 Release:       0
 Source:        gcc-%{version}.tar.bz2
 Source10:      gmp-6.1.2.tar.bz2
@@ -297,6 +299,16 @@ The runtime library needed to run programs compiled with the
 %post -n libasan -p /sbin/ldconfig
 %postun -n libasan -p /sbin/ldconfig
 
+%package -n libhwasan
+Summary:       The GNU Compiler Hardware-assisted Address Sanitizer Runtime Library
+License:       MIT
+Group:         Development/Languages
+%description -n libhwasan
+The runtime library needed to run programs compiled with the
+-fsanitize=address option of the GNU Compiler Collection (GCC).
+%post -n libhwasan -p /sbin/ldconfig
+%postun -n libhwasan -p /sbin/ldconfig
+
 %package -n libtsan
 Summary:       The GNU Compiler Thread Sanitizer Runtime Library
 License:       MIT
@@ -782,6 +794,7 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --without-system-libunwind \
        --enable-threads=posix \
        --disable-multilib \
+       --disable-cet \
        --enable-lto \
 %{!?cross: \
        --enable-libcc1 \
@@ -846,10 +859,27 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --target=%{target_arch} \
        --host=%{host_arch} \
        --build=%{host_arch}
+ }
+
+%{?!cross:
+  # During native compiler build with qemu-accel enabled we have to provide
+  # path to accelerated lto_plugin.so to prevent
+  #    error loading plugin: /home/abuild/rpmbuild/BUILD/gcc-12.2.0/obj/./gcc/liblto_plugin.so: wrong ELF class: ELFCLASS32
+  # So we have to update:
+  # - CC_FOR_TARGET
+  # - GCC_FOR_TARGET
+  # - CXX_FOR_TARGET
+  # - RAW_CXX_FOR_TARGET
+  # And provide path to liblto_plugin inside /emul via -B option
+  # Changing configure.ac and adding a dependency from qemu-accel there is not
+  # reasonable, so here we patch a Makefile after configure is competed
+
+  [[ -e '/emul' ]] && \
+      sed -e '/^\(G\?CC_FOR_TARGET\)=\|^\(\(RAW_\)\?CXX_FOR_TARGET\)=/s#\(xg\(cc\|++\)\)#\1 -B/emul%{libsubdir}/#' -i Makefile
 }
 
 %{!?gcc_skip_make:
-make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledbootstrap:profiledbootstrap}}
+make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledbootstrap:profiledbootstrap}} %{?cross:all-host}
 %{?gcc_dump_configure:
  dump_configure.pl .. . \
                   --project gcc \
@@ -877,7 +907,7 @@ make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledboots
 %install
 cd obj
 
-make install DESTDIR=$RPM_BUILD_ROOT
+make install%{?cross:-host} DESTDIR=$RPM_BUILD_ROOT
 
 %{?gcc_dump_configure:
   install -D -m 0644 gcc-%{version}-%{release}-%_project-%_repository.db %{buildroot}%{_datadir}/gcc-%{version}-%{release}-%_project-%_repository.db
@@ -900,10 +930,6 @@ find %{buildroot}/ -name "*.la" -delete
 ln -s gcc %{buildroot}%{_bindir}/cc
 mv %{buildroot}%{libsubdir}/libstdc++.so*-gdb.py %{buildroot}%{_datadir}/gcc-%{version}/python/libstdcxx/
 
-# expose plugins for ar (required for lto builds)
-mkdir -p %{buildroot}%{_prefix}/lib/bfd-plugins
-ln -sf %{libsubdir}/liblto_plugin.so %{buildroot}%{_prefix}/lib/bfd-plugins/liblto_plugin.so
-
 # legacy preprocessor
 mkdir -p %{buildroot}/lib
 ln -s %{_bindir}/cpp %{buildroot}/lib/cpp
@@ -949,6 +975,7 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{_bindir}/gcc-ar
 %{_bindir}/gcc-nm
 %{_bindir}/gcc-ranlib
+%{_bindir}/lto-dump
 %{_bindir}/%{target_arch}-gcc
 %{_bindir}/%{target_arch}-gcc-%{version}
 %{_bindir}/%{target_arch}-gcc-ar
@@ -958,7 +985,7 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libsubdir}/lto1
 %{libsubdir}/lto-wrapper
 %{libsubdir}/liblto_plugin.so*
-%{_prefix}/lib/bfd-plugins/liblto_plugin.so
+%{libsubdir}/g++-mapper-server
 %{libsubdir}/include-fixed/*
 %{libsubdir}/include/*.h
 %{libsubdir}/*.so
@@ -1032,6 +1059,14 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libdir}/libasan.so*
 %endif
 
+%ifarch %hwasan_arch
+%files -n libhwasan
+%manifest gcc.manifest
+%license libsanitizer/LICENSE.TXT
+%defattr(-,root,root)
+%{libsubdir}/libhwasan.so*
+%endif
+
 %ifarch %lsan_arch
 %files -n liblsan
 %manifest gcc.manifest
@@ -1114,7 +1149,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch x86_64
 %files -n gcc-32bit
 %defattr(-,root,root)
-%{libsubdir}/32/crt*
 %{libsubdir}/32/*.a
 %{libsubdir}/32/*.so
 %{libsubdir}/32/*.o
@@ -1128,14 +1162,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libsubdir}/32/libasan.so.*
 %endif
 
-%ifarch %lsan_arch
-%files -n liblsan-32bit
-%manifest gcc.manifest
-%license libsanitizer/LICENSE.TXT
-%defattr(-,root,root)
-%{libsubdir}/32/liblsan.so.*
-%endif
-
 %ifarch %atomic_arch
 %files -n libatomic-32bit
 %manifest gcc.manifest
@@ -1217,6 +1243,9 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch %asan_arch
 %{libdir}/libasan.a
 %endif
+%ifarch %hwasan_arch
+%{libsubdir}/libhwasan.a
+%endif
 %ifarch %lsan_arch
 %{libdir}/liblsan.a
 %endif
@@ -1236,9 +1265,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch %asan_arch
 %{libsubdir}/32/libasan.a
 %endif
-%ifarch %lsan_arch
-%{libsubdir}/32/liblsan.a
-%endif
 %ifarch %ubsan_arch
 %{libsubdir}/32/libubsan.a
 %endif
index d2f1373..e828c3c 100644 (file)
@@ -67,7 +67,8 @@
 %define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64
 %define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64
 %define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k
-%define lsan_arch x86_64 %ix86 %arm aarch64
+%define lsan_arch x86_64 aarch64
+%define hwasan_arch aarch64
 %define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64
 
 %ifarch armv7l
@@ -105,6 +106,7 @@ BuildRequires: makeinfo
 ## until here, but at least renaming and patching info files breaks this
 BuildRequires: gcc-c++
 BuildRequires: zlib-devel
+BuildRequires: xz-devel
 %ifarch x86_64
 BuildRequires: glibc-devel-32bit
 %endif
@@ -120,7 +122,7 @@ BuildRequires: expect
 BuildRequires: configure-dumper
 %endif
 URL:           http://gcc.gnu.org/
-Version:       9.2.0
+Version:       12.2.0
 Release:       0
 Source:        gcc-%{version}.tar.bz2
 Source10:      gmp-6.1.2.tar.bz2
@@ -297,6 +299,16 @@ The runtime library needed to run programs compiled with the
 %post -n libasan -p /sbin/ldconfig
 %postun -n libasan -p /sbin/ldconfig
 
+%package -n libhwasan
+Summary:       The GNU Compiler Hardware-assisted Address Sanitizer Runtime Library
+License:       MIT
+Group:         Development/Languages
+%description -n libhwasan
+The runtime library needed to run programs compiled with the
+-fsanitize=address option of the GNU Compiler Collection (GCC).
+%post -n libhwasan -p /sbin/ldconfig
+%postun -n libhwasan -p /sbin/ldconfig
+
 %package -n libtsan
 Summary:       The GNU Compiler Thread Sanitizer Runtime Library
 License:       MIT
@@ -782,6 +794,7 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --without-system-libunwind \
        --enable-threads=posix \
        --disable-multilib \
+       --disable-cet \
        --enable-lto \
 %{!?cross: \
        --enable-libcc1 \
@@ -846,10 +859,27 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --target=%{target_arch} \
        --host=%{host_arch} \
        --build=%{host_arch}
+ }
+
+%{?!cross:
+  # During native compiler build with qemu-accel enabled we have to provide
+  # path to accelerated lto_plugin.so to prevent
+  #    error loading plugin: /home/abuild/rpmbuild/BUILD/gcc-12.2.0/obj/./gcc/liblto_plugin.so: wrong ELF class: ELFCLASS32
+  # So we have to update:
+  # - CC_FOR_TARGET
+  # - GCC_FOR_TARGET
+  # - CXX_FOR_TARGET
+  # - RAW_CXX_FOR_TARGET
+  # And provide path to liblto_plugin inside /emul via -B option
+  # Changing configure.ac and adding a dependency from qemu-accel there is not
+  # reasonable, so here we patch a Makefile after configure is competed
+
+  [[ -e '/emul' ]] && \
+      sed -e '/^\(G\?CC_FOR_TARGET\)=\|^\(\(RAW_\)\?CXX_FOR_TARGET\)=/s#\(xg\(cc\|++\)\)#\1 -B/emul%{libsubdir}/#' -i Makefile
 }
 
 %{!?gcc_skip_make:
-make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledbootstrap:profiledbootstrap}}
+make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledbootstrap:profiledbootstrap}} %{?cross:all-host}
 %{?gcc_dump_configure:
  dump_configure.pl .. . \
                   --project gcc \
@@ -877,7 +907,7 @@ make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledboots
 %install
 cd obj
 
-make install DESTDIR=$RPM_BUILD_ROOT
+make install%{?cross:-host} DESTDIR=$RPM_BUILD_ROOT
 
 %{?gcc_dump_configure:
   install -D -m 0644 gcc-%{version}-%{release}-%_project-%_repository.db %{buildroot}%{_datadir}/gcc-%{version}-%{release}-%_project-%_repository.db
@@ -900,10 +930,6 @@ find %{buildroot}/ -name "*.la" -delete
 ln -s gcc %{buildroot}%{_bindir}/cc
 mv %{buildroot}%{libsubdir}/libstdc++.so*-gdb.py %{buildroot}%{_datadir}/gcc-%{version}/python/libstdcxx/
 
-# expose plugins for ar (required for lto builds)
-mkdir -p %{buildroot}%{_prefix}/lib/bfd-plugins
-ln -sf %{libsubdir}/liblto_plugin.so %{buildroot}%{_prefix}/lib/bfd-plugins/liblto_plugin.so
-
 # legacy preprocessor
 mkdir -p %{buildroot}/lib
 ln -s %{_bindir}/cpp %{buildroot}/lib/cpp
@@ -949,6 +975,7 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{_bindir}/gcc-ar
 %{_bindir}/gcc-nm
 %{_bindir}/gcc-ranlib
+%{_bindir}/lto-dump
 %{_bindir}/%{target_arch}-gcc
 %{_bindir}/%{target_arch}-gcc-%{version}
 %{_bindir}/%{target_arch}-gcc-ar
@@ -958,7 +985,7 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libsubdir}/lto1
 %{libsubdir}/lto-wrapper
 %{libsubdir}/liblto_plugin.so*
-%{_prefix}/lib/bfd-plugins/liblto_plugin.so
+%{libsubdir}/g++-mapper-server
 %{libsubdir}/include-fixed/*
 %{libsubdir}/include/*.h
 %{libsubdir}/*.so
@@ -1032,6 +1059,14 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libdir}/libasan.so*
 %endif
 
+%ifarch %hwasan_arch
+%files -n libhwasan
+%manifest gcc.manifest
+%license libsanitizer/LICENSE.TXT
+%defattr(-,root,root)
+%{libsubdir}/libhwasan.so*
+%endif
+
 %ifarch %lsan_arch
 %files -n liblsan
 %manifest gcc.manifest
@@ -1114,7 +1149,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch x86_64
 %files -n gcc-32bit
 %defattr(-,root,root)
-%{libsubdir}/32/crt*
 %{libsubdir}/32/*.a
 %{libsubdir}/32/*.so
 %{libsubdir}/32/*.o
@@ -1128,14 +1162,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libsubdir}/32/libasan.so.*
 %endif
 
-%ifarch %lsan_arch
-%files -n liblsan-32bit
-%manifest gcc.manifest
-%license libsanitizer/LICENSE.TXT
-%defattr(-,root,root)
-%{libsubdir}/32/liblsan.so.*
-%endif
-
 %ifarch %atomic_arch
 %files -n libatomic-32bit
 %manifest gcc.manifest
@@ -1217,6 +1243,9 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch %asan_arch
 %{libdir}/libasan.a
 %endif
+%ifarch %hwasan_arch
+%{libsubdir}/libhwasan.a
+%endif
 %ifarch %lsan_arch
 %{libdir}/liblsan.a
 %endif
@@ -1236,9 +1265,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch %asan_arch
 %{libsubdir}/32/libasan.a
 %endif
-%ifarch %lsan_arch
-%{libsubdir}/32/liblsan.a
-%endif
 %ifarch %ubsan_arch
 %{libsubdir}/32/libubsan.a
 %endif
index 6713410..5f32f1f 100644 (file)
@@ -67,7 +67,8 @@
 %define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64
 %define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64
 %define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k
-%define lsan_arch x86_64 %ix86 %arm aarch64
+%define lsan_arch x86_64 aarch64
+%define hwasan_arch aarch64
 %define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64
 
 %ifarch armv7l
@@ -105,6 +106,7 @@ BuildRequires: makeinfo
 ## until here, but at least renaming and patching info files breaks this
 BuildRequires: gcc-c++
 BuildRequires: zlib-devel
+BuildRequires: xz-devel
 %ifarch x86_64
 BuildRequires: glibc-devel-32bit
 %endif
@@ -120,7 +122,7 @@ BuildRequires: expect
 BuildRequires: configure-dumper
 %endif
 URL:           http://gcc.gnu.org/
-Version:       9.2.0
+Version:       12.2.0
 Release:       0
 Source:        gcc-%{version}.tar.bz2
 Source10:      gmp-6.1.2.tar.bz2
@@ -297,6 +299,16 @@ The runtime library needed to run programs compiled with the
 %post -n libasan -p /sbin/ldconfig
 %postun -n libasan -p /sbin/ldconfig
 
+%package -n libhwasan
+Summary:       The GNU Compiler Hardware-assisted Address Sanitizer Runtime Library
+License:       MIT
+Group:         Development/Languages
+%description -n libhwasan
+The runtime library needed to run programs compiled with the
+-fsanitize=address option of the GNU Compiler Collection (GCC).
+%post -n libhwasan -p /sbin/ldconfig
+%postun -n libhwasan -p /sbin/ldconfig
+
 %package -n libtsan
 Summary:       The GNU Compiler Thread Sanitizer Runtime Library
 License:       MIT
@@ -782,6 +794,7 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --without-system-libunwind \
        --enable-threads=posix \
        --disable-multilib \
+       --disable-cet \
        --enable-lto \
 %{!?cross: \
        --enable-libcc1 \
@@ -846,10 +859,27 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --target=%{target_arch} \
        --host=%{host_arch} \
        --build=%{host_arch}
+ }
+
+%{?!cross:
+  # During native compiler build with qemu-accel enabled we have to provide
+  # path to accelerated lto_plugin.so to prevent
+  #    error loading plugin: /home/abuild/rpmbuild/BUILD/gcc-12.2.0/obj/./gcc/liblto_plugin.so: wrong ELF class: ELFCLASS32
+  # So we have to update:
+  # - CC_FOR_TARGET
+  # - GCC_FOR_TARGET
+  # - CXX_FOR_TARGET
+  # - RAW_CXX_FOR_TARGET
+  # And provide path to liblto_plugin inside /emul via -B option
+  # Changing configure.ac and adding a dependency from qemu-accel there is not
+  # reasonable, so here we patch a Makefile after configure is competed
+
+  [[ -e '/emul' ]] && \
+      sed -e '/^\(G\?CC_FOR_TARGET\)=\|^\(\(RAW_\)\?CXX_FOR_TARGET\)=/s#\(xg\(cc\|++\)\)#\1 -B/emul%{libsubdir}/#' -i Makefile
 }
 
 %{!?gcc_skip_make:
-make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledbootstrap:profiledbootstrap}}
+make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledbootstrap:profiledbootstrap}} %{?cross:all-host}
 %{?gcc_dump_configure:
  dump_configure.pl .. . \
                   --project gcc \
@@ -877,7 +907,7 @@ make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledboots
 %install
 cd obj
 
-make install DESTDIR=$RPM_BUILD_ROOT
+make install%{?cross:-host} DESTDIR=$RPM_BUILD_ROOT
 
 %{?gcc_dump_configure:
   install -D -m 0644 gcc-%{version}-%{release}-%_project-%_repository.db %{buildroot}%{_datadir}/gcc-%{version}-%{release}-%_project-%_repository.db
@@ -900,10 +930,6 @@ find %{buildroot}/ -name "*.la" -delete
 ln -s gcc %{buildroot}%{_bindir}/cc
 mv %{buildroot}%{libsubdir}/libstdc++.so*-gdb.py %{buildroot}%{_datadir}/gcc-%{version}/python/libstdcxx/
 
-# expose plugins for ar (required for lto builds)
-mkdir -p %{buildroot}%{_prefix}/lib/bfd-plugins
-ln -sf %{libsubdir}/liblto_plugin.so %{buildroot}%{_prefix}/lib/bfd-plugins/liblto_plugin.so
-
 # legacy preprocessor
 mkdir -p %{buildroot}/lib
 ln -s %{_bindir}/cpp %{buildroot}/lib/cpp
@@ -949,6 +975,7 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{_bindir}/gcc-ar
 %{_bindir}/gcc-nm
 %{_bindir}/gcc-ranlib
+%{_bindir}/lto-dump
 %{_bindir}/%{target_arch}-gcc
 %{_bindir}/%{target_arch}-gcc-%{version}
 %{_bindir}/%{target_arch}-gcc-ar
@@ -958,7 +985,7 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libsubdir}/lto1
 %{libsubdir}/lto-wrapper
 %{libsubdir}/liblto_plugin.so*
-%{_prefix}/lib/bfd-plugins/liblto_plugin.so
+%{libsubdir}/g++-mapper-server
 %{libsubdir}/include-fixed/*
 %{libsubdir}/include/*.h
 %{libsubdir}/*.so
@@ -1032,6 +1059,14 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libdir}/libasan.so*
 %endif
 
+%ifarch %hwasan_arch
+%files -n libhwasan
+%manifest gcc.manifest
+%license libsanitizer/LICENSE.TXT
+%defattr(-,root,root)
+%{libsubdir}/libhwasan.so*
+%endif
+
 %ifarch %lsan_arch
 %files -n liblsan
 %manifest gcc.manifest
@@ -1114,7 +1149,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch x86_64
 %files -n gcc-32bit
 %defattr(-,root,root)
-%{libsubdir}/32/crt*
 %{libsubdir}/32/*.a
 %{libsubdir}/32/*.so
 %{libsubdir}/32/*.o
@@ -1128,14 +1162,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libsubdir}/32/libasan.so.*
 %endif
 
-%ifarch %lsan_arch
-%files -n liblsan-32bit
-%manifest gcc.manifest
-%license libsanitizer/LICENSE.TXT
-%defattr(-,root,root)
-%{libsubdir}/32/liblsan.so.*
-%endif
-
 %ifarch %atomic_arch
 %files -n libatomic-32bit
 %manifest gcc.manifest
@@ -1217,6 +1243,9 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch %asan_arch
 %{libdir}/libasan.a
 %endif
+%ifarch %hwasan_arch
+%{libsubdir}/libhwasan.a
+%endif
 %ifarch %lsan_arch
 %{libdir}/liblsan.a
 %endif
@@ -1236,9 +1265,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch %asan_arch
 %{libsubdir}/32/libasan.a
 %endif
-%ifarch %lsan_arch
-%{libsubdir}/32/liblsan.a
-%endif
 %ifarch %ubsan_arch
 %{libsubdir}/32/libubsan.a
 %endif
index ac7b410..2ece093 100644 (file)
@@ -64,7 +64,8 @@
 %define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64
 %define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64
 %define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k
-%define lsan_arch x86_64 %ix86 %arm aarch64
+%define lsan_arch x86_64 aarch64
+%define hwasan_arch aarch64
 %define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64
 
 %ifarch armv7l
@@ -102,6 +103,7 @@ BuildRequires: makeinfo
 ## until here, but at least renaming and patching info files breaks this
 BuildRequires: gcc-c++
 BuildRequires: zlib-devel
+BuildRequires: xz-devel
 %ifarch x86_64
 BuildRequires: glibc-devel-32bit
 %endif
@@ -117,7 +119,7 @@ BuildRequires: expect
 BuildRequires: configure-dumper
 %endif
 URL:           http://gcc.gnu.org/
-Version:       9.2.0
+Version:       12.2.0
 Release:       0
 Source:        gcc-%{version}.tar.bz2
 Source10:      gmp-6.1.2.tar.bz2
@@ -294,6 +296,16 @@ The runtime library needed to run programs compiled with the
 %post -n libasan -p /sbin/ldconfig
 %postun -n libasan -p /sbin/ldconfig
 
+%package -n libhwasan
+Summary:       The GNU Compiler Hardware-assisted Address Sanitizer Runtime Library
+License:       MIT
+Group:         Development/Languages
+%description -n libhwasan
+The runtime library needed to run programs compiled with the
+-fsanitize=address option of the GNU Compiler Collection (GCC).
+%post -n libhwasan -p /sbin/ldconfig
+%postun -n libhwasan -p /sbin/ldconfig
+
 %package -n libtsan
 Summary:       The GNU Compiler Thread Sanitizer Runtime Library
 License:       MIT
@@ -779,6 +791,7 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --without-system-libunwind \
        --enable-threads=posix \
        --disable-multilib \
+       --disable-cet \
        --enable-lto \
 %{!?cross: \
        --enable-libcc1 \
@@ -843,10 +856,27 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --target=%{target_arch} \
        --host=%{host_arch} \
        --build=%{host_arch}
+ }
+
+%{?!cross:
+  # During native compiler build with qemu-accel enabled we have to provide
+  # path to accelerated lto_plugin.so to prevent
+  #    error loading plugin: /home/abuild/rpmbuild/BUILD/gcc-12.2.0/obj/./gcc/liblto_plugin.so: wrong ELF class: ELFCLASS32
+  # So we have to update:
+  # - CC_FOR_TARGET
+  # - GCC_FOR_TARGET
+  # - CXX_FOR_TARGET
+  # - RAW_CXX_FOR_TARGET
+  # And provide path to liblto_plugin inside /emul via -B option
+  # Changing configure.ac and adding a dependency from qemu-accel there is not
+  # reasonable, so here we patch a Makefile after configure is competed
+
+  [[ -e '/emul' ]] && \
+      sed -e '/^\(G\?CC_FOR_TARGET\)=\|^\(\(RAW_\)\?CXX_FOR_TARGET\)=/s#\(xg\(cc\|++\)\)#\1 -B/emul%{libsubdir}/#' -i Makefile
 }
 
 %{!?gcc_skip_make:
-make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledbootstrap:profiledbootstrap}}
+make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledbootstrap:profiledbootstrap}} %{?cross:all-host}
 %{?gcc_dump_configure:
  dump_configure.pl .. . \
                   --project gcc \
@@ -874,7 +904,7 @@ make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledboots
 %install
 cd obj
 
-make install DESTDIR=$RPM_BUILD_ROOT
+make install%{?cross:-host} DESTDIR=$RPM_BUILD_ROOT
 
 %{?gcc_dump_configure:
   install -D -m 0644 gcc-%{version}-%{release}-%_project-%_repository.db %{buildroot}%{_datadir}/gcc-%{version}-%{release}-%_project-%_repository.db
@@ -897,10 +927,6 @@ find %{buildroot}/ -name "*.la" -delete
 ln -s gcc %{buildroot}%{_bindir}/cc
 mv %{buildroot}%{libsubdir}/libstdc++.so*-gdb.py %{buildroot}%{_datadir}/gcc-%{version}/python/libstdcxx/
 
-# expose plugins for ar (required for lto builds)
-mkdir -p %{buildroot}%{_prefix}/lib/bfd-plugins
-ln -sf %{libsubdir}/liblto_plugin.so %{buildroot}%{_prefix}/lib/bfd-plugins/liblto_plugin.so
-
 # legacy preprocessor
 mkdir -p %{buildroot}/lib
 ln -s %{_bindir}/cpp %{buildroot}/lib/cpp
@@ -946,6 +972,7 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{_bindir}/gcc-ar
 %{_bindir}/gcc-nm
 %{_bindir}/gcc-ranlib
+%{_bindir}/lto-dump
 %{_bindir}/%{target_arch}-gcc
 %{_bindir}/%{target_arch}-gcc-%{version}
 %{_bindir}/%{target_arch}-gcc-ar
@@ -955,7 +982,7 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libsubdir}/lto1
 %{libsubdir}/lto-wrapper
 %{libsubdir}/liblto_plugin.so*
-%{_prefix}/lib/bfd-plugins/liblto_plugin.so
+%{libsubdir}/g++-mapper-server
 %{libsubdir}/include-fixed/*
 %{libsubdir}/include/*.h
 %{libsubdir}/*.so
@@ -1029,6 +1056,14 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libdir}/libasan.so*
 %endif
 
+%ifarch %hwasan_arch
+%files -n libhwasan
+%manifest gcc.manifest
+%license libsanitizer/LICENSE.TXT
+%defattr(-,root,root)
+%{libsubdir}/libhwasan.so*
+%endif
+
 %ifarch %lsan_arch
 %files -n liblsan
 %manifest gcc.manifest
@@ -1111,7 +1146,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch x86_64
 %files -n gcc-32bit
 %defattr(-,root,root)
-%{libsubdir}/32/crt*
 %{libsubdir}/32/*.a
 %{libsubdir}/32/*.so
 %{libsubdir}/32/*.o
@@ -1125,14 +1159,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %{libsubdir}/32/libasan.so.*
 %endif
 
-%ifarch %lsan_arch
-%files -n liblsan-32bit
-%manifest gcc.manifest
-%license libsanitizer/LICENSE.TXT
-%defattr(-,root,root)
-%{libsubdir}/32/liblsan.so.*
-%endif
-
 %ifarch %atomic_arch
 %files -n libatomic-32bit
 %manifest gcc.manifest
@@ -1214,6 +1240,9 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch %asan_arch
 %{libdir}/libasan.a
 %endif
+%ifarch %hwasan_arch
+%{libsubdir}/libhwasan.a
+%endif
 %ifarch %lsan_arch
 %{libdir}/liblsan.a
 %endif
@@ -1233,9 +1262,6 @@ mv -v libsanitizer.tar.bz %{buildroot}/src
 %ifarch %asan_arch
 %{libsubdir}/32/libasan.a
 %endif
-%ifarch %lsan_arch
-%{libsubdir}/32/liblsan.a
-%endif
 %ifarch %ubsan_arch
 %{libsubdir}/32/libubsan.a
 %endif