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 | Patch068: gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.patch | ||||||
| 
 | 
 | ||||||
| # Backport "Fix an illegal memory access when parsing..." | # Backport "Fix an illegal memory access when parsing..." | ||||||
| # (Nick Clifton, RHBZ 2153228) | # (Nick Clifton, RHBZ 2153227) | ||||||
| Patch069: gdb-rhbz2153228-fail-if-sh_info-is-zero.patch | 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 | %patch067 -p1 | ||||||
| %patch068 -p1 | %patch068 -p1 | ||||||
| %patch069 -p1 | %patch069 -p1 | ||||||
|  | %patch070 -p1 | ||||||
|  | %patch071 -p1 | ||||||
|  | |||||||
| @ -1,10 +1,10 @@ | |||||||
| From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 | From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 | ||||||
| From: Nick Clifton <nickc@redhat.com> | From: Nick Clifton <nickc@redhat.com> | ||||||
| Date: Wed, 19 Oct 2022 15:09:12 +0100 | 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..." | ;; Backport "Fix an illegal memory access when parsing..." | ||||||
| ;; (Nick Clifton, RHBZ 2153228) | ;; (Nick Clifton, RHBZ 2153227) | ||||||
| 
 | 
 | ||||||
| 	PR 29699 | 	PR 29699 | ||||||
| 	* elf.c (_bfd_elf_slurp_version_tables): Fail if the sh_info field | 	* 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 | # Turn off the brp-python-bytecompile automagic | ||||||
| %global _python_bytecompile_extra 0 | %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} | %{?scl_package:%global scl gcc-toolset-13} | ||||||
| %global scl_prefix 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 | BuildRequires: scl-utils-build | ||||||
| 
 | 
 | ||||||
| # Only build on x86 for RHEL6 SCL, defining missing parallel make macros. | # 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. | # 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. | # `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 | 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. | # 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} | %if 0%{!?el6:1} && 0%{?scl:1} | ||||||
| %global have_debuginfod 1 | %global have_debuginfod 1 | ||||||
| %global use_scl_for_debuginfod 1 | %global use_scl_for_debuginfod 1 | ||||||
| BuildRequires: %{?scl_prefix}elfutils-debuginfod-client-devel | BuildRequires: elfutils-debuginfod-client-devel | ||||||
| %endif | %endif | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| @ -347,14 +351,14 @@ BuildRequires: boost-devel | |||||||
| BuildRequires: sharutils dejagnu | BuildRequires: sharutils dejagnu | ||||||
| # gcc-objc++ is not covered by the GDB testsuite. | # gcc-objc++ is not covered by the GDB testsuite. | ||||||
| # Test supported SCL toolchain components. | # 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 | %if 0%{!?rhel:1} || 0%{?rhel} < 8 | ||||||
| BuildRequires: gcc-objc | BuildRequires: gcc-objc | ||||||
| %endif | %endif | ||||||
| # We don't support gcc-gdb-plugin on RHEL anymore. | # We don't support gcc-gdb-plugin on RHEL anymore. | ||||||
| %if 0%{!?rhel:1} | %if 0%{!?rhel:1} | ||||||
| BuildRequires: %{?scl_testing_prefix}gcc-gdb-plugin%{?_isa} | BuildRequires: gcc-gdb-plugin%{?_isa} | ||||||
| %endif | %endif | ||||||
| %if 0%{?rhel:1} && 0%{?rhel} < 7 | %if 0%{?rhel:1} && 0%{?rhel} < 7 | ||||||
| BuildRequires: gcc-java libgcj%{bits_local} libgcj%{bits_other} | 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} | BuildRequires: glibc-static%{bits_other} | ||||||
| %endif | %endif | ||||||
| %ifarch s390x | %ifarch s390x | ||||||
| BuildRequires: %{?scl_testing_preifx}valgrind%{bits_local} | BuildRequires: valgrind%{bits_local} | ||||||
| %if 0%{!?rhel:1} || 0%{?rhel} > 7 | %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 | %endif | ||||||
| %else | %else | ||||||
| BuildRequires: %{?scl_testing_prefix}valgrind%{bits_local} valgrind%{bits_other} | BuildRequires: valgrind%{bits_local} valgrind%{bits_other} | ||||||
| %endif | %endif | ||||||
| %if 0%{!?rhel:1} || 0%{?rhel} > 6 | %if 0%{!?rhel:1} || 0%{?rhel} > 6 | ||||||
| BuildRequires: xz | BuildRequires: xz | ||||||
| @ -438,7 +442,7 @@ BuildRequires: xz | |||||||
| BuildRequires: rust | BuildRequires: rust | ||||||
| %endif | %endif | ||||||
| %if 0%{!?el6:1} | %if 0%{!?el6:1} | ||||||
| BuildRequires: %{?scl_testing_prefix}elfutils-debuginfod | BuildRequires: elfutils-debuginfod | ||||||
| %endif | %endif | ||||||
| %endif # 0%{?_with_testsuite:1} | %endif # 0%{?_with_testsuite:1} | ||||||
| BuildRequires: make gmp-devel | BuildRequires: make gmp-devel | ||||||
| @ -1201,13 +1205,18 @@ fi | |||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %changelog | %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 ..." | - 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 | * Thu Apr 27 2023 Keith Seitz <keiths@redhat.com> - 12.1-2.el9 | ||||||
| - Backport binutls/29699 "Fix an illegal memory access when parsing..." | - 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 | * Tue Apr 18 2023 Keith Seitz <keiths@redhat.com> - 12.1-1.el9 | ||||||
| - Initial import for GTS13. | - Initial import for GTS13. | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user