From 0e84a68e0f50ca3f1fb42a31aecc6795e6d99477 Mon Sep 17 00:00:00 2001 From: Andrew Phelps Date: Tue, 27 Feb 2024 16:17:48 -0800 Subject: [PATCH] gcc: re-enable libsanitizer (#8089) --- ...emove-crypt-and-crypt_r-interceptors.patch | 140 ++++++++++++++++++ SPECS/gcc/gcc.spec | 7 +- .../manifests/package/pkggen_core_aarch64.txt | 18 +-- .../manifests/package/pkggen_core_x86_64.txt | 18 +-- .../manifests/package/toolchain_aarch64.txt | 24 +-- .../manifests/package/toolchain_x86_64.txt | 30 ++-- 6 files changed, 190 insertions(+), 47 deletions(-) create mode 100644 SPECS/gcc/0011-libsanitizer-Remove-crypt-and-crypt_r-interceptors.patch diff --git a/SPECS/gcc/0011-libsanitizer-Remove-crypt-and-crypt_r-interceptors.patch b/SPECS/gcc/0011-libsanitizer-Remove-crypt-and-crypt_r-interceptors.patch new file mode 100644 index 00000000000..e3b2e249886 --- /dev/null +++ b/SPECS/gcc/0011-libsanitizer-Remove-crypt-and-crypt_r-interceptors.patch @@ -0,0 +1,140 @@ +From 9b116160a1482c5c0c199f9c21d78a527d11d9ea Mon Sep 17 00:00:00 2001 +From: Fangrui Song +Date: Fri, 28 Apr 2023 09:59:17 -0700 +Subject: [PATCH] Remove crypt and crypt_r interceptors + +From Florian Weimer's D144073 + +> On GNU/Linux (glibc), the crypt and crypt_r functions are not part of the main shared object (libc.so.6), but libcrypt (with multiple possible sonames). The sanitizer libraries do not depend on libcrypt, so it can happen that during sanitizer library initialization, no real implementation will be found because the crypt, crypt_r functions are not present in the process image (yet). If its interceptors are called nevertheless, this results in a call through a null pointer when the sanitizer library attempts to forward the call to the real implementation. +> +> Many distributions have already switched to libxcrypt, a library that is separate from glibc and that can be build with sanitizers directly (avoiding the need for interceptors). This patch disables building the interceptor for glibc targets. + +Let's remove crypt and crypt_r interceptors (D68431) to fix issues with +newer glibc. + +For older glibc, msan will not know that an uninstrumented crypt_r call +initializes `data`, so there is a risk for false positives. However, with some +codebase survey, I think crypt_r uses are very few and the call sites typically +have a `memset(&data, 0, sizeof(data));` anyway. + +Fix https://github.com/google/sanitizers/issues/1365 +Related: https://bugzilla.redhat.com/show_bug.cgi?id=2169432 + +Reviewed By: #sanitizers, fweimer, thesamesam, vitalybuka + +Differential Revision: https://reviews.llvm.org/D149403 +--- + .../sanitizer_common_interceptors.inc | 37 ------------------- + .../sanitizer_platform_interceptors.h | 2 - + .../sanitizer_platform_limits_posix.cpp | 8 ---- + .../sanitizer_platform_limits_posix.h | 1 - + 4 files changed, 48 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc +index ba4b80081f0f..662c41997422 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc ++++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc +@@ -10187,41 +10187,6 @@ INTERCEPTOR(SSIZE_T, getrandom, void *buf, SIZE_T buflen, unsigned int flags) { + #define INIT_GETRANDOM + #endif + +-#if SANITIZER_INTERCEPT_CRYPT +-INTERCEPTOR(char *, crypt, char *key, char *salt) { +- void *ctx; +- COMMON_INTERCEPTOR_ENTER(ctx, crypt, key, salt); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1); +- char *res = REAL(crypt)(key, salt); +- if (res != nullptr) +- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1); +- return res; +-} +-#define INIT_CRYPT COMMON_INTERCEPT_FUNCTION(crypt); +-#else +-#define INIT_CRYPT +-#endif +- +-#if SANITIZER_INTERCEPT_CRYPT_R +-INTERCEPTOR(char *, crypt_r, char *key, char *salt, void *data) { +- void *ctx; +- COMMON_INTERCEPTOR_ENTER(ctx, crypt_r, key, salt, data); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1); +- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1); +- char *res = REAL(crypt_r)(key, salt, data); +- if (res != nullptr) { +- COMMON_INTERCEPTOR_WRITE_RANGE(ctx, data, +- __sanitizer::struct_crypt_data_sz); +- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1); +- } +- return res; +-} +-#define INIT_CRYPT_R COMMON_INTERCEPT_FUNCTION(crypt_r); +-#else +-#define INIT_CRYPT_R +-#endif +- + #if SANITIZER_INTERCEPT_GETENTROPY + INTERCEPTOR(int, getentropy, void *buf, SIZE_T buflen) { + void *ctx; +@@ -10772,8 +10737,6 @@ static void InitializeCommonInterceptors() { + INIT_GETUSERSHELL; + INIT_SL_INIT; + INIT_GETRANDOM; +- INIT_CRYPT; +- INIT_CRYPT_R; + INIT_GETENTROPY; + INIT_QSORT; + INIT_QSORT_R; +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h +index 8307b1ec28bf..d50166ee6ce0 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h +@@ -571,8 +571,6 @@ + #define SANITIZER_INTERCEPT_FDEVNAME SI_FREEBSD + #define SANITIZER_INTERCEPT_GETUSERSHELL (SI_POSIX && !SI_ANDROID) + #define SANITIZER_INTERCEPT_SL_INIT (SI_FREEBSD || SI_NETBSD) +-#define SANITIZER_INTERCEPT_CRYPT (SI_POSIX && !SI_ANDROID) +-#define SANITIZER_INTERCEPT_CRYPT_R (SI_LINUX && !SI_ANDROID) + + #define SANITIZER_INTERCEPT_GETRANDOM \ + ((SI_LINUX && __GLIBC_PREREQ(2, 25)) || SI_FREEBSD) +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +index c85cf1626a75..bcbd143d19de 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -176,10 +176,6 @@ typedef struct user_fpregs elf_fpregset_t; + # include "sanitizer_platform_interceptors.h" + # include "sanitizer_platform_limits_posix.h" + +-#if SANITIZER_INTERCEPT_CRYPT_R +-#include +-#endif +- + namespace __sanitizer { + unsigned struct_utsname_sz = sizeof(struct utsname); + unsigned struct_stat_sz = sizeof(struct stat); +@@ -283,10 +279,6 @@ namespace __sanitizer { + unsigned struct_statvfs64_sz = sizeof(struct statvfs64); + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID + +-#if SANITIZER_INTERCEPT_CRYPT_R +- unsigned struct_crypt_data_sz = sizeof(struct crypt_data); +-#endif +- + #if SANITIZER_LINUX && !SANITIZER_ANDROID + unsigned struct_timex_sz = sizeof(struct timex); + unsigned struct_msqid_ds_sz = sizeof(struct msqid_ds); +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +index 44dd3d9e22d1..29ebb304a9ba 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -319,7 +319,6 @@ extern unsigned struct_msqid_ds_sz; + extern unsigned struct_mq_attr_sz; + extern unsigned struct_timex_sz; + extern unsigned struct_statvfs_sz; +-extern unsigned struct_crypt_data_sz; + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID + + struct __sanitizer_iovec { +-- +2.41.0 diff --git a/SPECS/gcc/gcc.spec b/SPECS/gcc/gcc.spec index b128d5f2e64..4cb1eef77c7 100644 --- a/SPECS/gcc/gcc.spec +++ b/SPECS/gcc/gcc.spec @@ -56,7 +56,7 @@ Summary: Contains the GNU compiler collection Name: gcc Version: 13.2.0 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv2+ Vendor: Microsoft Corporation Distribution: Azure Linux @@ -64,6 +64,7 @@ Group: Development/Tools URL: https://gcc.gnu.org/ Source0: https://ftp.gnu.org/gnu/gcc/%{name}-%{version}/%{name}-%{version}.tar.xz #Patch0: CVE-2023-4039.patch +Patch1: 0011-libsanitizer-Remove-crypt-and-crypt_r-interceptors.patch BuildRequires: gmp-devel BuildRequires: mpfr-devel @@ -318,7 +319,6 @@ LD=ld \ %configure \ --disable-bootstrap \ --disable-fixincludes \ - --disable-libsanitizer \ --disable-multilib \ --enable-__cxa_atexit \ --enable-clocale=gnu \ @@ -523,6 +523,9 @@ $tests_ok %do_files aarch64-linux-gnu %{build_cross} %changelog +* Mon Feb 26 2024 Andrew Phelps - 13.2.0-3 +- Re-enable libsanitizer + * Mon Dec 11 2023 Pawel Winogrodzki - 13.2.0-2 - Added cross-compilation support for aarch64. - Used Fedora 36 spec (license: MIT) for guidance. diff --git a/toolkit/resources/manifests/package/pkggen_core_aarch64.txt b/toolkit/resources/manifests/package/pkggen_core_aarch64.txt index c15387c5ab7..d1f21f2047e 100644 --- a/toolkit/resources/manifests/package/pkggen_core_aarch64.txt +++ b/toolkit/resources/manifests/package/pkggen_core_aarch64.txt @@ -20,15 +20,15 @@ mpfr-4.2.1-1.azl3.aarch64.rpm mpfr-devel-4.2.1-1.azl3.aarch64.rpm libmetalink-0.1.3-1.azl3.aarch64.rpm libmpc-1.3.1-1.azl3.aarch64.rpm -libgcc-13.2.0-2.azl3.aarch64.rpm -libgcc-atomic-13.2.0-2.azl3.aarch64.rpm -libgcc-devel-13.2.0-2.azl3.aarch64.rpm -libstdc++-13.2.0-2.azl3.aarch64.rpm -libstdc++-devel-13.2.0-2.azl3.aarch64.rpm -libgomp-13.2.0-2.azl3.aarch64.rpm -libgomp-devel-13.2.0-2.azl3.aarch64.rpm -gcc-13.2.0-2.azl3.aarch64.rpm -gcc-c++-13.2.0-2.azl3.aarch64.rpm +libgcc-13.2.0-3.azl3.aarch64.rpm +libgcc-atomic-13.2.0-3.azl3.aarch64.rpm +libgcc-devel-13.2.0-3.azl3.aarch64.rpm +libstdc++-13.2.0-3.azl3.aarch64.rpm +libstdc++-devel-13.2.0-3.azl3.aarch64.rpm +libgomp-13.2.0-3.azl3.aarch64.rpm +libgomp-devel-13.2.0-3.azl3.aarch64.rpm +gcc-13.2.0-3.azl3.aarch64.rpm +gcc-c++-13.2.0-3.azl3.aarch64.rpm libpkgconf-2.0.2-1.azl3.aarch64.rpm pkgconf-2.0.2-1.azl3.aarch64.rpm pkgconf-m4-2.0.2-1.azl3.noarch.rpm diff --git a/toolkit/resources/manifests/package/pkggen_core_x86_64.txt b/toolkit/resources/manifests/package/pkggen_core_x86_64.txt index fd4feb8528c..d684d24346d 100644 --- a/toolkit/resources/manifests/package/pkggen_core_x86_64.txt +++ b/toolkit/resources/manifests/package/pkggen_core_x86_64.txt @@ -20,15 +20,15 @@ mpfr-4.2.1-1.azl3.x86_64.rpm mpfr-devel-4.2.1-1.azl3.x86_64.rpm libmetalink-0.1.3-1.azl3.x86_64.rpm libmpc-1.3.1-1.azl3.x86_64.rpm -libgcc-13.2.0-2.azl3.x86_64.rpm -libgcc-atomic-13.2.0-2.azl3.x86_64.rpm -libgcc-devel-13.2.0-2.azl3.x86_64.rpm -libstdc++-13.2.0-2.azl3.x86_64.rpm -libstdc++-devel-13.2.0-2.azl3.x86_64.rpm -libgomp-13.2.0-2.azl3.x86_64.rpm -libgomp-devel-13.2.0-2.azl3.x86_64.rpm -gcc-13.2.0-2.azl3.x86_64.rpm -gcc-c++-13.2.0-2.azl3.x86_64.rpm +libgcc-13.2.0-3.azl3.x86_64.rpm +libgcc-atomic-13.2.0-3.azl3.x86_64.rpm +libgcc-devel-13.2.0-3.azl3.x86_64.rpm +libstdc++-13.2.0-3.azl3.x86_64.rpm +libstdc++-devel-13.2.0-3.azl3.x86_64.rpm +libgomp-13.2.0-3.azl3.x86_64.rpm +libgomp-devel-13.2.0-3.azl3.x86_64.rpm +gcc-13.2.0-3.azl3.x86_64.rpm +gcc-c++-13.2.0-3.azl3.x86_64.rpm libpkgconf-2.0.2-1.azl3.x86_64.rpm pkgconf-2.0.2-1.azl3.x86_64.rpm pkgconf-m4-2.0.2-1.azl3.noarch.rpm diff --git a/toolkit/resources/manifests/package/toolchain_aarch64.txt b/toolkit/resources/manifests/package/toolchain_aarch64.txt index 1aa25aa0f1b..d52209a5809 100644 --- a/toolkit/resources/manifests/package/toolchain_aarch64.txt +++ b/toolkit/resources/manifests/package/toolchain_aarch64.txt @@ -91,16 +91,16 @@ flex-debuginfo-2.6.4-7.azl3.aarch64.rpm flex-devel-2.6.4-7.azl3.aarch64.rpm gawk-5.2.2-1.azl3.aarch64.rpm gawk-debuginfo-5.2.2-1.azl3.aarch64.rpm -gcc-13.2.0-2.azl3.aarch64.rpm -gcc-c++-13.2.0-2.azl3.aarch64.rpm -gcc-debuginfo-13.2.0-2.azl3.aarch64.rpm +gcc-13.2.0-3.azl3.aarch64.rpm +gcc-c++-13.2.0-3.azl3.aarch64.rpm +gcc-debuginfo-13.2.0-3.azl3.aarch64.rpm gdbm-1.23-1.azl3.aarch64.rpm gdbm-debuginfo-1.23-1.azl3.aarch64.rpm gdbm-devel-1.23-1.azl3.aarch64.rpm gdbm-lang-1.23-1.azl3.aarch64.rpm gettext-0.22-1.azl3.aarch64.rpm gettext-debuginfo-0.22-1.azl3.aarch64.rpm -gfortran-13.2.0-2.azl3.aarch64.rpm +gfortran-13.2.0-3.azl3.aarch64.rpm glib-2.78.1-1.azl3.aarch64.rpm glib-debuginfo-2.78.1-1.azl3.aarch64.rpm glib-devel-2.78.1-1.azl3.aarch64.rpm @@ -150,7 +150,7 @@ libarchive-devel-3.7.1-1.azl3.aarch64.rpm libassuan-2.5.6-1.azl3.aarch64.rpm libassuan-debuginfo-2.5.6-1.azl3.aarch64.rpm libassuan-devel-2.5.6-1.azl3.aarch64.rpm -libbacktrace-static-13.2.0-2.azl3.aarch64.rpm +libbacktrace-static-13.2.0-3.azl3.aarch64.rpm libcap-2.69-1.azl3.aarch64.rpm libcap-debuginfo-2.69-1.azl3.aarch64.rpm libcap-devel-2.69-1.azl3.aarch64.rpm @@ -160,14 +160,14 @@ libcap-ng-devel-0.8.3-1.azl3.aarch64.rpm libffi-3.4.4-1.azl3.aarch64.rpm libffi-debuginfo-3.4.4-1.azl3.aarch64.rpm libffi-devel-3.4.4-1.azl3.aarch64.rpm -libgcc-13.2.0-2.azl3.aarch64.rpm -libgcc-atomic-13.2.0-2.azl3.aarch64.rpm -libgcc-devel-13.2.0-2.azl3.aarch64.rpm +libgcc-13.2.0-3.azl3.aarch64.rpm +libgcc-atomic-13.2.0-3.azl3.aarch64.rpm +libgcc-devel-13.2.0-3.azl3.aarch64.rpm libgcrypt-1.10.2-1.azl3.aarch64.rpm libgcrypt-debuginfo-1.10.2-1.azl3.aarch64.rpm libgcrypt-devel-1.10.2-1.azl3.aarch64.rpm -libgomp-13.2.0-2.azl3.aarch64.rpm -libgomp-devel-13.2.0-2.azl3.aarch64.rpm +libgomp-13.2.0-3.azl3.aarch64.rpm +libgomp-devel-13.2.0-3.azl3.aarch64.rpm libgpg-error-1.47-1.azl3.aarch64.rpm libgpg-error-debuginfo-1.47-1.azl3.aarch64.rpm libgpg-error-devel-1.47-1.azl3.aarch64.rpm @@ -206,8 +206,8 @@ libsolv-tools-0.7.28-1.azl3.aarch64.rpm libssh2-1.11.0-1.azl3.aarch64.rpm libssh2-debuginfo-1.11.0-1.azl3.aarch64.rpm libssh2-devel-1.11.0-1.azl3.aarch64.rpm -libstdc++-13.2.0-2.azl3.aarch64.rpm -libstdc++-devel-13.2.0-2.azl3.aarch64.rpm +libstdc++-13.2.0-3.azl3.aarch64.rpm +libstdc++-devel-13.2.0-3.azl3.aarch64.rpm libtasn1-4.19.0-1.azl3.aarch64.rpm libtasn1-debuginfo-4.19.0-1.azl3.aarch64.rpm libtasn1-devel-4.19.0-1.azl3.aarch64.rpm diff --git a/toolkit/resources/manifests/package/toolchain_x86_64.txt b/toolkit/resources/manifests/package/toolchain_x86_64.txt index 469ef6a994d..8d78829a3ae 100644 --- a/toolkit/resources/manifests/package/toolchain_x86_64.txt +++ b/toolkit/resources/manifests/package/toolchain_x86_64.txt @@ -48,7 +48,7 @@ createrepo_c-1.0.3-1.azl3.x86_64.rpm createrepo_c-debuginfo-1.0.3-1.azl3.x86_64.rpm createrepo_c-devel-1.0.3-1.azl3.x86_64.rpm cross-binutils-common-2.41-2.azl3.noarch.rpm -cross-gcc-common-13.2.0-2.azl3.noarch.rpm +cross-gcc-common-13.2.0-3.azl3.noarch.rpm curl-8.5.0-1.azl3.x86_64.rpm curl-debuginfo-8.5.0-1.azl3.x86_64.rpm curl-devel-8.5.0-1.azl3.x86_64.rpm @@ -94,18 +94,18 @@ flex-debuginfo-2.6.4-7.azl3.x86_64.rpm flex-devel-2.6.4-7.azl3.x86_64.rpm gawk-5.2.2-1.azl3.x86_64.rpm gawk-debuginfo-5.2.2-1.azl3.x86_64.rpm -gcc-13.2.0-2.azl3.x86_64.rpm -gcc-aarch64-linux-gnu-13.2.0-2.azl3.x86_64.rpm -gcc-c++-13.2.0-2.azl3.x86_64.rpm -gcc-c++-aarch64-linux-gnu-13.2.0-2.azl3.x86_64.rpm -gcc-debuginfo-13.2.0-2.azl3.x86_64.rpm +gcc-13.2.0-3.azl3.x86_64.rpm +gcc-aarch64-linux-gnu-13.2.0-3.azl3.x86_64.rpm +gcc-c++-13.2.0-3.azl3.x86_64.rpm +gcc-c++-aarch64-linux-gnu-13.2.0-3.azl3.x86_64.rpm +gcc-debuginfo-13.2.0-3.azl3.x86_64.rpm gdbm-1.23-1.azl3.x86_64.rpm gdbm-debuginfo-1.23-1.azl3.x86_64.rpm gdbm-devel-1.23-1.azl3.x86_64.rpm gdbm-lang-1.23-1.azl3.x86_64.rpm gettext-0.22-1.azl3.x86_64.rpm gettext-debuginfo-0.22-1.azl3.x86_64.rpm -gfortran-13.2.0-2.azl3.x86_64.rpm +gfortran-13.2.0-3.azl3.x86_64.rpm glib-2.78.1-1.azl3.x86_64.rpm glib-debuginfo-2.78.1-1.azl3.x86_64.rpm glib-devel-2.78.1-1.azl3.x86_64.rpm @@ -156,7 +156,7 @@ libarchive-devel-3.7.1-1.azl3.x86_64.rpm libassuan-2.5.6-1.azl3.x86_64.rpm libassuan-debuginfo-2.5.6-1.azl3.x86_64.rpm libassuan-devel-2.5.6-1.azl3.x86_64.rpm -libbacktrace-static-13.2.0-2.azl3.x86_64.rpm +libbacktrace-static-13.2.0-3.azl3.x86_64.rpm libcap-2.69-1.azl3.x86_64.rpm libcap-debuginfo-2.69-1.azl3.x86_64.rpm libcap-devel-2.69-1.azl3.x86_64.rpm @@ -166,14 +166,14 @@ libcap-ng-devel-0.8.3-1.azl3.x86_64.rpm libffi-3.4.4-1.azl3.x86_64.rpm libffi-debuginfo-3.4.4-1.azl3.x86_64.rpm libffi-devel-3.4.4-1.azl3.x86_64.rpm -libgcc-13.2.0-2.azl3.x86_64.rpm -libgcc-atomic-13.2.0-2.azl3.x86_64.rpm -libgcc-devel-13.2.0-2.azl3.x86_64.rpm +libgcc-13.2.0-3.azl3.x86_64.rpm +libgcc-atomic-13.2.0-3.azl3.x86_64.rpm +libgcc-devel-13.2.0-3.azl3.x86_64.rpm libgcrypt-1.10.2-1.azl3.x86_64.rpm libgcrypt-debuginfo-1.10.2-1.azl3.x86_64.rpm libgcrypt-devel-1.10.2-1.azl3.x86_64.rpm -libgomp-13.2.0-2.azl3.x86_64.rpm -libgomp-devel-13.2.0-2.azl3.x86_64.rpm +libgomp-13.2.0-3.azl3.x86_64.rpm +libgomp-devel-13.2.0-3.azl3.x86_64.rpm libgpg-error-1.47-1.azl3.x86_64.rpm libgpg-error-debuginfo-1.47-1.azl3.x86_64.rpm libgpg-error-devel-1.47-1.azl3.x86_64.rpm @@ -212,8 +212,8 @@ libsolv-tools-0.7.28-1.azl3.x86_64.rpm libssh2-1.11.0-1.azl3.x86_64.rpm libssh2-debuginfo-1.11.0-1.azl3.x86_64.rpm libssh2-devel-1.11.0-1.azl3.x86_64.rpm -libstdc++-13.2.0-2.azl3.x86_64.rpm -libstdc++-devel-13.2.0-2.azl3.x86_64.rpm +libstdc++-13.2.0-3.azl3.x86_64.rpm +libstdc++-devel-13.2.0-3.azl3.x86_64.rpm libtasn1-4.19.0-1.azl3.x86_64.rpm libtasn1-debuginfo-4.19.0-1.azl3.x86_64.rpm libtasn1-devel-4.19.0-1.azl3.x86_64.rpm