import CS gcc-toolset-13-gdb-12.1-4.el8

This commit is contained in:
eabdullin 2024-03-27 19:44:28 +00:00
parent 34c01a1db0
commit f334de0805
5 changed files with 174 additions and 10 deletions

View File

@ -293,3 +293,13 @@ Patch068: gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.pat
# (Nick Clifton, RHBZ 2153227)
Patch069: gdb-rhbz2153227-fail-if-sh_info-is-zero.patch
# Backport "Add a recursion limit to the demangle_const function
# in the Rust demangler."
# (Nick Clifton, RHEL-4237)
Patch070: gdb-rhel-4237-rust-demangler-recursion-limit-1of2.patch
# Backport "Fix typo in recent code to add stack recursion limit to
# the Rust demangler."
# (Nick Clifton, RHEL-4327)
Patch071: gdb-rhel-4237-rust-demangler-recursion-limit-2of2.patch

View File

@ -67,3 +67,5 @@
%patch067 -p1
%patch068 -p1
%patch069 -p1
%patch070 -p1
%patch071 -p1

View File

@ -0,0 +1,117 @@
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Keith Seitz <keiths@redhat.com>
Date: Thu, 12 Oct 2023 15:03:51 -0400
Subject: gdb-rhel-4237-rust-demangler-recursion-limit-1of2.patch
;; Backport "Add a recursion limit to the demangle_const function
;; in the Rust demangler."
;; (Nick Clifton, RHEL-4237)
libiberty/
PR demangler/105039
* rust-demangle.c (demangle_const): Add recursion limit.
diff --git a/libiberty/rust-demangle.c b/libiberty/rust-demangle.c
--- a/libiberty/rust-demangle.c
+++ b/libiberty/rust-demangle.c
@@ -126,7 +126,7 @@ parse_integer_62 (struct rust_demangler *rdm)
return 0;
x = 0;
- while (!eat (rdm, '_'))
+ while (!eat (rdm, '_') && !rdm->errored)
{
c = next (rdm);
x *= 62;
@@ -1082,6 +1082,18 @@ demangle_path_maybe_open_generics (struct rust_demangler *rdm)
if (rdm->errored)
return open;
+ if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
+ {
+ ++ rdm->recursion;
+ if (rdm->recursion > RUST_MAX_RECURSION_COUNT)
+ {
+ /* FIXME: There ought to be a way to report
+ that the recursion limit has been reached. */
+ rdm->errored = 1;
+ goto end_of_func;
+ }
+ }
+
if (eat (rdm, 'B'))
{
backref = parse_integer_62 (rdm);
@@ -1107,6 +1119,11 @@ demangle_path_maybe_open_generics (struct rust_demangler *rdm)
}
else
demangle_path (rdm, 0);
+
+ end_of_func:
+ if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
+ -- rdm->recursion;
+
return open;
}
@@ -1148,6 +1165,15 @@ demangle_const (struct rust_demangler *rdm)
if (rdm->errored)
return;
+ if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
+ {
+ ++ rdm->recursion;
+ if (rdm->recursion > RUST_MAX_RECURSION_COUNT)
+ /* FIXME: There ought to be a way to report
+ that the recursion limit has been reached. */
+ goto fail_return;
+ }
+
if (eat (rdm, 'B'))
{
backref = parse_integer_62 (rdm);
@@ -1158,7 +1184,7 @@ demangle_const (struct rust_demangler *rdm)
demangle_const (rdm);
rdm->next = old_next;
}
- return;
+ goto pass_return;
}
ty_tag = next (rdm);
@@ -1167,7 +1193,7 @@ demangle_const (struct rust_demangler *rdm)
/* Placeholder. */
case 'p':
PRINT ("_");
- return;
+ goto pass_return;
/* Unsigned integer types. */
case 'h':
@@ -1200,18 +1226,20 @@ demangle_const (struct rust_demangler *rdm)
break;
default:
- rdm->errored = 1;
- return;
+ goto fail_return;
}
- if (rdm->errored)
- return;
-
- if (rdm->verbose)
+ if (!rdm->errored && rdm->verbose)
{
PRINT (": ");
PRINT (basic_type (ty_tag));
}
+
+ fail_return:
+ rdm->errored = 1;
+ pass_return:
+ if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
+ -- rdm->recursion;
}
static void

View File

@ -0,0 +1,26 @@
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Keith Seitz <keiths@redhat.com>
Date: Thu, 12 Oct 2023 15:16:40 -0400
Subject: gdb-rhel-4237-rust-demangler-recursion-limit-2of2.patch
;; Backport "Fix typo in recent code to add stack recursion limit to
;; the Rust demangler."
;; (Nick Clifton, RHEL-4327)
Fix typo in recent code to add stack recursion limit to the Rust demangler.
libiberty
* rust-demangle.c (demangle_const): Add a missing goto pass_return
at the end of the function.
diff --git a/libiberty/rust-demangle.c b/libiberty/rust-demangle.c
--- a/libiberty/rust-demangle.c
+++ b/libiberty/rust-demangle.c
@@ -1234,6 +1234,7 @@ demangle_const (struct rust_demangler *rdm)
PRINT (": ");
PRINT (basic_type (ty_tag));
}
+ goto pass_return;
fail_return:
rdm->errored = 1;

View File

@ -11,10 +11,14 @@
# Turn off the brp-python-bytecompile automagic
%global _python_bytecompile_extra 0
# GTS magic sauce.
# GTS magic sauce. On GTS N (N >= 13), we always build using
# the system compiler and elfutils.
#
# For testing, we use the GTS (N-1) compiler and the system valgrind/elfutils.
%{?scl_package:%global scl gcc-toolset-13}
%global scl_prefix gcc-toolset-13-
%global scl_testing_prefix gcc-toolset-12-
%global scl_testing_cc_prefix gcc-toolset-12-
BuildRequires: scl-utils-build
# Only build on x86 for RHEL6 SCL, defining missing parallel make macros.
@ -69,7 +73,7 @@ Version: 12.1
# The release always contains a leading reserved number, start it at 1.
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
Release: 3%{?dist}
Release: 4%{?dist}
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL
# Do not provide URL for snapshots as the file lasts there only for 2 days.
@ -318,7 +322,7 @@ BuildRequires: elfutils-debuginfod-client-devel
%if 0%{!?el6:1} && 0%{?scl:1}
%global have_debuginfod 1
%global use_scl_for_debuginfod 1
BuildRequires: %{?scl_prefix}elfutils-debuginfod-client-devel
BuildRequires: elfutils-debuginfod-client-devel
%endif
%endif
@ -347,14 +351,14 @@ BuildRequires: boost-devel
BuildRequires: sharutils dejagnu
# gcc-objc++ is not covered by the GDB testsuite.
# Test supported SCL toolchain components.
BuildRequires: %{?scl_testing_prefix}gcc %{?scl_testing_prefix}gcc-c++ %{?scl_testing_prefix}gcc-gfortran
BuildRequires: %{?scl_testing_cc_prefix}gcc %{?scl_testing_cc_prefix}gcc-c++ %{?scl_testing_cc_prefix}gcc-gfortran
%if 0%{!?rhel:1} || 0%{?rhel} < 8
BuildRequires: gcc-objc
%endif
# We don't support gcc-gdb-plugin on RHEL anymore.
%if 0%{!?rhel:1}
BuildRequires: %{?scl_testing_prefix}gcc-gdb-plugin%{?_isa}
BuildRequires: gcc-gdb-plugin%{?_isa}
%endif
%if 0%{?rhel:1} && 0%{?rhel} < 7
BuildRequires: gcc-java libgcj%{bits_local} libgcj%{bits_other}
@ -424,12 +428,12 @@ BuildRequires: libquadmath%{bits_local} libquadmath%{bits_other}
BuildRequires: glibc-static%{bits_other}
%endif
%ifarch s390x
BuildRequires: %{?scl_testing_preifx}valgrind%{bits_local}
BuildRequires: valgrind%{bits_local}
%if 0%{!?rhel:1} || 0%{?rhel} > 7
BuildRequires: %{?scl_testing_prefix}valgrind%{bits_local} valgrind%{bits_other}
BuildRequires: valgrind%{bits_local} valgrind%{bits_other}
%endif
%else
BuildRequires: %{?scl_testing_prefix}valgrind%{bits_local} valgrind%{bits_other}
BuildRequires: valgrind%{bits_local} valgrind%{bits_other}
%endif
%if 0%{!?rhel:1} || 0%{?rhel} > 6
BuildRequires: xz
@ -438,7 +442,7 @@ BuildRequires: xz
BuildRequires: rust
%endif
%if 0%{!?el6:1}
BuildRequires: %{?scl_testing_prefix}elfutils-debuginfod
BuildRequires: elfutils-debuginfod
%endif
%endif # 0%{?_with_testsuite:1}
BuildRequires: make gmp-devel
@ -1201,6 +1205,11 @@ fi
%endif
%changelog
* Thu Oct 12 2023 Keith Seitz <keiths@redhat.com> - 12.1-4.el8
- Backport "Add a recursion limit to the demangle_const function
in the Rust demangler."
(Nick Clifton, RHEL-4237)
* Tue Jun 13 2023 Keith Seitz <keiths@redhat.com> - 12.1-3.el8
- Backport "Update gdb-add-index.sh ..."
(Andrew Burgess, RHBZ 2214593)