Compare commits
	
		
			2 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f334de0805 | |||
|  | 34c01a1db0 | 
| @ -290,6 +290,16 @@ Patch067: gdb-gcc-13-backport-self-move-diagnostic-fix | ||||
| Patch068: gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.patch | ||||
| 
 | ||||
| # Backport "Fix an illegal memory access when parsing..." | ||||
| # (Nick Clifton, RHBZ 2153228) | ||||
| Patch069: gdb-rhbz2153228-fail-if-sh_info-is-zero.patch | ||||
| # (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 | ||||
| 
 | ||||
|  | ||||
| @ -67,3 +67,5 @@ | ||||
| %patch067 -p1 | ||||
| %patch068 -p1 | ||||
| %patch069 -p1 | ||||
| %patch070 -p1 | ||||
| %patch071 -p1 | ||||
|  | ||||
| @ -1,10 +1,10 @@ | ||||
| From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 | ||||
| From: Nick Clifton <nickc@redhat.com> | ||||
| Date: Wed, 19 Oct 2022 15:09:12 +0100 | ||||
| Subject: gdb-rhbz2153228-fail-if-sh_info-is-zero.patch | ||||
| Subject: gdb-rhbz2153227-fail-if-sh_info-is-zero.patch | ||||
| 
 | ||||
| ;; Backport "Fix an illegal memory access when parsing..." | ||||
| ;; (Nick Clifton, RHBZ 2153228) | ||||
| ;; (Nick Clifton, RHBZ 2153227) | ||||
| 
 | ||||
| 	PR 29699 | ||||
| 	* elf.c (_bfd_elf_slurp_version_tables): Fail if the sh_info field | ||||
							
								
								
									
										117
									
								
								SOURCES/gdb-rhel-4237-rust-demangler-recursion-limit-1of2.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								SOURCES/gdb-rhel-4237-rust-demangler-recursion-limit-1of2.patch
									
									
									
									
									
										Normal 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 | ||||
| @ -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; | ||||
| @ -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,13 +1205,18 @@ fi | ||||
| %endif | ||||
| 
 | ||||
| %changelog | ||||
| * Tue Jun 13 2023 Keith Seitz <keiths@redhat.com> - 12.1-3.el9 | ||||
| * 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 2213228) | ||||
|   (Andrew Burgess, RHBZ 2214593) | ||||
| 
 | ||||
| * Thu Apr 27 2023 Keith Seitz <keiths@redhat.com> - 12.1-2.el9 | ||||
| - Backport binutls/29699 "Fix an illegal memory access when parsing..." | ||||
|   (Nick Clifton, RHBZ 2153228) | ||||
|   (Nick Clifton, RHBZ 2153227) | ||||
| 
 | ||||
| * Tue Apr 18 2023 Keith Seitz <keiths@redhat.com> - 12.1-1.el9 | ||||
| - Initial import for GTS13. | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user