From 434fe8a120eafb1952b2f5e2c2294ad63d71d943dc1948c2cecdffa568cb75e0 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Fri, 7 May 2021 17:15:06 +0000 Subject: [PATCH] - Replace tentative fix with upstreamed fix [swo#27681]: Remove: * gdb-build-workaround-pcre2_posix-linking-problem.patch Add: * gdb-build-hardcode-with-included-regex.patch - Backport fix from upstream [bsc#1185638, swo#26327]: * gdb-symtab-fix-infinite-recursion-in-dwarf2_cu-get_builder.patch - Backport fix from upstream [rh#1931344]: * gdb-save-restore-file-offset-while-reading-notes-in-core-file.patch OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=276 --- gdb-build-hardcode-with-included-regex.patch | 153 ++++++++++++++++ ...rkaround-pcre2_posix-linking-problem.patch | 117 ------------- ...set-while-reading-notes-in-core-file.patch | 88 ++++++++++ ...e-recursion-in-dwarf2_cu-get_builder.patch | 165 ++++++++++++++++++ gdb.changes | 12 ++ gdb.spec | 8 +- 6 files changed, 424 insertions(+), 119 deletions(-) create mode 100644 gdb-build-hardcode-with-included-regex.patch delete mode 100644 gdb-build-workaround-pcre2_posix-linking-problem.patch create mode 100644 gdb-save-restore-file-offset-while-reading-notes-in-core-file.patch create mode 100644 gdb-symtab-fix-infinite-recursion-in-dwarf2_cu-get_builder.patch diff --git a/gdb-build-hardcode-with-included-regex.patch b/gdb-build-hardcode-with-included-regex.patch new file mode 100644 index 0000000..295792d --- /dev/null +++ b/gdb-build-hardcode-with-included-regex.patch @@ -0,0 +1,153 @@ +Index: gdb-10.1/gdb/config.in +=================================================================== +--- gdb-10.1.orig/gdb/config.in ++++ gdb-10.1/gdb/config.in +@@ -734,9 +734,6 @@ + /* Define if has the TD_VERSION error code. */ + #undef THREAD_DB_HAS_TD_VERSION + +-/* Define to 1 if the regex included in libiberty should be used. */ +-#undef USE_INCLUDED_REGEX +- + /* Enable extensions on AIX 3, Interix. */ + #ifndef _ALL_SOURCE + # undef _ALL_SOURCE +Index: gdb-10.1/gdb/configure +=================================================================== +--- gdb-10.1.orig/gdb/configure ++++ gdb-10.1/gdb/configure +@@ -912,7 +912,6 @@ enable_source_highlight + with_intel_pt + with_libipt_prefix + with_libipt_type +-with_included_regex + with_sysroot + with_system_gdbinit + with_system_gdbinit_dir +@@ -1663,10 +1662,6 @@ Optional Packages: + --with-libipt-prefix[=DIR] search for libipt in DIR/include and DIR/lib + --without-libipt-prefix don't search for libipt in includedir and libdir + --with-libipt-type=TYPE type of library to search for (auto/static/shared) +- --without-included-regex +- don't use included regex; this is the default on +- systems with version 2 of the GNU C library (use +- with caution on other system) + --with-sysroot[=DIR] search for usr/lib et al within DIR + --with-system-gdbinit=PATH + automatically load a system-wide gdbinit file +@@ -16006,57 +16001,6 @@ if test "$ac_cv_func_setpgrp_void" = yes + fi + fi + +-# Assume we'll default to using the included libiberty regex. +-gdb_use_included_regex=yes +- +-# However, if the system regex is GNU regex, then default to *not* +-# using the included regex. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU regex" >&5 +-$as_echo_n "checking for GNU regex... " >&6; } +-if ${gdb_cv_have_gnu_regex+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +-int +-main () +-{ +-#define REGEX_INTERFACE_VERSION 1 +-#if _GNU_REGEX_INTERFACE_VERSION != REGEX_INTERFACE_VERSION +-# error "Version mismatch" +-#endif +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : +- gdb_cv_have_gnu_regex=yes +-else +- gdb_cv_have_gnu_regex=no +-fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_have_gnu_regex" >&5 +-$as_echo "$gdb_cv_have_gnu_regex" >&6; } +-if test "$gdb_cv_have_gnu_regex" = yes; then +- gdb_use_included_regex=no +-fi +- +- +-# Check whether --with-included-regex was given. +-if test "${with_included_regex+set}" = set; then : +- withval=$with_included_regex; gdb_with_regex=$withval +-else +- gdb_with_regex=$gdb_use_included_regex +-fi +- +-if test "$gdb_with_regex" = yes; then +- +-$as_echo "#define USE_INCLUDED_REGEX 1" >>confdefs.h +- +-fi +- + # Check if defines `struct thread' with a td_pcb member. + ac_fn_c_check_member "$LINENO" "struct thread" "td_pcb" "ac_cv_member_struct_thread_td_pcb" "#include + #include +Index: gdb-10.1/gdb/configure.ac +=================================================================== +--- gdb-10.1.orig/gdb/configure.ac ++++ gdb-10.1/gdb/configure.ac +@@ -1514,35 +1514,6 @@ if test "$ac_cv_func_setpgrp_void" = yes + fi + fi + +-# Assume we'll default to using the included libiberty regex. +-gdb_use_included_regex=yes +- +-# However, if the system regex is GNU regex, then default to *not* +-# using the included regex. +-AC_CACHE_CHECK( +- [for GNU regex], +- [gdb_cv_have_gnu_regex], +- [AC_TRY_COMPILE( +- [#include ], +- [#define REGEX_INTERFACE_VERSION 1 +-#if _GNU_REGEX_INTERFACE_VERSION != REGEX_INTERFACE_VERSION +-# error "Version mismatch" +-#endif], +- gdb_cv_have_gnu_regex=yes, +- gdb_cv_have_gnu_regex=no)]) +-if test "$gdb_cv_have_gnu_regex" = yes; then +- gdb_use_included_regex=no +-fi +- +-AC_ARG_WITH(included-regex, +- AS_HELP_STRING([--without-included-regex], [don't use included regex; this is the default on systems with version 2 of the GNU C library (use with caution on other system)]), +- gdb_with_regex=$withval, +- gdb_with_regex=$gdb_use_included_regex) +-if test "$gdb_with_regex" = yes; then +- AC_DEFINE(USE_INCLUDED_REGEX, 1, +- [Define to 1 if the regex included in libiberty should be used.]) +-fi +- + # Check if defines `struct thread' with a td_pcb member. + AC_CHECK_MEMBERS([struct thread.td_pcb], [], [], + [#include +Index: gdb-10.1/gdb/gdb_regex.h +=================================================================== +--- gdb-10.1.orig/gdb/gdb_regex.h ++++ gdb-10.1/gdb/gdb_regex.h +@@ -19,13 +19,7 @@ + #ifndef GDB_REGEX_H + #define GDB_REGEX_H 1 + +-#ifdef USE_INCLUDED_REGEX + # include "xregex.h" +-#else +-/* Request 4.2 BSD regex functions. */ +-# define _REGEX_RE_COMP +-# include +-#endif + + /* A compiled regex. This is mainly a wrapper around regex_t. The + the constructor throws on regcomp error and the destructor is diff --git a/gdb-build-workaround-pcre2_posix-linking-problem.patch b/gdb-build-workaround-pcre2_posix-linking-problem.patch deleted file mode 100644 index 2ab2b7f..0000000 --- a/gdb-build-workaround-pcre2_posix-linking-problem.patch +++ /dev/null @@ -1,117 +0,0 @@ -[gdb/build] Workaround pcre2_posix linking problem - -On openSUSE Tumbleweed, the ncurses package got the --with-pcre2 configure -switch enabled, and solved the resulting dependencies using: -... - $ cat /usr/lib64/libncursesw.so - /* GNU ld script */ --INPUT(/lib64/libncursesw.so.6 AS_NEEDED(-ltinfo -ldl)) -+INPUT(/lib64/libncursesw.so.6 AS_NEEDED(-ltinfo -ldl -lpcre2-posix -lpcre2-8)) -... - -GDB uses the regexp functions regcomp, regerror, regfree, regexec and re_search, see -gdb_regex.c. The latter is a GNU extension. - -Due to the changes mentioned above, the first four functions got bound to -lpcre2-posix, while re_search still got bound to lc, resulting in all sorts of -trouble, like hangs or: -... -$ gdb -q -batch -ex "apropos apropos" -Aborted (core dumped) -... - -There is a debate whether it's legal to use re_search in combination with regcomp. - -Either way, the immediate problem can be fixed/worked-around by adding -lc -before @LIBS@ in the CLIBS def in Makefile.in. - -This is something that works with clang++, though not with g++, which drops --lc, see PR gcc/99896. For g++, we can work around this by using -Wl,-lc -instead. - -Add -lc before @LIBS@ in CLIBS def. - -Tested on x86_64-linux. - -gdb/ChangeLog: - -2021-04-06 Tom de Vries - - PR build/27681 - * Makefile.in (CDEFS): Add @LIBC@ before @LIBS@. - * configure.ac: Define LIBC. - * configure: Regenerate. - ---- - gdb/Makefile.in | 5 +++-- - gdb/configure | 11 +++++++++++ - gdb/configure.ac | 8 ++++++++ - 3 files changed, 22 insertions(+), 2 deletions(-) - -diff --git a/gdb/Makefile.in b/gdb/Makefile.in -index 4808357e651..31a1009dd6d 100644 ---- a/gdb/Makefile.in -+++ b/gdb/Makefile.in -@@ -620,11 +620,12 @@ INTERNAL_LDFLAGS = \ - - # Libraries and corresponding dependencies for compiling gdb. - # XM_CLIBS, defined in *config files, have host-dependent libs. --# LIBIBERTY appears twice on purpose. -+# LIBIBERTY appears twice on purpose. LIBC is added before -+# LIBS to ensure that all functions in gdb_regex.c bind to libc. - CLIBS = $(SIM) $(READLINE) $(OPCODES) $(LIBCTF) $(BFD) $(ZLIB) \ - $(LIBSUPPORT) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \ - $(XM_CLIBS) $(GDBTKLIBS) \ -- @LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \ -+ @LIBC@ @LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \ - $(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) $(LIBIPT) \ - $(WIN32LIBS) $(LIBGNU) $(LIBICONV) \ - $(LIBMPFR) $(SRCHIGH_LIBS) $(LIBXXHASH) $(PTHREAD_LIBS) \ -diff --git a/gdb/configure b/gdb/configure -index e7811e807a6..4a8bf5cc78e 100755 ---- a/gdb/configure -+++ b/gdb/configure -@@ -728,6 +728,7 @@ HAVE_PYTHON_TRUE - PYTHON_LIBS - PYTHON_CPPFLAGS - PYTHON_CFLAGS -+LIBC - python_prog_path - LTLIBMPFR - LIBMPFR -@@ -10983,6 +10984,16 @@ _ACEOF - fi - fi - -+if test "${GCC}" = yes; then -+ # G++ drops -lc, so wrap it using -Wl. See PR gcc/99896. -+ GCC_LIBC="-Wl,-lc" -+ LIBC=$GCC_LIBC -+ -+else -+ LIBC=-lc -+ -+fi -+ - - # Check whether --with-python-libdir was given. - if test "${with_python_libdir+set}" = set; then : -diff --git a/gdb/configure.ac b/gdb/configure.ac -index 620ae23e343..5bf44beb63a 100644 ---- a/gdb/configure.ac -+++ b/gdb/configure.ac -@@ -891,6 +891,14 @@ else - fi - fi - -+if test "${GCC}" = yes; then -+ # G++ drops -lc, so wrap it using -Wl. See PR gcc/99896. -+ GCC_LIBC="-Wl,-lc" -+ AC_SUBST(LIBC, $GCC_LIBC) -+else -+ AC_SUBST(LIBC, -lc) -+fi -+ - dnl Use --with-python-libdir to control where GDB looks for the Python - dnl libraries. - dnl diff --git a/gdb-save-restore-file-offset-while-reading-notes-in-core-file.patch b/gdb-save-restore-file-offset-while-reading-notes-in-core-file.patch new file mode 100644 index 0000000..26d781c --- /dev/null +++ b/gdb-save-restore-file-offset-while-reading-notes-in-core-file.patch @@ -0,0 +1,88 @@ +Save/restore file offset while reading notes in core file + +A recent bug (RH BZ 1931344) has exposed a bug in the core file +build-ID support that I introduced a while ago. It is pretty +easy to demonstate the problem following a simplified procedure +outlined in that bug: + +[shell1] +shell1$ /usr/libexec/qemu-kvm + +[shell2] +shell2$ pkill -SEGV -x qemu-kvm + +[shell1] +Segmentation fault (core dumped) + +Load this core file into GDB without specifying an executable +(an unfortunate Fedora/RHEL-ism), and GDB will inform the user +to install debuginfo for the "missing" executable: + +$ gdb -nx -q core.12345 +... +Missing separate debuginfo for the main executable file +Try: dnf --enablerepo='*debug*' install /usr/lib/debug/.build-id/e2/e9c66d3117fb2bbb5b2be122f04f2664e5df54 +Core was generated by `/usr/libexec/qemu-kvm'. +Program terminated with signal SIGSEGV, Segmentation fault. +... + +The suggested build-ID is actaully for gmp not qemu-kvm. The problem +lies in _bfd_elf_core_find_build_id, where we loop over program headers +looking for note segments: + + /* Read in program headers and parse notes. */ + for (i = 0; i < i_ehdr.e_phnum; ++i, ++i_phdr) + { + Elf_External_Phdr x_phdr; + + if (bfd_bread (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr)) + goto fail; + elf_swap_phdr_in (abfd, &x_phdr, i_phdr); + + if (i_phdr->p_type == PT_NOTE && i_phdr->p_filesz > 0) + { + elf_read_notes (abfd, offset + i_phdr->p_offset, + i_phdr->p_filesz, i_phdr->p_align); + + if (abfd->build_id != NULL) + return TRUE; + } + +elf_read_notes uses bfd_seek to forward the stream to the location of +the note segment. When control returns to _bfd_elf_core_fild_build_id, +the stream is no longer in the location looking at program headers, and +all subsequent reads will read from the wrong file offset. + +To fix this, this patch marks the stream location and ensures +that it is restored after elf_read_notes is called. + +bfd/ChangeLog +2021-03-26 Keith Seitz + + * elfcore.h (_bfd_elf_core_find_build_id): Seek file + offset of program headers after calling elf_read_notes. + + + +--- + bfd/elfcore.h | 7 +++++++ + 2 files changed, 12 insertions(+) + +diff --git a/bfd/elfcore.h b/bfd/elfcore.h +index 3015e582ef0..4e6383415f7 100644 +--- a/bfd/elfcore.h ++++ b/bfd/elfcore.h +@@ -410,6 +410,13 @@ NAME(_bfd_elf, core_find_build_id) + { + elf_read_notes (abfd, offset + i_phdr->p_offset, + i_phdr->p_filesz, i_phdr->p_align); ++ ++ /* Make sure ABFD returns to processing the program headers. */ ++ if (bfd_seek (abfd, (file_ptr) (offset + i_ehdr.e_phoff ++ + (i + 1) * sizeof (x_phdr)), ++ SEEK_SET) != 0) ++ goto fail; ++ + if (abfd->build_id != NULL) + return TRUE; + } diff --git a/gdb-symtab-fix-infinite-recursion-in-dwarf2_cu-get_builder.patch b/gdb-symtab-fix-infinite-recursion-in-dwarf2_cu-get_builder.patch new file mode 100644 index 0000000..22a30ed --- /dev/null +++ b/gdb-symtab-fix-infinite-recursion-in-dwarf2_cu-get_builder.patch @@ -0,0 +1,165 @@ +[gdb/symtab] Fix infinite recursion in dwarf2_cu::get_builder() + +With the test-case attached in PR26327, gdb aborts: +... +$ gdb -q -batch 447.dealII -ex "b main" +Aborted (core dumped) +... +when running out of stack due to infinite recursion: +... + #8 0x00000000006aaba6 in dwarf2_cu::get_builder (this=0x35e4b40) + at src/gdb/dwarf2/read.c:700 + #9 0x00000000006aaba6 in dwarf2_cu::get_builder (this=0x22ee2c0) + at src/gdb/dwarf2/read.c:700 + #10 0x00000000006aaba6 in dwarf2_cu::get_builder (this=0x35e4b40) + at src/gdb/dwarf2/read.c:700 + #11 0x00000000006aaba6 in dwarf2_cu::get_builder (this=0x22ee2c0) + at src/gdb/dwarf2/read.c:700 +... + +We're recursing in this code in dwarf2_cu::get_builder(): +... + /* Otherwise, search ancestors for a valid builder. */ + if (ancestor != nullptr) + return ancestor->get_builder (); +... +due to the fact that the ancestor chain is a cycle. + +Higher up in the call stack, we find some code that is responsible for +triggering this, in new_symbol: +... + case DW_TAG_formal_parameter: + { + /* If we are inside a function, mark this as an argument. If + not, we might be looking at an argument to an inlined function + when we do not have enough information to show inlined frames; + pretend it's a local variable in that case so that the user can + still see it. */ + struct context_stack *curr + = cu->get_builder ()->get_current_context_stack (); + if (curr != nullptr && curr->name != nullptr) + SYMBOL_IS_ARGUMENT (sym) = 1; +... + +This is code that was added to support pre-4.1 gcc, to be able to show +arguments of inlined functions as locals, in the absense of sufficiently +correct debug information. + +Removing this code (that is, doing SYMBOL_IS_ARGUMENT (sym) = 1 +unconditially), fixes the crash. The ancestor variable also seems to have +been added specifically to deal with fallout from this code, so remove that as +well. + +Tested on x86_64-linux: +- openSUSE Leap 15.2 with gcc 7.5.0, and +- openSUSE Tumbleweed with gcc 10.3.0. + +gdb/ChangeLog: + +2021-05-07 Tom de Vries + + PR symtab/26327 + * dwarf2/read.c (struct dwarf2_cu): Remove ancestor. + (dwarf2_cu::get_builder): Remove ancestor-related code. + (new_symbol): Remove code supporting pre-4.1 gcc that show arguments + of inlined functions as locals. + (follow_die_offset, follow_die_sig_1): Remove setting of ancestor. + +gdb/doc/ChangeLog: + +2021-05-07 Tom de Vries + + PR symtab/26327 + * gdb.texinfo (Inline Functions): Update. + +--- + gdb/doc/gdb.texinfo | 4 ++-- + gdb/dwarf2/read.c | 25 ++----------------------- + 4 files changed, 18 insertions(+), 25 deletions(-) + +diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo +index 56f37eb2288..f4d7085da58 100644 +--- a/gdb/doc/gdb.texinfo ++++ b/gdb/doc/gdb.texinfo +@@ -13842,8 +13842,8 @@ when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1 + do not emit two required attributes (@samp{DW_AT_call_file} and + @samp{DW_AT_call_line}); @value{GDBN} does not display inlined + function calls with earlier versions of @value{NGCC}. It instead +-displays the arguments and local variables of inlined functions as +-local variables in the caller. ++displays local variables of inlined functions as local variables in ++the caller. + + The body of an inlined function is directly included at its call site; + unlike a non-inlined function, there are no instructions devoted to +diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c +index 5796cf1730b..b2f48f1f395 100644 +--- a/gdb/dwarf2/read.c ++++ b/gdb/dwarf2/read.c +@@ -684,10 +684,6 @@ struct dwarf2_cu + + struct partial_die_info *find_partial_die (sect_offset sect_off); + +- /* If this CU was inherited by another CU (via specification, +- abstract_origin, etc), this is the ancestor CU. */ +- dwarf2_cu *ancestor; +- + /* Get the buildsym_compunit for this CU. */ + buildsym_compunit *get_builder () + { +@@ -695,10 +691,6 @@ struct dwarf2_cu + if (m_builder != nullptr) + return m_builder.get (); + +- /* Otherwise, search ancestors for a valid builder. */ +- if (ancestor != nullptr) +- return ancestor->get_builder (); +- + return nullptr; + } + }; +@@ -22045,15 +22037,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu, + break; + case DW_TAG_formal_parameter: + { +- /* If we are inside a function, mark this as an argument. If +- not, we might be looking at an argument to an inlined function +- when we do not have enough information to show inlined frames; +- pretend it's a local variable in that case so that the user can +- still see it. */ +- struct context_stack *curr +- = cu->get_builder ()->get_current_context_stack (); +- if (curr != nullptr && curr->name != nullptr) +- SYMBOL_IS_ARGUMENT (sym) = 1; ++ SYMBOL_IS_ARGUMENT (sym) = 1; + attr = dwarf2_attr (die, DW_AT_location, cu); + if (attr != nullptr) + { +@@ -23389,9 +23373,6 @@ follow_die_offset (sect_offset sect_off, int offset_in_dwz, + *ref_cu = target_cu; + temp_die.sect_off = sect_off; + +- if (target_cu != cu) +- target_cu->ancestor = cu; +- + return (struct die_info *) htab_find_with_hash (target_cu->die_hash, + &temp_die, + to_underlying (sect_off)); +@@ -23741,7 +23722,7 @@ follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type, + struct dwarf2_cu **ref_cu) + { + struct die_info temp_die; +- struct dwarf2_cu *sig_cu, *cu = *ref_cu; ++ struct dwarf2_cu *sig_cu; + struct die_info *die; + dwarf2_per_objfile *per_objfile = (*ref_cu)->per_objfile; + +@@ -23777,8 +23758,6 @@ follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type, + } + + *ref_cu = sig_cu; +- if (sig_cu != cu) +- sig_cu->ancestor = cu; + + return die; + } diff --git a/gdb.changes b/gdb.changes index 247ad0e..88e17c6 100644 --- a/gdb.changes +++ b/gdb.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Fri May 7 10:43:38 UTC 2021 - Tom de Vries +- Replace tentative fix with upstreamed fix [swo#27681]: + Remove: + * gdb-build-workaround-pcre2_posix-linking-problem.patch + Add: + * gdb-build-hardcode-with-included-regex.patch +- Backport fix from upstream [bsc#1185638, swo#26327]: + * gdb-symtab-fix-infinite-recursion-in-dwarf2_cu-get_builder.patch +- Backport fix from upstream [rh#1931344]: + * gdb-save-restore-file-offset-while-reading-notes-in-core-file.patch + ------------------------------------------------------------------- Sun May 2 18:24:36 UTC 2021 - Tom de Vries diff --git a/gdb.spec b/gdb.spec index 2025730..7bf5b2d 100644 --- a/gdb.spec +++ b/gdb.spec @@ -295,7 +295,6 @@ Patch1512: gdb-tui-enable-work-around-libncurses-segfault.patch Patch1513: gdb-testsuite-fix-control-flow-in-gdb-reverse-insn-reverse-exp.patch Patch1514: gdb-fix-use-of-invalid-pointer-in-remote-async-inferior-event-handler.patch Patch1515: gdb-try-to-load-libthread_db-only-after-reading-all-shared-libraries-when-attaching.patch -Patch1516: gdb-build-workaround-pcre2_posix-linking-problem.patch # Backports from master @@ -317,6 +316,9 @@ Patch2015: gdb-threads-fix-lin_thread_get_thread_signals-for-glibc-2.28.pat Patch2016: gdb-testsuite-ignore-debuginfod_urls.patch Patch2017: gdb-testsuite-fix-unset-of-debuginfod_urls-in-default_gdb_init.patch Patch2018: gdb-tui-fix-len_without_escapes-in-tui-disasm.c.patch +Patch2019: gdb-build-hardcode-with-included-regex.patch +Patch2020: gdb-symtab-fix-infinite-recursion-in-dwarf2_cu-get_builder.patch +Patch2021: gdb-save-restore-file-offset-while-reading-notes-in-core-file.patch # Testsuite patches @@ -714,7 +716,6 @@ find -name "*.info*"|xargs rm -f %patch1513 -p1 %patch1514 -p1 %patch1515 -p1 -%patch1516 -p1 %patch2000 -p1 %patch2002 -p1 @@ -734,6 +735,9 @@ find -name "*.info*"|xargs rm -f %patch2016 -p1 %patch2017 -p1 %patch2018 -p1 +%patch2019 -p1 +%patch2020 -p1 +%patch2021 -p1 %patch2500 -p1 %if 0%{?suse_version} > 1500