public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Kevin Buettner <kevinb@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 14.1
Date: Sun, 28 Jun 2026 00:01:26 GMT [thread overview]
Message-ID: <178260488663.1.303253507866479056.rpms-gdb-ebdac5bb6ea5@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/gdb
Branch : gdb-17.2-rebase-f44
Commit : ebdac5bb6ea5c960c4b31bbc2ac3c190ced6373f
Author : Kevin Buettner <kevinb@redhat.com>
Date : 2023-12-08T18:43:22-07:00
Stats : +454/-1081 in 29 file(s)
URL : https://src.fedoraproject.org/rpms/gdb/c/ebdac5bb6ea5c960c4b31bbc2ac3c190ced6373f?branch=gdb-17.2-rebase-f44
Log:
Rebase to FSF GDB 14.1
Update local patches:
gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
gdb-6.6-buildid-locate-rpm.patch
gdb-6.6-buildid-locate.patch
gdb-container-rh-pkg.patch
gdb-core-open-vdso-warning.patch
gdb-fedora-libncursesw.patch
gdb-linux_perf-bundle.patch
Update backported patches which didn't make it into 14.1:
gdb-rhbz-2232086-cpp-ify-mapped-symtab.patch
gdb-rhbz-2232086-generate-gdb-index-consistently.patch
Drop upstreamed local patches:
gdb-6.5-sharedlibrary-path.patch
Drop gdb-13.2 backports (which are now in gdb-14.1):
gdb-binutils29988-read_indexed_address.patch
gdb-bz2196395-debuginfod-legacy-openssl-crash.patch
gdb-bz2237392-dwarf-obstack-allocation.patch
gdb-bz2237515-debuginfod-double-free.patch
gdb-rhbz2192105-ftbs-dangling-pointer
gdb-rhbz2233961-CVE-2022-4806.patch
gdb-rhbz2233965-memory-leak.patch
Adjust gdb.spec so that --with-mpfr is no longer passed to
configure; doing so, combined with some configury changes triggered
a latent build problem.
---
diff --git a/.gitignore b/.gitignore
index b4b0840..57c00b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,4 @@
/new-fedora-release
/gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz
/v2.0.5.tar.gz
-/gdb-13.1.tar.xz
-/gdb-13.2.tar.xz
+/gdb-14.1.tar.xz
diff --git a/_gdb.spec.Patch.include b/_gdb.spec.Patch.include
index 416050e..9b964ed 100644
--- a/_gdb.spec.Patch.include
+++ b/_gdb.spec.Patch.include
@@ -167,59 +167,23 @@ Patch037: gdb-linux_perf-bundle.patch
#=fedora
Patch038: gdb-add-index.patch
-# Backport "Fix a potential illegal memory access in the BFD library..."
-# (Nick Clifton, binutils/29988)
-Patch039: gdb-binutils29988-read_indexed_address.patch
-
-# Backport upstream patch fixing a "dangling pointer" build problem
-# first seen when building with GCC 13.1.1 20230426 (Red Hat ;; 13.1.1-1).
-Patch040: gdb-rhbz2192105-ftbs-dangling-pointer
-
-# Backport two commits, 0ad504dd464 and ea70f941f9b, from Lancelot SIX
-# which prevent repeated warnings from being printed while loading a
-# core file. (RH BZ 2160211)
-Patch041: gdb-rhbz2160211-excessive-core-file-warnings.patch
-
-# Backport upstream commit f3eee5861743d635 to fix a crash triggered
-# when debuginfod makes use of particular openssl settings.
-Patch042: gdb-bz2196395-debuginfod-legacy-openssl-crash.patch
-
-# Backport upstream commit f96328accde1e63 to fix a potential double
-# free issue in the debuginfod code.
-Patch043: gdb-bz2237515-debuginfod-double-free.patch
-
-# Backport upstream commit 54392c4df604f20 to fix an incorrect
-# obstack allocation that wold lead to memory corruption.
-Patch044: gdb-bz2237392-dwarf-obstack-allocation.patch
-
-# Backport PR29922, SHT_NOBITS section
-# avoids section size sanity check.
-Patch045: gdb-rhbz2233961-CVE-2022-4806.patch
-
-# Backport PR29925, Memory leak in find_abstract_instance
-Patch046: gdb-rhbz2233965-memory-leak.patch
-
-# Backport upstream patch which prevents internal error when
-# generating a gdb-index file (RH BZ 1773651).
-Patch047: gdb-rhbz1773651-gdb-index-internal-error.patch
-
# Back-port upstream commit 1f0fab7ff86 as part of a fix for
# non-deterministic gdb-index generation (RH BZ 2232086).
-Patch048: gdb-rhbz2232086-refactor-selftest-support.patch
+Patch039: gdb-rhbz2232086-refactor-selftest-support.patch
# Back-port upstream commit aa19bc1d259 as part of a fix for
# non-deterministic gdb-index generation (RH BZ 2232086).
-Patch049: gdb-rhbz-2232086-reduce-size-of-gdb-index.patch
+Patch040: gdb-rhbz-2232086-reduce-size-of-gdb-index.patch
# Back-port upstream commit acc117b57f7 as part of a fix for
# non-deterministic gdb-index generation (RH BZ 2232086).
-Patch050: gdb-rhbz-2232086-cpp-ify-mapped-symtab.patch
+Patch041: gdb-rhbz-2232086-cpp-ify-mapped-symtab.patch
# Back-port upstream commit aff250145af as part of a fix for
# non-deterministic gdb-index generation (RH BZ 2232086).
-Patch051: gdb-rhbz-2232086-generate-gdb-index-consistently.patch
+Patch042: gdb-rhbz-2232086-generate-gdb-index-consistently.patch
# Back-port upstream commit 3644f41dc80 as part of a fix for
# non-deterministic gdb-index generation (RH BZ 2232086).
-Patch052: gdb-rhbz-2232086-generate-dwarf-5-index-consistently.patch
+Patch043: gdb-rhbz-2232086-generate-dwarf-5-index-consistently.patch
diff --git a/_gdb.spec.patch.include b/_gdb.spec.patch.include
index d954063..abd8ca2 100644
--- a/_gdb.spec.patch.include
+++ b/_gdb.spec.patch.include
@@ -41,12 +41,3 @@
%patch -p1 -P041
%patch -p1 -P042
%patch -p1 -P043
-%patch -p1 -P044
-%patch -p1 -P045
-%patch -p1 -P046
-%patch -p1 -P047
-%patch -p1 -P048
-%patch -p1 -P049
-%patch -p1 -P050
-%patch -p1 -P051
-%patch -p1 -P052
diff --git a/_git_upstream_commit b/_git_upstream_commit
index 26ed85a..3d8eec6 100644
--- a/_git_upstream_commit
+++ b/_git_upstream_commit
@@ -1 +1 @@
-662243de0e14a4945555a480dca33c0e677976eb
+6bda1c19bcd16eff8488facb8a67d52a436f70e7
diff --git a/_patch_order b/_patch_order
index 34b1a45..aee01ee 100644
--- a/_patch_order
+++ b/_patch_order
@@ -36,15 +36,6 @@ gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch
gdb-container-rh-pkg.patch
gdb-linux_perf-bundle.patch
gdb-add-index.patch
-gdb-binutils29988-read_indexed_address.patch
-gdb-rhbz2192105-ftbs-dangling-pointer
-gdb-rhbz2160211-excessive-core-file-warnings.patch
-gdb-bz2196395-debuginfod-legacy-openssl-crash.patch
-gdb-bz2237515-debuginfod-double-free.patch
-gdb-bz2237392-dwarf-obstack-allocation.patch
-gdb-rhbz2233961-CVE-2022-4806.patch
-gdb-rhbz2233965-memory-leak.patch
-gdb-rhbz1773651-gdb-index-internal-error.patch
gdb-rhbz2232086-refactor-selftest-support.patch
gdb-rhbz-2232086-reduce-size-of-gdb-index.patch
gdb-rhbz-2232086-cpp-ify-mapped-symtab.patch
diff --git a/gdb-6.3-gstack-20050411.patch b/gdb-6.3-gstack-20050411.patch
index ce9cd65..01e8ffa 100644
--- a/gdb-6.3-gstack-20050411.patch
+++ b/gdb-6.3-gstack-20050411.patch
@@ -16,7 +16,7 @@ Subject: gdb-6.3-gstack-20050411.patch
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
-@@ -2011,7 +2011,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force
+@@ -2035,7 +2035,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force
install: all
@$(MAKE) $(FLAGS_TO_PASS) install-only
@@ -25,7 +25,7 @@ diff --git a/gdb/Makefile.in b/gdb/Makefile.in
transformed_name=`t='$(program_transform_name)'; \
echo gdb | sed -e "$$t"` ; \
if test "x$$transformed_name" = x; then \
-@@ -2061,7 +2061,25 @@ install-guile:
+@@ -2085,7 +2085,25 @@ install-guile:
install-python:
$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb
@@ -52,7 +52,7 @@ diff --git a/gdb/Makefile.in b/gdb/Makefile.in
transformed_name=`t='$(program_transform_name)'; \
echo gdb | sed -e $$t` ; \
if test "x$$transformed_name" = x; then \
-@@ -2092,6 +2110,18 @@ uninstall: force $(CONFIG_UNINSTALL)
+@@ -2116,6 +2134,18 @@ uninstall: force $(CONFIG_UNINSTALL)
rm -f $(DESTDIR)$(bindir)/$$transformed_name
@$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do
diff --git a/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch b/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
index 6a9fcad..ab64f7f 100644
--- a/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
+++ b/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
@@ -44,7 +44,7 @@ glibc-debuginfo-2.7-2.x86_64: /usr/lib/debug/lib64/libc.so.6.debug:
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
-@@ -1300,6 +1300,10 @@ process_print_command_args (const char *args, value_print_options *print_opts,
+@@ -1308,6 +1308,11 @@ process_print_command_args (const char *args, value_print_options *print_opts,
if (exp != nullptr && *exp)
{
@@ -52,9 +52,10 @@ diff --git a/gdb/printcmd.c b/gdb/printcmd.c
+ function descriptors. */
+ if (target_has_execution () && strcmp (exp, "errno") == 0)
+ exp = "*(*(int *(*)(void)) __errno_location) ()";
- /* VOIDPRINT is true to indicate that we do want to print a void
- value, so invert it for parse_expression. */
- expression_up expr = parse_expression (exp, nullptr, !voidprint);
++
+ /* This setting allows large arrays to be printed by limiting the
+ number of elements that are loaded into GDB's memory; we only
+ need to load as many array elements as we plan to print. */
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-errno.c b/gdb/testsuite/gdb.dwarf2/dw2-errno.c
new file mode 100644
--- /dev/null
diff --git a/gdb-6.6-buildid-locate-rpm.patch b/gdb-6.6-buildid-locate-rpm.patch
index 23f4d55..f38fdd5 100644
--- a/gdb-6.6-buildid-locate-rpm.patch
+++ b/gdb-6.6-buildid-locate-rpm.patch
@@ -235,7 +235,7 @@ diff --git a/gdb/aclocal.m4 b/gdb/aclocal.m4
diff --git a/gdb/build-id.c b/gdb/build-id.c
--- a/gdb/build-id.c
+++ b/gdb/build-id.c
-@@ -771,10 +771,10 @@ missing_rpm_enlist_1 (const char *filename, int verify_vendor)
+@@ -780,10 +780,10 @@ missing_rpm_enlist_1 (const char *filename, int verify_vendor)
static rpmts (*rpmtsCreate_p) (void);
extern rpmts rpmtsFree(rpmts ts);
static rpmts (*rpmtsFree_p) (rpmts ts);
@@ -248,7 +248,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
const void *keyp,
size_t keylen);
#else /* !DLOPEN_LIBRPM */
-@@ -829,7 +829,7 @@ missing_rpm_enlist_1 (const char *filename, int verify_vendor)
+@@ -838,7 +838,7 @@ missing_rpm_enlist_1 (const char *filename, int verify_vendor)
&& (rpmdbNextIterator_p = (Header (*) (rpmdbMatchIterator mi)) dlsym (h, "rpmdbNextIterator"))
&& (rpmtsCreate_p = (rpmts (*) (void)) dlsym (h, "rpmtsCreate"))
&& (rpmtsFree_p = (rpmts (*) (rpmts ts)) dlsym (h, "rpmtsFree"))
@@ -257,7 +257,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
{
warning (_("Opened library \"%s\" is incompatible (%s), "
"missing debuginfos notifications will not be displayed"),
-@@ -917,7 +917,7 @@ missing_rpm_enlist_1 (const char *filename, int verify_vendor)
+@@ -926,7 +926,7 @@ missing_rpm_enlist_1 (const char *filename, int verify_vendor)
/* RPMDBI_PACKAGES requires keylen == sizeof (int). */
/* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel(). */
@@ -269,7 +269,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
diff --git a/gdb/config.in b/gdb/config.in
--- a/gdb/config.in
+++ b/gdb/config.in
-@@ -39,6 +39,9 @@
+@@ -42,6 +42,9 @@
/* Handle .ctf type-info sections */
#undef ENABLE_LIBCTF
@@ -279,9 +279,9 @@ diff --git a/gdb/config.in b/gdb/config.in
/* Define to 1 if translation of program messages to the user's native
language is requested. */
#undef ENABLE_NLS
-@@ -259,6 +262,9 @@
- /* Define if you have the mpfr library. */
- #undef HAVE_LIBMPFR
+@@ -265,6 +268,9 @@
+ /* Define to 1 if you have the `m' library (-lm). */
+ #undef HAVE_LIBM
+/* Define if librpm library is being used. */
+#undef HAVE_LIBRPM
@@ -292,7 +292,7 @@ diff --git a/gdb/config.in b/gdb/config.in
diff --git a/gdb/configure b/gdb/configure
--- a/gdb/configure
+++ b/gdb/configure
-@@ -783,6 +783,11 @@ TARGET_OBS
+@@ -778,6 +778,11 @@ AMD_DBGAPI_CFLAGS
ENABLE_BFD_64_BIT_FALSE
ENABLE_BFD_64_BIT_TRUE
subdirs
@@ -304,16 +304,16 @@ diff --git a/gdb/configure b/gdb/configure
GDB_DATADIR
DEBUGDIR
MAKEINFO_EXTRA_FLAGS
-@@ -912,6 +917,7 @@ with_gdb_datadir
+@@ -911,6 +916,7 @@ with_gdb_datadir
with_relocated_sources
with_auto_load_dir
with_auto_load_safe_path
+with_rpm
enable_targets
enable_64_bit_bfd
- enable_gdbmi
-@@ -992,6 +998,8 @@ PKG_CONFIG_PATH
- PKG_CONFIG_LIBDIR
+ with_amd_dbgapi
+@@ -988,6 +994,8 @@ AMD_DBGAPI_CFLAGS
+ AMD_DBGAPI_LIBS
DEBUGINFOD_CFLAGS
DEBUGINFOD_LIBS
+RPM_CFLAGS
@@ -321,8 +321,8 @@ diff --git a/gdb/configure b/gdb/configure
YACC
YFLAGS
ZSTD_CFLAGS
-@@ -1678,6 +1686,8 @@ Optional Packages:
- do not restrict auto-loaded files locations
+@@ -1679,6 +1687,8 @@ Optional Packages:
+ --with-amd-dbgapi support for the amd-dbgapi target (yes / no / auto)
--with-debuginfod Enable debuginfo lookups with debuginfod
(auto/yes/no)
+ --with-rpm query rpm database for missing debuginfos (yes/no,
@@ -330,7 +330,7 @@ diff --git a/gdb/configure b/gdb/configure
--with-libunwind-ia64 use libunwind frame unwinding for ia64 targets
--with-curses use the curses library instead of the termcap
library
-@@ -1761,6 +1771,8 @@ Some influential environment variables:
+@@ -1759,6 +1769,8 @@ Some influential environment variables:
C compiler flags for DEBUGINFOD, overriding pkg-config
DEBUGINFOD_LIBS
linker flags for DEBUGINFOD, overriding pkg-config
@@ -339,7 +339,7 @@ diff --git a/gdb/configure b/gdb/configure
YACC The `Yet Another Compiler Compiler' implementation to use.
Defaults to the first program found out of: `bison -y', `byacc',
`yacc'.
-@@ -17848,6 +17860,495 @@ _ACEOF
+@@ -18039,6 +18051,495 @@ _ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5
$as_echo "$with_auto_load_safe_path" >&6; }
@@ -838,7 +838,7 @@ diff --git a/gdb/configure b/gdb/configure
diff --git a/gdb/configure.ac b/gdb/configure.ac
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
-@@ -160,6 +160,200 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir,
+@@ -173,6 +173,200 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir,
[Directories safe to hold auto-loaded files.])
AC_MSG_RESULT([$with_auto_load_safe_path])
@@ -1050,7 +1050,7 @@ diff --git a/gdb/event-top.c b/gdb/event-top.c
/* readline include files. */
#include "readline/readline.h"
-@@ -391,6 +392,8 @@ display_gdb_prompt (const char *new_prompt)
+@@ -404,6 +405,8 @@ display_gdb_prompt (const char *new_prompt)
/* Reset the nesting depth used when trace-commands is set. */
reset_command_nest_depth ();
@@ -1059,7 +1059,7 @@ diff --git a/gdb/event-top.c b/gdb/event-top.c
/* Do not call the python hook on an explicit prompt change as
passed to this function, as this forms a secondary/local prompt,
IE, displayed but not set. */
-@@ -852,7 +855,10 @@ command_line_handler (gdb::unique_xmalloc_ptr<char> &&rl)
+@@ -788,7 +791,10 @@ command_line_handler (gdb::unique_xmalloc_ptr<char> &&rl)
command_handler (cmd);
if (ui->prompt_state != PROMPTED)
@@ -1074,7 +1074,7 @@ diff --git a/gdb/event-top.c b/gdb/event-top.c
diff --git a/gdb/symfile.h b/gdb/symfile.h
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
-@@ -352,6 +352,7 @@ extern void generic_load (const char *args, int from_tty);
+@@ -367,6 +367,7 @@ extern void generic_load (const char *args, int from_tty);
/* build-id support. */
extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr);
extern void debug_print_missing (const char *binary, const char *debug);
diff --git a/gdb-6.6-buildid-locate-solib-missing-ids.patch b/gdb-6.6-buildid-locate-solib-missing-ids.patch
index 3b641f8..e9ec7b5 100644
--- a/gdb-6.6-buildid-locate-solib-missing-ids.patch
+++ b/gdb-6.6-buildid-locate-solib-missing-ids.patch
@@ -14,7 +14,7 @@ https://bugzilla.redhat.com/show_bug.cgi?id=1339862
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
-@@ -1321,14 +1321,28 @@ svr4_read_so_list (svr4_info *info, CORE_ADDR lm, CORE_ADDR prev_lm,
+@@ -1320,14 +1320,28 @@ svr4_read_so_list (svr4_info *info, CORE_ADDR lm, CORE_ADDR prev_lm,
}
{
@@ -45,7 +45,7 @@ diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
if (build_id != NULL)
{
char *name, *build_id_filename;
-@@ -1343,23 +1357,7 @@ svr4_read_so_list (svr4_info *info, CORE_ADDR lm, CORE_ADDR prev_lm,
+@@ -1342,23 +1356,7 @@ svr4_read_so_list (svr4_info *info, CORE_ADDR lm, CORE_ADDR prev_lm,
xfree (name);
}
else
diff --git a/gdb-6.6-buildid-locate.patch b/gdb-6.6-buildid-locate.patch
index a56ceeb..1350051 100644
--- a/gdb-6.6-buildid-locate.patch
+++ b/gdb-6.6-buildid-locate.patch
@@ -9,7 +9,7 @@ Subject: gdb-6.6-buildid-locate.patch
diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h
--- a/bfd/libbfd-in.h
+++ b/bfd/libbfd-in.h
-@@ -115,7 +115,7 @@ static inline char *
+@@ -110,7 +110,7 @@ static inline char *
bfd_strdup (const char *str)
{
size_t len = strlen (str) + 1;
@@ -21,7 +21,7 @@ diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
-@@ -121,7 +121,7 @@ static inline char *
+@@ -116,7 +116,7 @@ static inline char *
bfd_strdup (const char *str)
{
size_t len = strlen (str) + 1;
@@ -33,7 +33,7 @@ diff --git a/bfd/libbfd.h b/bfd/libbfd.h
diff --git a/gdb/build-id.c b/gdb/build-id.c
--- a/gdb/build-id.c
+++ b/gdb/build-id.c
-@@ -24,13 +24,71 @@
+@@ -24,14 +24,72 @@
#include "gdbsupport/gdb_vecs.h"
#include "symfile.h"
#include "objfiles.h"
@@ -46,6 +46,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
+#include "gdb_bfd.h"
+#include "gdbcmd.h"
#include "gdbcore.h"
+ #include "cli/cli-style.h"
+#include "inferior.h"
+#include "objfiles.h"
+#include "observable.h"
@@ -104,9 +105,9 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
-build_id_bfd_get (bfd *abfd)
+build_id_bfd_shdr_get (bfd *abfd)
{
- if (!bfd_check_format (abfd, bfd_object)
- && !bfd_check_format (abfd, bfd_core))
-@@ -43,6 +101,348 @@ build_id_bfd_get (bfd *abfd)
+ /* Dynamic objfiles such as ones created by JIT reader API
+ have no underlying bfd structure (that is, objfile->obfd
+@@ -50,6 +108,348 @@ build_id_bfd_get (bfd *abfd)
return NULL;
}
@@ -455,7 +456,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
/* See build-id.h. */
int
-@@ -51,7 +451,7 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check)
+@@ -58,7 +458,7 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check)
const struct bfd_build_id *found;
int retval = 0;
@@ -464,7 +465,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
if (found == NULL)
warning (_("File \"%s\" has no build-id, file skipped"),
-@@ -66,63 +466,166 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check)
+@@ -73,63 +473,166 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check)
return retval;
}
@@ -561,8 +562,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
- if (separate_debug_file_debug)
- gdb_printf (gdb_stdlog, _(" no, unable to open.\n"));
+ struct stat statbuf_trash;
-
-- return {};
++
+ /* `access' automatically dereferences LINK. */
+ if (lstat (link.c_str (), &statbuf_trash) != 0)
+ {
@@ -597,7 +597,8 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
+ {
+ if (separate_debug_file_debug)
+ gdb_printf (gdb_stdlog, _(" no, unable to open.\n"));
-+
+
+- return {};
+ continue;
+ }
+
@@ -628,13 +629,13 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
+ /* If none of the real files is found report as missing file
+ always the non-.%u-suffixed file. */
+ std::string link0 = orig_link;
-+
+
+- return {};
+ /* If the symlink has target request to install the target.
+ BASE-debuginfo.rpm contains the symlink but BASE.rpm may be missing.
+ https://bugzilla.redhat.com/show_bug.cgi?id=981154 */
+ std::string link0_resolved (link_resolve (link0.c_str (), 0));
-
-- return {};
++
+ if (link_all.empty ())
+ link_all = link0_resolved;
+ else
@@ -664,7 +665,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
}
/* Common code for finding BFDs of a given build-id. This function
-@@ -131,7 +634,7 @@ build_id_to_debug_bfd_1 (const std::string &link, size_t build_id_len,
+@@ -138,7 +641,7 @@ build_id_to_debug_bfd_1 (const std::string &link, size_t build_id_len,
static gdb_bfd_ref_ptr
build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id,
@@ -673,7 +674,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
{
/* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
cause "/.build-id/..." lookups. */
-@@ -154,16 +657,17 @@ build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id,
+@@ -161,16 +664,17 @@ build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id,
if (size > 0)
{
size--;
@@ -694,7 +695,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
if (debug_bfd != NULL)
return debug_bfd;
-@@ -174,7 +678,7 @@ build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id,
+@@ -181,7 +685,7 @@ build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id,
if (!gdb_sysroot.empty ())
{
link = gdb_sysroot + link;
@@ -703,7 +704,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
if (debug_bfd != NULL)
return debug_bfd;
}
-@@ -183,30 +687,660 @@ build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id,
+@@ -190,31 +694,663 @@ build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id,
return {};
}
@@ -721,6 +722,8 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
+ return result;
+}
+
++void debug_flush_missing (void);
++
+#ifdef HAVE_LIBRPM
+
+#include <rpm/rpmlib.h>
@@ -1220,7 +1223,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
+}
+
+static void
-+debug_print_executable_changed (void)
++debug_print_executable_changed (struct program_space *pspace, bool reload_p)
+{
+#ifdef HAVE_LIBRPM
+ missing_rpm_change ();
@@ -1356,9 +1359,10 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
/* See build-id.h. */
std::string
--find_separate_debug_file_by_buildid (struct objfile *objfile)
-+find_separate_debug_file_by_buildid (struct objfile *objfile,
-+ gdb::unique_xmalloc_ptr<char> *build_id_filename_return)
+ find_separate_debug_file_by_buildid (struct objfile *objfile,
+- deferred_warnings *warnings)
++ deferred_warnings *warnings,
++ gdb::unique_xmalloc_ptr<char> *build_id_filename_return)
{
const struct bfd_build_id *build_id;
@@ -1370,7 +1374,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
if (build_id != NULL)
{
if (separate_debug_file_debug)
-@@ -214,8 +1348,21 @@ find_separate_debug_file_by_buildid (struct objfile *objfile)
+@@ -222,8 +1358,21 @@ find_separate_debug_file_by_buildid (struct objfile *objfile,
_("\nLooking for separate debug info (build-id) for "
"%s\n"), objfile_name (objfile));
@@ -1393,7 +1397,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
/* Prevent looping on a stripped .debug file. */
if (abfd != NULL
&& filename_cmp (bfd_get_filename (abfd.get ()),
-@@ -228,3 +1375,22 @@ find_separate_debug_file_by_buildid (struct objfile *objfile)
+@@ -243,3 +1392,22 @@ find_separate_debug_file_by_buildid (struct objfile *objfile,
return std::string ();
}
@@ -1432,7 +1436,7 @@ diff --git a/gdb/build-id.h b/gdb/build-id.h
/* Return true if ABFD has NT_GNU_BUILD_ID matching the CHECK value.
Otherwise, issue a warning and return false. */
-@@ -38,21 +39,26 @@ extern int build_id_verify (bfd *abfd,
+@@ -38,14 +39,19 @@ extern int build_id_verify (bfd *abfd,
can be found, return NULL. */
extern gdb_bfd_ref_ptr build_id_to_debug_bfd (size_t build_id_len,
@@ -1454,35 +1458,35 @@ diff --git a/gdb/build-id.h b/gdb/build-id.h
/* Find the separate debug file for OBJFILE, by using the build-id
associated with OBJFILE's BFD. If successful, returns the file name for the
- separate debug file, otherwise, return an empty string. */
+@@ -58,7 +64,8 @@ extern gdb_bfd_ref_ptr build_id_to_exec_bfd (size_t build_id_len,
+ will be printed. */
--extern std::string find_separate_debug_file_by_buildid
-- (struct objfile *objfile);
-+extern std::string find_separate_debug_file_by_buildid (struct objfile *objfile,
-+ gdb::unique_xmalloc_ptr<char> *build_id_filename_return);
+ extern std::string find_separate_debug_file_by_buildid
+- (struct objfile *objfile, deferred_warnings *warnings);
++ (struct objfile *objfile, deferred_warnings *warnings,
++ gdb::unique_xmalloc_ptr<char> *build_id_filename_return);
/* Return an hex-string representation of BUILD_ID. */
diff --git a/gdb/coffread.c b/gdb/coffread.c
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
-@@ -734,7 +734,8 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
- /* Try to add separate debug file if no symbols table found. */
- if (!objfile->has_partial_symbols ())
+@@ -729,7 +729,7 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
{
-- std::string debugfile = find_separate_debug_file_by_buildid (objfile);
-+ std::string debugfile = find_separate_debug_file_by_buildid (objfile,
-+ NULL);
+ deferred_warnings warnings;
+ std::string debugfile
+- = find_separate_debug_file_by_buildid (objfile, &warnings);
++ = find_separate_debug_file_by_buildid (objfile, &warnings, NULL);
if (debugfile.empty ())
- debugfile = find_separate_debug_file_by_debuglink (objfile);
+ debugfile
diff --git a/gdb/corelow.c b/gdb/corelow.c
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -22,6 +22,10 @@
#include <signal.h>
#include <fcntl.h>
- #include "frame.h" /* required by inferior.h */
+ #include "frame.h"
+#include "auxv.h"
+#include "build-id.h"
+#include "elf/common.h"
@@ -1490,7 +1494,7 @@ diff --git a/gdb/corelow.c b/gdb/corelow.c
#include "inferior.h"
#include "infrun.h"
#include "symtab.h"
-@@ -391,6 +395,8 @@ add_to_thread_list (asection *asect, asection *reg_sect)
+@@ -380,6 +384,8 @@ add_to_thread_list (asection *asect, asection *reg_sect, inferior *inf)
switch_to_thread (thr); /* Yes, make it current. */
}
@@ -1499,7 +1503,7 @@ diff --git a/gdb/corelow.c b/gdb/corelow.c
/* Issue a message saying we have no core to debug, if FROM_TTY. */
static void
-@@ -427,12 +433,14 @@ core_file_command (const char *filename, int from_tty)
+@@ -563,12 +569,14 @@ rename_vmcore_idle_reg_sections (bfd *abfd, inferior *inf)
static void
locate_exec_from_corefile_build_id (bfd *abfd, int from_tty)
{
@@ -1516,7 +1520,7 @@ diff --git a/gdb/corelow.c b/gdb/corelow.c
if (execbfd == nullptr)
{
-@@ -460,7 +468,12 @@ locate_exec_from_corefile_build_id (bfd *abfd, int from_tty)
+@@ -596,7 +604,12 @@ locate_exec_from_corefile_build_id (bfd *abfd, int from_tty)
exec_file_attach (bfd_get_filename (execbfd.get ()), from_tty);
symbol_file_add_main (bfd_get_filename (execbfd.get ()),
symfile_add_flag (from_tty ? SYMFILE_VERBOSE : 0));
@@ -1529,7 +1533,7 @@ diff --git a/gdb/corelow.c b/gdb/corelow.c
}
/* See gdbcore.h. */
-@@ -1325,4 +1338,11 @@ _initialize_corelow ()
+@@ -1506,4 +1519,11 @@ _initialize_corelow ()
maintenance_print_core_file_backed_mappings,
_("Print core file's file-backed mappings."),
&maintenanceprintlist);
@@ -1544,7 +1548,7 @@ diff --git a/gdb/corelow.c b/gdb/corelow.c
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
-@@ -22037,6 +22037,27 @@ information files.
+@@ -22296,6 +22296,27 @@ information files.
@end table
@@ -1575,16 +1579,16 @@ diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
diff --git a/gdb/dwarf2/index-cache.c b/gdb/dwarf2/index-cache.c
--- a/gdb/dwarf2/index-cache.c
+++ b/gdb/dwarf2/index-cache.c
-@@ -101,7 +101,7 @@ index_cache::store (dwarf2_per_objfile *per_objfile)
+@@ -96,7 +96,7 @@ index_cache_store_context::index_cache_store_context (const index_cache &ic,
return;
/* Get build id of objfile. */
-- const bfd_build_id *build_id = build_id_bfd_get (obj->obfd.get ());
-+ const bfd_build_id *build_id = build_id_bfd_shdr_get (obj->obfd.get ());
+- const bfd_build_id *build_id = build_id_bfd_get (per_bfd->obfd);
++ const bfd_build_id *build_id = build_id_bfd_shdr_get (per_bfd->obfd);
if (build_id == nullptr)
{
index_cache_debug ("objfile %s has no build id",
-@@ -118,7 +118,8 @@ index_cache::store (dwarf2_per_objfile *per_objfile)
+@@ -111,7 +111,8 @@ index_cache_store_context::index_cache_store_context (const index_cache &ic,
if (dwz != nullptr)
{
@@ -1597,7 +1601,7 @@ diff --git a/gdb/dwarf2/index-cache.c b/gdb/dwarf2/index-cache.c
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
-@@ -5328,7 +5328,7 @@ get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
+@@ -3355,7 +3355,7 @@ get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
static gdb::array_view<const gdb_byte>
get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_bfd *dwarf2_per_bfd)
{
@@ -1606,7 +1610,7 @@ diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
if (build_id == nullptr)
return {};
-@@ -5341,7 +5341,7 @@ get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_bfd *dwarf2_per_bfd)
+@@ -3368,7 +3368,7 @@ get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_bfd *dwarf2_per_bfd)
static gdb::array_view<const gdb_byte>
get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
{
@@ -1618,18 +1622,19 @@ diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
diff --git a/gdb/elfread.c b/gdb/elfread.c
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
-@@ -1213,7 +1213,9 @@ elf_symfile_read_dwarf2 (struct objfile *objfile,
- && objfile->separate_debug_objfile == NULL
- && objfile->separate_debug_objfile_backlink == NULL)
+@@ -1220,8 +1220,10 @@ elf_symfile_read_dwarf2 (struct objfile *objfile,
{
-- std::string debugfile = find_separate_debug_file_by_buildid (objfile);
+ deferred_warnings warnings;
+
+ gdb::unique_xmalloc_ptr<char> build_id_filename;
-+ std::string debugfile
-+ = find_separate_debug_file_by_buildid (objfile, &build_id_filename);
+ std::string debugfile
+- = find_separate_debug_file_by_buildid (objfile, &warnings);
++ = find_separate_debug_file_by_buildid (objfile, &warnings,
++ &build_id_filename);
if (debugfile.empty ())
- debugfile = find_separate_debug_file_by_debuglink (objfile);
-@@ -1229,7 +1231,7 @@ elf_symfile_read_dwarf2 (struct objfile *objfile,
+ debugfile = find_separate_debug_file_by_debuglink (objfile, &warnings);
+@@ -1239,7 +1241,7 @@ elf_symfile_read_dwarf2 (struct objfile *objfile,
{
has_dwarf2 = false;
const struct bfd_build_id *build_id
@@ -1638,7 +1643,7 @@ diff --git a/gdb/elfread.c b/gdb/elfread.c
const char *filename = bfd_get_filename (objfile->obfd.get ());
if (build_id != nullptr)
-@@ -1256,6 +1258,11 @@ elf_symfile_read_dwarf2 (struct objfile *objfile,
+@@ -1265,6 +1267,11 @@ elf_symfile_read_dwarf2 (struct objfile *objfile,
has_dwarf2 = true;
}
}
@@ -1649,7 +1654,7 @@ diff --git a/gdb/elfread.c b/gdb/elfread.c
+ debug_print_missing (objfile_name (objfile), build_id_filename.get ());
}
}
- }
+ /* If all the methods to collect the debuginfo failed, print the
diff --git a/gdb/exec.c b/gdb/exec.c
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -1674,8 +1679,8 @@ diff --git a/gdb/exec.c b/gdb/exec.c
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
-@@ -786,6 +786,10 @@ struct objfile
- bool skip_jit_symbol_lookup = false;
+@@ -884,6 +884,10 @@ struct objfile
+ bool object_format_has_copy_relocs = false;
};
+/* This file was loaded according to the BUILD_ID_CORE_LOADS rules. */
@@ -1709,7 +1714,7 @@ diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
-@@ -45,6 +45,7 @@
+@@ -44,6 +44,7 @@
#include "auxv.h"
#include "gdb_bfd.h"
#include "probe.h"
@@ -1717,7 +1722,7 @@ diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
#include <map>
-@@ -1319,9 +1320,51 @@ svr4_read_so_list (svr4_info *info, CORE_ADDR lm, CORE_ADDR prev_lm,
+@@ -1318,9 +1319,51 @@ svr4_read_so_list (svr4_info *info, CORE_ADDR lm, CORE_ADDR prev_lm,
continue;
}
@@ -1775,7 +1780,7 @@ diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
diff --git a/gdb/source.c b/gdb/source.c
--- a/gdb/source.c
+++ b/gdb/source.c
-@@ -1196,7 +1196,7 @@ open_source_file (struct symtab *s)
+@@ -1167,7 +1167,7 @@ open_source_file (struct symtab *s)
}
const struct bfd_build_id *build_id
@@ -1787,7 +1792,7 @@ diff --git a/gdb/source.c b/gdb/source.c
diff --git a/gdb/symfile.h b/gdb/symfile.h
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
-@@ -342,12 +342,18 @@ bool expand_symtabs_matching
+@@ -357,12 +357,18 @@ bool expand_symtabs_matching
void map_symbol_filenames (gdb::function_view<symbol_filename_ftype> fun,
bool need_fullname);
@@ -1809,7 +1814,7 @@ diff --git a/gdb/symfile.h b/gdb/symfile.h
diff --git a/gdb/testsuite/gdb.base/corefile.exp b/gdb/testsuite/gdb.base/corefile.exp
--- a/gdb/testsuite/gdb.base/corefile.exp
+++ b/gdb/testsuite/gdb.base/corefile.exp
-@@ -349,3 +349,33 @@ gdb_test_multiple "core-file $corefile" $test {
+@@ -347,3 +347,33 @@ gdb_test_multiple "core-file $corefile" $test {
pass $test
}
}
@@ -1846,7 +1851,7 @@ diff --git a/gdb/testsuite/gdb.base/corefile.exp b/gdb/testsuite/gdb.base/corefi
diff --git a/gdb/testsuite/gdb.base/gdbinit-history.exp b/gdb/testsuite/gdb.base/gdbinit-history.exp
--- a/gdb/testsuite/gdb.base/gdbinit-history.exp
+++ b/gdb/testsuite/gdb.base/gdbinit-history.exp
-@@ -185,7 +185,8 @@ proc test_empty_history_filename { } {
+@@ -179,7 +179,8 @@ proc test_empty_history_filename { } {
global env
global gdb_prompt
@@ -1870,17 +1875,17 @@ diff --git a/gdb/testsuite/gdb.base/new-ui-pending-input.exp b/gdb/testsuite/gdb
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
-@@ -217,7 +217,8 @@ if ![info exists INTERNAL_GDBFLAGS] {
- "-nw" \
+@@ -226,7 +226,8 @@ if ![info exists INTERNAL_GDBFLAGS] {
"-nx" \
+ "-q" \
{-iex "set height 0"} \
- {-iex "set width 0"}]]
+ {-iex "set width 0"} \
+ {-iex "set build-id-verbose 0"}]]
- set INTERNAL_GDBFLAGS [append_gdb_data_directory_option $INTERNAL_GDBFLAGS]
- }
-@@ -2349,6 +2350,17 @@ proc default_gdb_start { } {
+ # If DEBUGINFOD_URLS is set, gdb will try to download sources and
+ # debug info for f.i. system libraries. Prevent this.
+@@ -2434,6 +2435,17 @@ proc default_gdb_start { } {
}
}
@@ -1901,7 +1906,7 @@ diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
--- a/gdb/testsuite/lib/mi-support.exp
+++ b/gdb/testsuite/lib/mi-support.exp
-@@ -330,6 +330,16 @@ proc default_mi_gdb_start { { flags {} } } {
+@@ -321,6 +321,16 @@ proc default_mi_gdb_start { { flags {} } } {
warning "Couldn't set the width to 0."
}
}
diff --git a/gdb-6.6-testsuite-timeouts.patch b/gdb-6.6-testsuite-timeouts.patch
index a896313..9a31a5b 100644
--- a/gdb-6.6-testsuite-timeouts.patch
+++ b/gdb-6.6-testsuite-timeouts.patch
@@ -9,7 +9,7 @@ Subject: gdb-6.6-testsuite-timeouts.patch
diff --git a/gdb/testsuite/gdb.base/annota1.exp b/gdb/testsuite/gdb.base/annota1.exp
--- a/gdb/testsuite/gdb.base/annota1.exp
+++ b/gdb/testsuite/gdb.base/annota1.exp
-@@ -39,6 +39,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
+@@ -37,6 +37,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
clean_restart ${binfile}
@@ -21,7 +21,7 @@ diff --git a/gdb/testsuite/gdb.base/annota1.exp b/gdb/testsuite/gdb.base/annota1
diff --git a/gdb/testsuite/gdb.base/annota3.exp b/gdb/testsuite/gdb.base/annota3.exp
--- a/gdb/testsuite/gdb.base/annota3.exp
+++ b/gdb/testsuite/gdb.base/annota3.exp
-@@ -38,6 +38,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
+@@ -36,6 +36,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
clean_restart ${binfile}
diff --git a/gdb-binutils29988-read_indexed_address.patch b/gdb-binutils29988-read_indexed_address.patch
deleted file mode 100644
index af44d12..0000000
--- a/gdb-binutils29988-read_indexed_address.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Nick Clifton <nickc@redhat.com>
-Date: Wed, 11 Jan 2023 12:13:46 +0000
-Subject: gdb-binutils29988-read_indexed_address.patch
-
-;; Backport "Fix a potential illegal memory access in the BFD library..."
-;; (Nick Clifton, binutils/29988)
-
- PR 29988
- * dwarf2.c (read_indexed_address): Fix check for an out of range
- offset.
-
-diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
---- a/bfd/dwarf2.c
-+++ b/bfd/dwarf2.c
-@@ -1412,7 +1412,7 @@ read_indexed_address (uint64_t idx, struct comp_unit *unit)
- offset += unit->dwarf_addr_offset;
- if (offset < unit->dwarf_addr_offset
- || offset > file->dwarf_addr_size
-- || file->dwarf_addr_size - offset < unit->offset_size)
-+ || file->dwarf_addr_size - offset < unit->addr_size)
- return 0;
-
- info_ptr = file->dwarf_addr_buffer + offset;
diff --git a/gdb-bz2196395-debuginfod-legacy-openssl-crash.patch b/gdb-bz2196395-debuginfod-legacy-openssl-crash.patch
deleted file mode 100644
index 452fe58..0000000
--- a/gdb-bz2196395-debuginfod-legacy-openssl-crash.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Andrew Burgess <aburgess@redhat.com>
-Date: Tue, 20 Jun 2023 09:46:35 +0100
-Subject: gdb-bz2196395-debuginfod-legacy-openssl-crash.patch
-
-;; Backport upstream commit f3eee5861743d635 to fix a crash triggered
-;; when debuginfod makes use of particular openssl settings.
-
-gdb/debuginfod: cleanup debuginfod earlier
-
-A GDB crash was discovered on Fedora GDB that was tracked back to an
-issue with the way that debuginfod is cleaned up.
-
-The bug was reported on Fedora 37, 38, and 39. Here are the steps to
-reproduce:
-
-1. The file /etc/ssl/openssl.cnf contains the following lines:
-
- [provider_sect]
- default = default_sect
- ##legacy = legacy_sect
- ##
- [default_sect]
- activate = 1
-
- ##[legacy_sect]
- ##activate = 1
-
- The bug will occur when the '##' characters are removed so that the
- lines in question look like this:
-
- [provider_sect]
- default = default_sect
- legacy = legacy_sect
-
- [default_sect]
- activate = 1
-
- [legacy_sect]
- activate = 1
-
-2. Clean up any existing debuginfod cache data:
-
- > rm -rf $HOME/.cache/debuginfod_client
-
-3. Run GDB:
-
- > gdb -nx -q -iex 'set trace-commands on' \
- -iex 'set debuginfod enabled on' \
- -iex 'set confirm off' \
- -ex 'start' -ex 'quit' /bin/ls
- +set debuginfod enabled on
- +set confirm off
- Reading symbols from /bin/ls...
- Downloading separate debug info for /usr/bin/ls
- ... snip ...
- Temporary breakpoint 1, main (argc=1, argv=0x7fffffffde38) at ../src/ls.c:1646
- 1646 {
- +quit
-
- Fatal signal: Segmentation fault
- ----- Backtrace -----
- ... snip ...
-
-So GDB ends up crashing during exit.
-
-What's happening is that when debuginfod is initialised
-debuginfod_begin is called (this is in the debuginfod library), this
-in turn sets up libcurl, which makes use of openssl. Somewhere during
-this setup process an at_exit function is registered to cleanup some
-state.
-
-Back in GDB the debuginfod_client object is managed using this code:
-
- /* Deleter for a debuginfod_client. */
-
- struct debuginfod_client_deleter
- {
- void operator() (debuginfod_client *c)
- {
- debuginfod_end (c);
- }
- };
-
- using debuginfod_client_up
- = std::unique_ptr<debuginfod_client, debuginfod_client_deleter>;
-
-And then a global debuginfod_client_up is created to hold a pointer to
-the debuginfod_client object. As a global this will be cleaned up
-using the standard C++ global object destructor mechanism, which is
-run after the at_exit handlers.
-
-However, it is expected that when debuginfod_end is called the
-debuginfod_client object will still be in a usable state, that is, we
-don't expect the at_exit handlers to have run and started cleaning up
-the library state.
-
-To fix this issue we need to ensure that debuginfod_end is called
-before the at_exit handlers have a chance to run.
-
-This commit removes the debuginfod_client_up type, and instead has GDB
-hold a raw pointer to the debuginfod_client object. We then make use
-of GDB's make_final_cleanup to register a function that will call
-debuginfod_end.
-
-As GDB's final cleanups are called before exit is called, this means
-that debuginfod_end will be called before the at_exit handlers are
-called, and the crash identified above is resolved.
-
-It's not obvious how this issue can easily be tested for. The bug does
-not appear to manifest when using a local debuginfod server, so we'd
-need to setup something more involved. For now I'm proposing this
-patch without any associated tests.
-
-diff --git a/gdb/debuginfod-support.c b/gdb/debuginfod-support.c
---- a/gdb/debuginfod-support.c
-+++ b/gdb/debuginfod-support.c
-@@ -96,20 +96,6 @@ struct user_data
- ui_out::progress_update progress;
- };
-
--/* Deleter for a debuginfod_client. */
--
--struct debuginfod_client_deleter
--{
-- void operator() (debuginfod_client *c)
-- {
-- debuginfod_end (c);
-- }
--};
--
--using debuginfod_client_up
-- = std::unique_ptr<debuginfod_client, debuginfod_client_deleter>;
--
--
- /* Convert SIZE into a unit suitable for use with progress updates.
- SIZE should in given in bytes and will be converted into KB, MB, GB
- or remain unchanged. UNIT will be set to "B", "KB", "MB" or "GB"
-@@ -180,20 +166,45 @@ progressfn (debuginfod_client *c, long cur, long total)
- return 0;
- }
-
-+/* Cleanup ARG, which is a debuginfod_client pointer. */
-+
-+static void
-+cleanup_debuginfod_client (void *arg)
-+{
-+ debuginfod_client *client = static_cast<debuginfod_client *> (arg);
-+ debuginfod_end (client);
-+}
-+
-+/* Return a pointer to the single global debuginfod_client, initialising it
-+ first if needed. */
-+
- static debuginfod_client *
- get_debuginfod_client ()
- {
-- static debuginfod_client_up global_client;
-+ static debuginfod_client *global_client = nullptr;
-
- if (global_client == nullptr)
- {
-- global_client.reset (debuginfod_begin ());
-+ global_client = debuginfod_begin ();
-
- if (global_client != nullptr)
-- debuginfod_set_progressfn (global_client.get (), progressfn);
-+ {
-+ /* It is important that we cleanup the debuginfod_client object
-+ before calling exit. Some of the libraries used by debuginfod
-+ make use of at_exit handlers to perform cleanup.
-+
-+ If we wrapped the debuginfod_client in a unique_ptr and relied
-+ on its destructor to cleanup then this would be run as part of
-+ the global C++ object destructors, which is after the at_exit
-+ handlers, which is too late.
-+
-+ So instead, we make use of GDB's final cleanup mechanism. */
-+ make_final_cleanup (cleanup_debuginfod_client, global_client);
-+ debuginfod_set_progressfn (global_client, progressfn);
-+ }
- }
-
-- return global_client.get ();
-+ return global_client;
- }
-
- /* Check if debuginfod is enabled. If configured to do so, ask the user
diff --git a/gdb-bz2237392-dwarf-obstack-allocation.patch b/gdb-bz2237392-dwarf-obstack-allocation.patch
deleted file mode 100644
index 424cad3..0000000
--- a/gdb-bz2237392-dwarf-obstack-allocation.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Andrew Burgess <aburgess@redhat.com>
-Date: Thu, 14 Sep 2023 13:06:26 +0100
-Subject: gdb-bz2237392-dwarf-obstack-allocation.patch
-
-;; Backport upstream commit 54392c4df604f20 to fix an incorrect
-;; obstack allocation that wold lead to memory corruption.
-
-gdb: fix buffer overflow in DWARF reader
-
-In this commit:
-
- commit 48ac197b0c209ccf1f2de9704eb6cdf7c5c73a8e
- Date: Fri Nov 19 10:12:44 2021 -0700
-
- Handle multiple addresses in call_site_target
-
-a buffer overflow bug was introduced when the following code was
-added:
-
- CORE_ADDR *saved = XOBNEWVAR (&objfile->objfile_obstack, CORE_ADDR,
- addresses.size ());
- std::copy (addresses.begin (), addresses.end (), saved);
-
-The definition of XOBNEWVAR is (from libiberty.h):
-
- #define XOBNEWVAR(O, T, S) ((T *) obstack_alloc ((O), (S)))
-
-So 'saved' is going to point to addresses.size () bytes of memory,
-however, the std::copy will write addresses.size () number of
-CORE_ADDR sized entries to the address pointed to by 'saved', this is
-going to result in memory corruption.
-
-The mistake is that we should have used XOBNEWVEC, which allocates a
-vector of entries, the definition of XOBNEWVEC is:
-
- #define XOBNEWVEC(O, T, N) \
- ((T *) obstack_alloc ((O), sizeof (T) * (N)))
-
-Which means we will have set aside enough space to create a copy of
-the contents of the addresses vector.
-
-I'm not sure how to create a test for this problem, this issue cropped
-up when debugging a particular i686 built binary, which just happened
-to trigger a glibc assertion (likely due to random memory corruption),
-debugging the same binary built for x86-64 appeared to work just fine.
-
-Using valgrind on the failing GDB binary pointed straight to the cause
-of the problem, and with this patch in place there are no longer
-valgrind errors in this area.
-
-If anyone has ideas for a test I'm happy to work on something.
-
-Co-Authored-By: Keith Seitz <keiths@redhat.com>
-Approved-By: Tom Tromey <tom@tromey.com>
-
-diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
---- a/gdb/dwarf2/read.c
-+++ b/gdb/dwarf2/read.c
-@@ -12506,7 +12506,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
- std::vector<CORE_ADDR> addresses;
- dwarf2_ranges_read_low_addrs (ranges_offset, target_cu,
- target_die->tag, addresses);
-- CORE_ADDR *saved = XOBNEWVAR (&objfile->objfile_obstack, CORE_ADDR,
-+ CORE_ADDR *saved = XOBNEWVEC (&objfile->objfile_obstack, CORE_ADDR,
- addresses.size ());
- std::copy (addresses.begin (), addresses.end (), saved);
- call_site->target.set_loc_array (addresses.size (), saved);
diff --git a/gdb-bz2237515-debuginfod-double-free.patch b/gdb-bz2237515-debuginfod-double-free.patch
deleted file mode 100644
index 9d72639..0000000
--- a/gdb-bz2237515-debuginfod-double-free.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Tom Tromey <tromey@adacore.com>
-Date: Tue, 6 Dec 2022 12:07:12 -0700
-Subject: gdb-bz2237515-debuginfod-double-free.patch
-
-;; Backport upstream commit f96328accde1e63 to fix a potential double
-;; free issue in the debuginfod code.
-
-Avoid double-free with debuginfod
-
-PR gdb/29257 points out a possible double free when debuginfod is in
-use. Aside from some ugly warts in the symbol code (an ongoing
-issue), the underlying issue in this particular case is that elfread.c
-seems to assume that symfile_bfd_open will return NULL on error,
-whereas in reality it throws an exception. As this code isn't
-prepared for an exception, bad things result.
-
-This patch fixes the problem by introducing a non-throwing variant of
-symfile_bfd_open and using it in the affected places.
-
-Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29257
-
-diff --git a/gdb/elfread.c b/gdb/elfread.c
---- a/gdb/elfread.c
-+++ b/gdb/elfread.c
-@@ -1222,10 +1222,12 @@ elf_symfile_read_dwarf2 (struct objfile *objfile,
-
- if (!debugfile.empty ())
- {
-- gdb_bfd_ref_ptr debug_bfd (symfile_bfd_open (debugfile.c_str ()));
-+ gdb_bfd_ref_ptr debug_bfd
-+ (symfile_bfd_open_no_error (debugfile.c_str ()));
-
-- symbol_file_add_separate (debug_bfd, debugfile.c_str (),
-- symfile_flags, objfile);
-+ if (debug_bfd != nullptr)
-+ symbol_file_add_separate (debug_bfd, debugfile.c_str (),
-+ symfile_flags, objfile);
- }
- else
- {
-@@ -1245,13 +1247,12 @@ elf_symfile_read_dwarf2 (struct objfile *objfile,
- if (fd.get () >= 0)
- {
- /* File successfully retrieved from server. */
-- gdb_bfd_ref_ptr debug_bfd (symfile_bfd_open (symfile_path.get ()));
-+ gdb_bfd_ref_ptr debug_bfd
-+ (symfile_bfd_open_no_error (symfile_path.get ()));
-
-- if (debug_bfd == nullptr)
-- warning (_("File \"%s\" from debuginfod cannot be opened as bfd"),
-- filename);
-- else if (build_id_verify (debug_bfd.get (), build_id->size,
-- build_id->data))
-+ if (debug_bfd != nullptr
-+ && build_id_verify (debug_bfd.get (), build_id->size,
-+ build_id->data))
- {
- symbol_file_add_separate (debug_bfd, symfile_path.get (),
- symfile_flags, objfile);
-diff --git a/gdb/symfile.c b/gdb/symfile.c
---- a/gdb/symfile.c
-+++ b/gdb/symfile.c
-@@ -1744,6 +1744,23 @@ symfile_bfd_open (const char *name)
- return sym_bfd;
- }
-
-+/* See symfile.h. */
-+
-+gdb_bfd_ref_ptr
-+symfile_bfd_open_no_error (const char *name) noexcept
-+{
-+ try
-+ {
-+ return symfile_bfd_open (name);
-+ }
-+ catch (const gdb_exception_error &err)
-+ {
-+ warning ("%s", err.what ());
-+ }
-+
-+ return nullptr;
-+}
-+
- /* Return the section index for SECTION_NAME on OBJFILE. Return -1 if
- the section was not found. */
-
-diff --git a/gdb/symfile.h b/gdb/symfile.h
---- a/gdb/symfile.h
-+++ b/gdb/symfile.h
-@@ -269,6 +269,11 @@ extern void set_initial_language (void);
-
- extern gdb_bfd_ref_ptr symfile_bfd_open (const char *);
-
-+/* Like symfile_bfd_open, but will not throw an exception on error.
-+ Instead, it issues a warning and returns nullptr. */
-+
-+extern gdb_bfd_ref_ptr symfile_bfd_open_no_error (const char *) noexcept;
-+
- extern int get_section_index (struct objfile *, const char *);
-
- extern int print_symbol_loading_p (int from_tty, int mainline, int full);
diff --git a/gdb-container-rh-pkg.patch b/gdb-container-rh-pkg.patch
index aac8ac8..7107e5d 100644
--- a/gdb-container-rh-pkg.patch
+++ b/gdb-container-rh-pkg.patch
@@ -9,10 +9,10 @@ Subject: gdb-container-rh-pkg.patch
diff --git a/gdb/remote.c b/gdb/remote.c
--- a/gdb/remote.c
+++ b/gdb/remote.c
-@@ -14301,7 +14301,17 @@ remote_target::pid_to_exec_file (int pid)
+@@ -14742,7 +14742,17 @@ remote_target::pid_to_exec_file (int pid)
char *annex = NULL;
- if (packet_support (PACKET_qXfer_exec_file) != PACKET_ENABLE)
+ if (m_features.packet_support (PACKET_qXfer_exec_file) != PACKET_ENABLE)
- return NULL;
+ {
+ warning (_("Remote gdbserver does not support determining executable "
diff --git a/gdb-core-open-vdso-warning.patch b/gdb-core-open-vdso-warning.patch
index c64b4bc..fdd06fb 100644
--- a/gdb-core-open-vdso-warning.patch
+++ b/gdb-core-open-vdso-warning.patch
@@ -19,7 +19,7 @@ Date: Wed Sep 25 11:52:50 2013 +0000
diff --git a/gdb/testsuite/gdb.base/solib-symbol.exp b/gdb/testsuite/gdb.base/solib-symbol.exp
--- a/gdb/testsuite/gdb.base/solib-symbol.exp
+++ b/gdb/testsuite/gdb.base/solib-symbol.exp
-@@ -29,6 +29,7 @@ set testfile "solib-symbol-main"
+@@ -27,6 +27,7 @@ set testfile "solib-symbol-main"
set srcfile ${srcdir}/${subdir}/${testfile}.c
set binfile [standard_output_file ${testfile}]
set bin_flags [list debug shlib=${binfile_lib}]
@@ -27,16 +27,14 @@ diff --git a/gdb/testsuite/gdb.base/solib-symbol.exp b/gdb/testsuite/gdb.base/so
if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib} $lib_flags] != ""
|| [gdb_compile ${srcfile} ${binfile} executable $bin_flags] != "" } {
-@@ -66,8 +67,26 @@ gdb_test "br foo2" \
+@@ -61,4 +62,28 @@ gdb_test "br foo2" \
"Breakpoint.*: foo2. .2 locations..*" \
"foo2 in mdlib"
--gdb_exit
+# Test GDB warns for shared libraris which have not been found.
-
--return 0
++
+gdb_test "info sharedlibrary" "/${libname}.*"
-
++
+clean_restart ${executable}
+gdb_breakpoint "main"
+gdb_run_cmd
@@ -49,10 +47,12 @@ diff --git a/gdb/testsuite/gdb.base/solib-symbol.exp b/gdb/testsuite/gdb.base/so
+ pass $test
+ }
+}
-
++
+clean_restart ${executable}
+gdb_test_no_output "set solib-absolute-prefix /doESnotEXIST"
+gdb_breakpoint "main"
+gdb_run_cmd
+gdb_test "" "warning: Could not load shared library symbols for \[0-9\]+ libraries,.*\r\nBreakpoint \[0-9\]+, main .*" \
+ "warning for missing libraries"
++
+ gdb_exit
diff --git a/gdb-fedora-libncursesw.patch b/gdb-fedora-libncursesw.patch
index 350138c..1bb640d 100644
--- a/gdb-fedora-libncursesw.patch
+++ b/gdb-fedora-libncursesw.patch
@@ -12,7 +12,269 @@ https://bugzilla.redhat.com/show_bug.cgi?id=1270534
diff --git a/gdb/configure b/gdb/configure
--- a/gdb/configure
+++ b/gdb/configure
-@@ -20916,6 +20916,7 @@ if test x"$prefer_curses" = xyes; then
+@@ -780,9 +780,6 @@ ENABLE_BFD_64_BIT_TRUE
+ subdirs
+ RPM_LIBS
+ RPM_CFLAGS
+-PKG_CONFIG_LIBDIR
+-PKG_CONFIG_PATH
+-PKG_CONFIG
+ GDB_DATADIR
+ DEBUGDIR
+ MAKEINFO_EXTRA_FLAGS
+@@ -990,12 +987,12 @@ PKG_CONFIG_PATH
+ PKG_CONFIG_LIBDIR
+ MAKEINFO
+ MAKEINFOFLAGS
++RPM_CFLAGS
++RPM_LIBS
+ AMD_DBGAPI_CFLAGS
+ AMD_DBGAPI_LIBS
+ DEBUGINFOD_CFLAGS
+ DEBUGINFOD_LIBS
+-RPM_CFLAGS
+-RPM_LIBS
+ YACC
+ YFLAGS
+ ZSTD_CFLAGS
+@@ -1684,11 +1681,11 @@ Optional Packages:
+ [--with-auto-load-dir]
+ --without-auto-load-safe-path
+ do not restrict auto-loaded files locations
++ --with-rpm query rpm database for missing debuginfos (yes/no,
++ def. auto=librpm.so)
+ --with-amd-dbgapi support for the amd-dbgapi target (yes / no / auto)
+ --with-debuginfod Enable debuginfo lookups with debuginfod
+ (auto/yes/no)
+- --with-rpm query rpm database for missing debuginfos (yes/no,
+- def. auto=librpm.so)
+ --with-libunwind-ia64 use libunwind frame unwinding for ia64 targets
+ --with-curses use the curses library instead of the termcap
+ library
+@@ -1761,6 +1758,8 @@ Some influential environment variables:
+ MAKEINFO Parent configure detects if it is of sufficient version.
+ MAKEINFOFLAGS
+ Parameters for MAKEINFO.
++ RPM_CFLAGS C compiler flags for RPM, overriding pkg-config
++ RPM_LIBS linker flags for RPM, overriding pkg-config
+ AMD_DBGAPI_CFLAGS
+ C compiler flags for AMD_DBGAPI, overriding pkg-config
+ AMD_DBGAPI_LIBS
+@@ -1769,8 +1768,6 @@ Some influential environment variables:
+ C compiler flags for DEBUGINFOD, overriding pkg-config
+ DEBUGINFOD_LIBS
+ linker flags for DEBUGINFOD, overriding pkg-config
+- RPM_CFLAGS C compiler flags for RPM, overriding pkg-config
+- RPM_LIBS linker flags for RPM, overriding pkg-config
+ YACC The `Yet Another Compiler Compiler' implementation to use.
+ Defaults to the first program found out of: `bison -y', `byacc',
+ `yacc'.
+@@ -11495,7 +11492,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11486 "configure"
++#line 11495 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11601,7 +11598,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11592 "configure"
++#line 11601 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -18102,8 +18099,8 @@ $as_echo_n "checking specific librpm version... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+-as_fn_error "cannot run test program while cross compiling
+-See \`config.log' for more details." "$LINENO" 5; }
++as_fn_error $? "cannot run test program while cross compiling
++See \`config.log' for more details" "$LINENO" 5; }
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+@@ -18275,132 +18272,12 @@ $as_echo "#define HAVE_LIBRPM 1" >>confdefs.h
+ $as_echo "no" >&6; }
+ LIBS="$save_LIBS"
+ if $DLOPEN_REQUIRE; then
+- as_fn_error "Specific name $LIBRPM was requested but it could not be opened." "$LINENO" 5
++ as_fn_error $? "Specific name $LIBRPM was requested but it could not be opened." "$LINENO" 5
+ fi
+
+-
+-
+-
+-
+-
+-
+-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+-$as_echo_n "checking for $ac_word... " >&6; }
+-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+- $as_echo_n "(cached) " >&6
+-else
+- case $PKG_CONFIG in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+- ;;
+- *)
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+- done
+-IFS=$as_save_IFS
+-
+- ;;
+-esac
+-fi
+-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+-if test -n "$PKG_CONFIG"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+-$as_echo "$PKG_CONFIG" >&6; }
+-else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
+-
+-
+-fi
+-if test -z "$ac_cv_path_PKG_CONFIG"; then
+- ac_pt_PKG_CONFIG=$PKG_CONFIG
+- # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+-$as_echo_n "checking for $ac_word... " >&6; }
+-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
+- $as_echo_n "(cached) " >&6
+-else
+- case $ac_pt_PKG_CONFIG in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+- ;;
+- *)
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+- done
+-IFS=$as_save_IFS
+-
+- ;;
+-esac
+-fi
+-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+-if test -n "$ac_pt_PKG_CONFIG"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+-else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
+-
+- if test "x$ac_pt_PKG_CONFIG" = x; then
+- PKG_CONFIG=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- PKG_CONFIG=$ac_pt_PKG_CONFIG
+- fi
+-else
+- PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+-fi
+-
+-fi
+-if test -n "$PKG_CONFIG"; then
+- _pkg_min_version=0.9.0
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+-$as_echo "yes" >&6; }
+- else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+- PKG_CONFIG=""
+- fi
+-fi
+-
+ pkg_failed=no
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RPM" >&5
+-$as_echo_n "checking for RPM... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rpm" >&5
++$as_echo_n "checking for rpm... " >&6; }
+
+ if test -n "$RPM_CFLAGS"; then
+ pkg_cv_RPM_CFLAGS="$RPM_CFLAGS"
+@@ -18437,6 +18314,30 @@ fi
+ pkg_failed=untried
+ fi
+
++if test $pkg_failed = no; then
++ pkg_save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS $pkg_cv_RPM_LIBS"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"; then :
++
++else
++ pkg_failed=yes
++fi
++rm -f core conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++ LDFLAGS=$pkg_save_LDFLAGS
++fi
++
+
+
+ if test $pkg_failed = yes; then
+@@ -18531,7 +18432,7 @@ $as_echo "#define HAVE_LIBRPM 1" >>confdefs.h
+ LIBS="$LIBS $RPM_LIBS"
+ else
+ if $RPM_REQUIRE; then
+- as_fn_error "$RPM_PKG_ERRORS" "$LINENO" 5
++ as_fn_error $? "$RPM_PKG_ERRORS" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $RPM_PKG_ERRORS" >&5
+ $as_echo "$as_me: WARNING: $RPM_PKG_ERRORS" >&2;}
+@@ -21164,6 +21065,7 @@ if test x"$prefer_curses" = xyes; then
# search /usr/local/include, if ncurses is installed in /usr/local. A
# default installation of ncurses on alpha*-dec-osf* will lead to such
# a situation.
@@ -20,7 +282,7 @@ diff --git a/gdb/configure b/gdb/configure
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing waddstr" >&5
$as_echo_n "checking for library containing waddstr... " >&6; }
if ${ac_cv_search_waddstr+:} false; then :
-@@ -20940,7 +20941,7 @@ return waddstr ();
+@@ -21188,7 +21090,7 @@ return waddstr ();
return 0;
}
_ACEOF
@@ -29,7 +291,7 @@ diff --git a/gdb/configure b/gdb/configure
if test -z "$ac_lib"; then
ac_res="none required"
else
-@@ -21014,6 +21015,7 @@ case $host_os in
+@@ -21260,6 +21162,7 @@ case $host_os in
esac
# These are the libraries checked by Readline.
@@ -37,7 +299,7 @@ diff --git a/gdb/configure b/gdb/configure
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tgetent" >&5
$as_echo_n "checking for library containing tgetent... " >&6; }
if ${ac_cv_search_tgetent+:} false; then :
-@@ -21038,7 +21040,7 @@ return tgetent ();
+@@ -21284,7 +21187,7 @@ return tgetent ();
return 0;
}
_ACEOF
@@ -49,17 +311,17 @@ diff --git a/gdb/configure b/gdb/configure
diff --git a/gdb/configure.ac b/gdb/configure.ac
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
-@@ -705,7 +705,8 @@ if test x"$prefer_curses" = xyes; then
+@@ -749,7 +749,8 @@ if test x"$prefer_curses" = xyes; then
# search /usr/local/include, if ncurses is installed in /usr/local. A
# default installation of ncurses on alpha*-dec-osf* will lead to such
# a situation.
-- AC_SEARCH_LIBS(waddstr, [ncursesw ncurses cursesX curses])
+- AC_SEARCH_LIBS(waddstr, [ncursesw ncurses cursesX curses],
+ # Fedora: Force libncursesw over libncurses to match the includes.
-+ AC_SEARCH_LIBS(waddstr, [ncursesw])
-
- if test "$ac_cv_search_waddstr" != no; then
- curses_found=yes
-@@ -747,7 +748,8 @@ case $host_os in
++ AC_SEARCH_LIBS(waddstr, [ncursesw],
+ [curses_found=yes
+ AC_DEFINE([HAVE_LIBCURSES], [1],
+ [Define to 1 if curses is enabled.])
+@@ -789,7 +790,8 @@ case $host_os in
esac
# These are the libraries checked by Readline.
diff --git a/gdb-linux_perf-bundle.patch b/gdb-linux_perf-bundle.patch
index 4c7e58f..bb6fb6a 100644
--- a/gdb-linux_perf-bundle.patch
+++ b/gdb-linux_perf-bundle.patch
@@ -9,9 +9,9 @@ Subject: gdb-linux_perf-bundle.patch
diff --git a/gdb/gdb.c b/gdb/gdb.c
--- a/gdb/gdb.c
+++ b/gdb/gdb.c
-@@ -20,11 +20,19 @@
- #include "main.h"
+@@ -21,6 +21,10 @@
#include "interps.h"
+ #include "run-on-main-thread.h"
+#ifdef PERF_ATTR_SIZE_VER5_BUNDLE
+extern "C" void __libipt_init(void);
@@ -20,6 +20,8 @@ diff --git a/gdb/gdb.c b/gdb/gdb.c
int
main (int argc, char **argv)
{
+@@ -32,6 +36,10 @@ main (int argc, char **argv)
+
struct captured_main_args args;
+#ifdef PERF_ATTR_SIZE_VER5_BUNDLE
@@ -32,7 +34,7 @@ diff --git a/gdb/gdb.c b/gdb/gdb.c
diff --git a/gdb/nat/linux-btrace.h b/gdb/nat/linux-btrace.h
--- a/gdb/nat/linux-btrace.h
+++ b/gdb/nat/linux-btrace.h
-@@ -27,6 +27,177 @@
+@@ -28,6 +28,177 @@
# include <linux/perf_event.h>
#endif
@@ -213,7 +215,7 @@ diff --git a/gdb/nat/linux-btrace.h b/gdb/nat/linux-btrace.h
diff --git a/gdbsupport/common.m4 b/gdbsupport/common.m4
--- a/gdbsupport/common.m4
+++ b/gdbsupport/common.m4
-@@ -166,7 +166,7 @@ AC_DEFUN([GDB_AC_COMMON], [
+@@ -168,7 +168,7 @@ AC_DEFUN([GDB_AC_COMMON], [
AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
#include <linux/perf_event.h>
#ifndef PERF_ATTR_SIZE_VER5
diff --git a/gdb-rhbz-2232086-cpp-ify-mapped-symtab.patch b/gdb-rhbz-2232086-cpp-ify-mapped-symtab.patch
index 4accca6..1d6e1fb 100644
--- a/gdb-rhbz-2232086-cpp-ify-mapped-symtab.patch
+++ b/gdb-rhbz-2232086-cpp-ify-mapped-symtab.patch
@@ -206,7 +206,7 @@ diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
/* But it should still be a new element in the hash table. */
gdb_assert (slot->name == nullptr);
-@@ -388,7 +437,7 @@ write_hash_table (mapped_symtab *symtab, data_buf &output, data_buf &cpool)
+@@ -387,7 +436,7 @@ write_hash_table (mapped_symtab *symtab, data_buf &output, data_buf &cpool)
/* We add all the index vectors to the constant pool first, to
ensure alignment is ok. */
@@ -215,7 +215,7 @@ diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
{
if (entry.name == NULL)
continue;
-@@ -417,7 +466,7 @@ write_hash_table (mapped_symtab *symtab, data_buf &output, data_buf &cpool)
+@@ -416,7 +465,7 @@ write_hash_table (mapped_symtab *symtab, data_buf &output, data_buf &cpool)
/* Now write out the hash table. */
std::unordered_map<c_str_view, offset_type, c_str_view_hasher> str_table;
@@ -224,7 +224,7 @@ diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
{
offset_type str_off, vec_off;
-@@ -1149,7 +1198,7 @@ write_cooked_index (cooked_index_vector *table,
+@@ -1151,7 +1200,7 @@ write_cooked_index (cooked_index *table,
const auto it = cu_index_htab.find (entry->per_cu);
gdb_assert (it != cu_index_htab.cend ());
@@ -233,16 +233,16 @@ diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
if (entry->per_cu->lang () == language_ada)
{
-@@ -1169,7 +1218,7 @@ write_cooked_index (cooked_index_vector *table,
- gdb, it has to use the encoded name, with any
- suffixes stripped. */
- std::string encoded = ada_encode (name, false);
-- name = obstack_strdup (&symtab->m_string_obstack,
-+ name = obstack_strdup (symtab->obstack (),
- encoded.c_str ());
- }
+@@ -1159,7 +1208,7 @@ write_cooked_index (cooked_index *table,
+ gdb, it has to use the encoded name, with any
+ suffixes stripped. */
+ std::string encoded = ada_encode (name, false);
+- name = obstack_strdup (&symtab->m_string_obstack,
++ name = obstack_strdup (symtab->obstack (),
+ encoded.c_str ());
}
-@@ -1202,8 +1251,8 @@ write_cooked_index (cooked_index_vector *table,
+ else if (entry->per_cu->lang () == language_cplus
+@@ -1191,8 +1240,8 @@ write_cooked_index (cooked_index *table,
else
kind = GDB_INDEX_SYMBOL_KIND_TYPE;
@@ -253,7 +253,7 @@ diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
}
}
-@@ -1281,8 +1330,6 @@ write_gdbindex (dwarf2_per_objfile *per_objfile,
+@@ -1267,8 +1316,6 @@ write_gdbindex (dwarf2_per_bfd *per_bfd, cooked_index *table,
symtab.minimize ();
data_buf symtab_vec, constant_pool;
diff --git a/gdb-rhbz-2232086-generate-dwarf-5-index-consistently.patch b/gdb-rhbz-2232086-generate-dwarf-5-index-consistently.patch
index 6b21c14..e9b0b9e 100644
--- a/gdb-rhbz-2232086-generate-dwarf-5-index-consistently.patch
+++ b/gdb-rhbz-2232086-generate-dwarf-5-index-consistently.patch
@@ -35,7 +35,7 @@ Approved-By: Tom Tromey <tom@tromey.com>
diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
--- a/gdb/dwarf2/index-write.c
+++ b/gdb/dwarf2/index-write.c
-@@ -453,6 +453,11 @@ class c_str_view
+@@ -452,6 +452,11 @@ class c_str_view
return strcmp (m_cstr, other.m_cstr) == 0;
}
@@ -47,7 +47,7 @@ diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
/* Return the underlying C string. Note, the returned string is
only a reference with lifetime of this object. */
const char *c_str () const
-@@ -770,10 +775,18 @@ class debug_names
+@@ -771,10 +776,18 @@ class debug_names
}
for (size_t bucket_ix = 0; bucket_ix < bucket_hash.size (); ++bucket_ix)
{
diff --git a/gdb-rhbz-2232086-generate-gdb-index-consistently.patch b/gdb-rhbz-2232086-generate-gdb-index-consistently.patch
index d0e5c95..d6917ec 100644
--- a/gdb-rhbz-2232086-generate-gdb-index-consistently.patch
+++ b/gdb-rhbz-2232086-generate-gdb-index-consistently.patch
@@ -138,7 +138,7 @@ diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
/* See class definition. */
void
-@@ -1325,6 +1391,9 @@ write_gdbindex (dwarf2_per_objfile *per_objfile,
+@@ -1311,6 +1377,9 @@ write_gdbindex (dwarf2_per_bfd *per_bfd, cooked_index *table,
for (auto map : table->get_addrmaps ())
write_address_map (map, addr_vec, cu_index_htab);
@@ -206,8 +206,8 @@ diff --git a/gdb/testsuite/gdb.gdb/index-file.exp b/gdb/testsuite/gdb.gdb/index-
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
-@@ -9274,6 +9274,21 @@ proc gdb_step_until { regexp {test_name ""} {max_steps 10} } {
- }
+@@ -10033,6 +10033,21 @@ proc is_target_non_stop { {testname ""} } {
+ return $is_non_stop
}
+# Return the number of worker threads that GDB is currently using.
diff --git a/gdb-rhbz1773651-gdb-index-internal-error.patch b/gdb-rhbz1773651-gdb-index-internal-error.patch
deleted file mode 100644
index 04cfe6d..0000000
--- a/gdb-rhbz1773651-gdb-index-internal-error.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Kevin Buettner <kevinb@redhat.com>
-Date: Mon, 2 Oct 2023 15:05:23 -0700
-Subject: gdb-rhbz1773651-gdb-index-internal-error.patch
-
-;; Backport upstream patch which prevents internal error when
-;; generating a gdb-index file (RH BZ 1773651).
-
-Throw error when creating an overly large gdb-index file
-
-The header in a .gdb_index section uses 32-bit unsigned offsets to
-refer to other areas of the section. Thus, there is a size limit of
-2^32-1 which is currently unaccounted for by GDB's code for outputting
-these sections.
-
-At the moment, when GDB creates an overly large section, it will exit
-abnormally due to an internal error, which is caused by a failed
-assert in assert_file_size, which in turn is called from
-write_gdbindex_1, both of which are in gdb/dwarf2/index-write.c.
-
-This is what happens when that assert fails:
-
-$ gdb -q -nx -iex 'set auto-load no' -iex 'set debuginfod enabled off' -ex file ./libgraph_tool_inference.so -ex "save gdb-index `pwd`/"
-Reading symbols from ./libgraph_tool_inference.so...
-No executable file now.
-Discard symbol table from `libgraph_tool_inference.so'? (y or n) n
-Not confirmed.
-../../gdb/dwarf2/index-write.c:1069: internal-error: assert_file_size: Assertion `file_size == expected_size' failed.
-A problem internal to GDB has been detected,
-further debugging may prove unreliable.
------ Backtrace -----
-0x55fddb4d78b0 gdb_internal_backtrace_1
- ../../gdb/bt-utils.c:122
-0x55fddb4d78b0 _Z22gdb_internal_backtracev
- ../../gdb/bt-utils.c:168
-0x55fddb98b5d4 internal_vproblem
- ../../gdb/utils.c:396
-0x55fddb98b8de _Z15internal_verrorPKciS0_P13__va_list_tag
- ../../gdb/utils.c:476
-0x55fddbb71654 _Z18internal_error_locPKciS0_z
- ../../gdbsupport/errors.cc:58
-0x55fddb5a0f23 assert_file_size
- ../../gdb/dwarf2/index-write.c:1069
-0x55fddb5a1ee0 assert_file_size
- /usr/include/c++/13/bits/stl_iterator.h:1158
-0x55fddb5a1ee0 write_gdbindex_1
- ../../gdb/dwarf2/index-write.c:1119
-0x55fddb5a51be write_gdbindex
- ../../gdb/dwarf2/index-write.c:1273
-[...]
----------------------
-../../gdb/dwarf2/index-write.c:1069: internal-error: assert_file_size: Assertion `file_size == expected_size' failed.
-
-This problem was encountered while building the python-graph-tool
-package on Fedora. The Fedora bugzilla bug can be found here:
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1773651
-
-This commit prevents the internal error from occurring by calling error()
-when the file size exceeds 2^32-1.
-
-Using a gdb built with this commit, I now see this behavior instead:
-
-$ gdb -q -nx -iex 'set auto-load no' -iex 'set debuginfod enabled off' -ex file ./libgraph_tool_inference.so -ex "save gdb-index `pwd`/"
-Reading symbols from ./libgraph_tool_inference.so...
-No executable file now.
-Discard symbol table from `/mesquite2/fedora-bugs/1773651/libgraph_tool_inference.so'? (y or n) n
-Not confirmed.
-Error while writing index for `/mesquite2/fedora-bugs/1773651/libgraph_tool_inference.so': gdb-index maximum file size of 4294967295 exceeded
-(gdb)
-
-I wish I could provide a test case, but due to the sizes of both the
-input and output files, I think that testing resources would be
-strained or exceeded in many environments.
-
-My testing on Fedora 38 shows no regressions.
-
-Approved-by: Tom Tromey <tom@tromey.com>
-
-diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
---- a/gdb/dwarf2/index-write.c
-+++ b/gdb/dwarf2/index-write.c
-@@ -1082,7 +1082,7 @@ write_gdbindex_1 (FILE *out_file,
- {
- data_buf contents;
- const offset_type size_of_header = 6 * sizeof (offset_type);
-- offset_type total_len = size_of_header;
-+ size_t total_len = size_of_header;
-
- /* The version number. */
- contents.append_offset (8);
-@@ -1109,6 +1109,13 @@ write_gdbindex_1 (FILE *out_file,
-
- gdb_assert (contents.size () == size_of_header);
-
-+ /* The maximum size of an index file is limited by the maximum value
-+ capable of being represented by 'offset_type'. Throw an error if
-+ that length has been exceeded. */
-+ size_t max_size = ~(offset_type) 0;
-+ if (total_len > max_size)
-+ error (_("gdb-index maximum file size of %zu exceeded"), max_size);
-+
- contents.file_write (out_file);
- cu_list.file_write (out_file);
- types_cu_list.file_write (out_file);
diff --git a/gdb-rhbz2160211-excessive-core-file-warnings.patch b/gdb-rhbz2160211-excessive-core-file-warnings.patch
deleted file mode 100644
index a790054..0000000
--- a/gdb-rhbz2160211-excessive-core-file-warnings.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Kevin Buettner <kevinb@redhat.com>
-Date: Thu, 29 Jun 2023 18:20:30 -0700
-Subject: gdb-rhbz2160211-excessive-core-file-warnings.patch
-
-;; Backport two commits, 0ad504dd464 and ea70f941f9b, from Lancelot SIX
-;; which prevent repeated warnings from being printed while loading a
-;; core file. (RH BZ 2160211)
-
-gdb/corelow.c: avoid repeated warnings in build_file_mappings
-
-When GDB opens a coredump it tries to locate and then open all files
-which were mapped in the process.
-
-If a file is found but cannot be opened with BFD (bfd_open /
-bfd_check_format fails), then a warning is printed to the user. If the
-same file was mapped multiple times in the process's address space, the
-warning is printed once for each time the file was mapped. I find this
-un-necessarily noisy.
-
-This patch makes it so the warning message is printed only once per
-file.
-
-There was a comment in the code assuming that if the file was found on
-the system, opening it (bfd_open + bfd_check_format) should always
-succeed. A recent change in BFD (014a602b86f "Don't optimise bfd_seek
-to same position") showed that this assumption is not valid. For
-example, it is possible to have a core dump of a process which had
-mmaped an IO page from a DRI render node (/dev/dri/runderD$NUM). In
-such case the core dump does contain the information that portions of
-this special file were mapped in the host process, but trying to seek to
-position 0 will fail, making bfd_check_format fail. This patch removes
-this comment.
-
-Reviewed-By: John Baldwin <jhb@FreeBSD.org>
-Approved-By: Andrew Burgess <aburgess@redhat.com>
-
-gdb/corelow.c: do not try to reopen a file if open failed once
-
-In the current implementation, core_target::build_file_mappings will try
-to locate and open files which were mapped in the process for which the
-core dump was produced. If the file cannot be found or cannot be
-opened, GDB will re-try to open it once for each time it was mapped in
-the process's address space.
-
-This patch makes it so GDB recognizes that it has already failed to open
-a given file once and does not re-try the process for each mapping.
-
-Reviewed-By: John Baldwin <jhb@FreeBSD.org>
-Approved-By: Andrew Burgess <aburgess@redhat.com>
-
-diff --git a/gdb/corelow.c b/gdb/corelow.c
---- a/gdb/corelow.c
-+++ b/gdb/corelow.c
-@@ -237,6 +237,16 @@ core_target::build_file_mappings ()
- weed out non-file-backed mappings. */
- gdb_assert (filename != nullptr);
-
-+ if (unavailable_paths.find (filename) != unavailable_paths.end ())
-+ {
-+ /* We have already seen some mapping for FILENAME but failed to
-+ find/open the file. There is no point in trying the same
-+ thing again so just record that the range [start, end) is
-+ unavailable. */
-+ m_core_unavailable_mappings.emplace_back (start, end - start);
-+ return;
-+ }
-+
- struct bfd *bfd = bfd_map[filename];
- if (bfd == nullptr)
- {
-@@ -254,11 +264,10 @@ core_target::build_file_mappings ()
- if (expanded_fname == nullptr)
- {
- m_core_unavailable_mappings.emplace_back (start, end - start);
-- /* Print just one warning per path. */
-- if (unavailable_paths.insert (filename).second)
-- warning (_("Can't open file %s during file-backed mapping "
-- "note processing"),
-- filename);
-+ unavailable_paths.insert (filename);
-+ warning (_("Can't open file %s during file-backed mapping "
-+ "note processing"),
-+ filename);
- return;
- }
-
-@@ -268,18 +277,11 @@ core_target::build_file_mappings ()
- if (bfd == nullptr || !bfd_check_format (bfd, bfd_object))
- {
- m_core_unavailable_mappings.emplace_back (start, end - start);
-- /* If we get here, there's a good chance that it's due to
-- an internal error. We issue a warning instead of an
-- internal error because of the possibility that the
-- file was removed in between checking for its
-- existence during the expansion in exec_file_find()
-- and the calls to bfd_openr() / bfd_check_format().
-- Output both the path from the core file note along
-- with its expansion to make debugging this problem
-- easier. */
-+ unavailable_paths.insert (filename);
- warning (_("Can't open file %s which was expanded to %s "
- "during file-backed mapping note processing"),
- filename, expanded_fname.get ());
-+
- if (bfd != nullptr)
- bfd_close (bfd);
- return;
diff --git a/gdb-rhbz2192105-ftbs-dangling-pointer b/gdb-rhbz2192105-ftbs-dangling-pointer
deleted file mode 100644
index 26ced86..0000000
--- a/gdb-rhbz2192105-ftbs-dangling-pointer
+++ /dev/null
@@ -1,107 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Kevin Buettner <kevinb@redhat.com>
-Date: Wed, 3 May 2023 11:28:24 -0700
-Subject: gdb-rhbz2192105-ftbs-dangling-pointer
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-;; Backport upstream patch fixing a "dangling pointer" build problem
-;; first seen when building with GCC 13.1.1 20230426 (Red Hat ;; 13.1.1-1).
-
-Pass const frame_info_ptr reference for skip_[language_]trampoline
-
-g++ 13.1.1 produces a -Werror=dangling-pointer=
-
-In file included from ../../binutils-gdb/gdb/frame.h:75,
- from ../../binutils-gdb/gdb/symtab.h:40,
- from ../../binutils-gdb/gdb/language.c:33:
-In member function ‘void intrusive_list<T, AsNode>::push_empty(T&) [with T = frame_info_ptr; AsNode = intrusive_base_node<frame_info_ptr>]’,
- inlined from ‘void intrusive_list<T, AsNode>::push_back(reference) [with T = frame_info_ptr; AsNode = intrusive_base_node<frame_info_ptr>]’ at gdbsupport/intrusive_list.h:332:24,
- inlined from ‘frame_info_ptr::frame_info_ptr(const frame_info_ptr&)’ at gdb/frame.h:241:26,
- inlined from ‘CORE_ADDR skip_language_trampoline(frame_info_ptr, CORE_ADDR)’ at gdb/language.c:530:49:
-gdbsupport/intrusive_list.h:415:12: error: storing the address of local variable ‘<anonymous>’ in ‘frame_info_ptr::frame_list.intrusive_list<frame_info_ptr>::m_back’ [-Werror=dangling-pointer=]
- 415 | m_back = &elem;
- | ~~~~~~~^~~~~~~
-gdb/language.c: In function ‘CORE_ADDR skip_language_trampoline(frame_info_ptr, CORE_ADDR)’:
-gdb/language.c:530:49: note: ‘<anonymous>’ declared here
- 530 | CORE_ADDR real_pc = lang->skip_trampoline (frame, pc);
- | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
-gdb/frame.h:359:41: note: ‘frame_info_ptr::frame_list’ declared here
- 359 | static intrusive_list<frame_info_ptr> frame_list;
- | ^~~~~~~~~~
-
-Each new frame_info_ptr is being pushed on a static frame list and g++
-cannot see why that is safe in case the frame_info_ptr is created and
-destroyed immediately when passed as value.
-
-It isn't clear why only in this one place g++ sees the issue (probably
-because it can inline enough code in this specific case).
-
-Since passing the frame_info_ptr as const reference is cheaper, use
-that as workaround for this warning.
-
-PR build/30413
-Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30413
-
-Tested-by: Kevin Buettner <kevinb@redhat.com>
-Reviewed-by: Kevin Buettner <kevinb@redhat.com>
-Reviewed-by: Tom Tromey <tom@tromey.com>
-
-diff --git a/gdb/c-lang.c b/gdb/c-lang.c
---- a/gdb/c-lang.c
-+++ b/gdb/c-lang.c
-@@ -1003,7 +1003,7 @@ class cplus_language : public language_defn
-
- /* See language.h. */
-
-- CORE_ADDR skip_trampoline (frame_info_ptr fi,
-+ CORE_ADDR skip_trampoline (const frame_info_ptr &fi,
- CORE_ADDR pc) const override
- {
- return cplus_skip_trampoline (fi, pc);
-diff --git a/gdb/language.c b/gdb/language.c
---- a/gdb/language.c
-+++ b/gdb/language.c
-@@ -528,7 +528,7 @@ add_set_language_command ()
- Return the result from the first that returns non-zero, or 0 if all
- `fail'. */
- CORE_ADDR
--skip_language_trampoline (frame_info_ptr frame, CORE_ADDR pc)
-+skip_language_trampoline (const frame_info_ptr &frame, CORE_ADDR pc)
- {
- for (const auto &lang : language_defn::languages)
- {
-diff --git a/gdb/language.h b/gdb/language.h
---- a/gdb/language.h
-+++ b/gdb/language.h
-@@ -471,7 +471,7 @@ struct language_defn
- If that PC falls in a trampoline belonging to this language, return
- the address of the first pc in the real function, or 0 if it isn't a
- language tramp for this language. */
-- virtual CORE_ADDR skip_trampoline (frame_info_ptr fi, CORE_ADDR pc) const
-+ virtual CORE_ADDR skip_trampoline (const frame_info_ptr &fi, CORE_ADDR pc) const
- {
- return (CORE_ADDR) 0;
- }
-@@ -789,7 +789,7 @@ extern const char *language_str (enum language);
-
- /* Check for a language-specific trampoline. */
-
--extern CORE_ADDR skip_language_trampoline (frame_info_ptr, CORE_ADDR pc);
-+extern CORE_ADDR skip_language_trampoline (const frame_info_ptr &, CORE_ADDR pc);
-
- /* Return demangled language symbol, or NULL. */
- extern gdb::unique_xmalloc_ptr<char> language_demangle
-diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c
---- a/gdb/objc-lang.c
-+++ b/gdb/objc-lang.c
-@@ -282,7 +282,7 @@ class objc_language : public language_defn
-
- /* See language.h. */
-
-- CORE_ADDR skip_trampoline (frame_info_ptr frame,
-+ CORE_ADDR skip_trampoline (const frame_info_ptr &frame,
- CORE_ADDR stop_pc) const override
- {
- struct gdbarch *gdbarch = get_frame_arch (frame);
diff --git a/gdb-rhbz2233961-CVE-2022-4806.patch b/gdb-rhbz2233961-CVE-2022-4806.patch
deleted file mode 100644
index 633bd32..0000000
--- a/gdb-rhbz2233961-CVE-2022-4806.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Alexandra=20H=C3=A1jkov=C3=A1?= <ahajkova@redhat.com>
-Date: Sun, 17 Sep 2023 13:36:13 +0200
-Subject: gdb-rhbz2233961-CVE-2022-4806.patch
-
-;; Backport PR29922, SHT_NOBITS section
-;; avoids section size sanity check.
-
-PR29922, SHT_NOBITS section avoids section size sanity check
-
- PR 29922
- * dwarf2.c (find_debug_info): Ignore sections without
- SEC_HAS_CONTENTS.
-
-diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
---- a/bfd/dwarf2.c
-+++ b/bfd/dwarf2.c
-@@ -4831,16 +4831,19 @@ find_debug_info (bfd *abfd, const struct dwarf_debug_section *debug_sections,
- {
- look = debug_sections[debug_info].uncompressed_name;
- msec = bfd_get_section_by_name (abfd, look);
-- if (msec != NULL)
-+ /* Testing SEC_HAS_CONTENTS is an anti-fuzzer measure. Of
-+ course debug sections always have contents. */
-+ if (msec != NULL && (msec->flags & SEC_HAS_CONTENTS) != 0)
- return msec;
-
- look = debug_sections[debug_info].compressed_name;
- msec = bfd_get_section_by_name (abfd, look);
-- if (msec != NULL)
-+ if (msec != NULL && (msec->flags & SEC_HAS_CONTENTS) != 0)
- return msec;
-
- for (msec = abfd->sections; msec != NULL; msec = msec->next)
-- if (startswith (msec->name, GNU_LINKONCE_INFO))
-+ if ((msec->flags & SEC_HAS_CONTENTS) != 0
-+ && startswith (msec->name, GNU_LINKONCE_INFO))
- return msec;
-
- return NULL;
-@@ -4848,6 +4851,9 @@ find_debug_info (bfd *abfd, const struct dwarf_debug_section *debug_sections,
-
- for (msec = after_sec->next; msec != NULL; msec = msec->next)
- {
-+ if ((msec->flags & SEC_HAS_CONTENTS) == 0)
-+ continue;
-+
- look = debug_sections[debug_info].uncompressed_name;
- if (strcmp (msec->name, look) == 0)
- return msec;
diff --git a/gdb-rhbz2233965-memory-leak.patch b/gdb-rhbz2233965-memory-leak.patch
deleted file mode 100644
index 004ba3b..0000000
--- a/gdb-rhbz2233965-memory-leak.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Alexandra=20H=C3=A1jkov=C3=A1?= <ahajkova@redhat.com>
-Date: Sun, 1 Oct 2023 10:36:06 +0200
-Subject: gdb-rhbz2233965-memory-leak.patch
-
-;; Backport PR29925, Memory leak in find_abstract_instance
-
-PR29925, Memory leak in find_abstract_instance
-
-The testcase in the PR had a variable with both DW_AT_decl_file and
-DW_AT_specification, where the DW_AT_specification also specified
-DW_AT_decl_file. This leads to a memory leak as the file name is
-malloced and duplicates are not expected.
-
-I've also changed find_abstract_instance to not use a temp for "name",
-because that can result in a change in behaviour from the usual last
-of duplicate attributes wins.
-
- PR 29925
- * dwarf2.c (find_abstract_instance): Delete "name" variable.
- Free *filename_ptr before assigning new file name.
- (scan_unit_for_symbols): Similarly free func->file and
- var->file before assigning.
-
-diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
---- a/bfd/dwarf2.c
-+++ b/bfd/dwarf2.c
-@@ -3441,7 +3441,6 @@ find_abstract_instance (struct comp_unit *unit,
- struct abbrev_info *abbrev;
- uint64_t die_ref = attr_ptr->u.val;
- struct attribute attr;
-- const char *name = NULL;
-
- if (recur_count == 100)
- {
-@@ -3602,9 +3601,9 @@ find_abstract_instance (struct comp_unit *unit,
- case DW_AT_name:
- /* Prefer DW_AT_MIPS_linkage_name or DW_AT_linkage_name
- over DW_AT_name. */
-- if (name == NULL && is_str_form (&attr))
-+ if (*pname == NULL && is_str_form (&attr))
- {
-- name = attr.u.str;
-+ *pname = attr.u.str;
- if (mangle_style (unit->lang) == 0)
- *is_linkage = true;
- }
-@@ -3612,7 +3611,7 @@ find_abstract_instance (struct comp_unit *unit,
- case DW_AT_specification:
- if (is_int_form (&attr)
- && !find_abstract_instance (unit, &attr, recur_count + 1,
-- &name, is_linkage,
-+ pname, is_linkage,
- filename_ptr, linenumber_ptr))
- return false;
- break;
-@@ -3622,7 +3621,7 @@ find_abstract_instance (struct comp_unit *unit,
- non-string forms into these attributes. */
- if (is_str_form (&attr))
- {
-- name = attr.u.str;
-+ *pname = attr.u.str;
- *is_linkage = true;
- }
- break;
-@@ -3630,8 +3629,11 @@ find_abstract_instance (struct comp_unit *unit,
- if (!comp_unit_maybe_decode_line_info (unit))
- return false;
- if (is_int_form (&attr))
-- *filename_ptr = concat_filename (unit->line_table,
-- attr.u.val);
-+ {
-+ free (*filename_ptr);
-+ *filename_ptr = concat_filename (unit->line_table,
-+ attr.u.val);
-+ }
- break;
- case DW_AT_decl_line:
- if (is_int_form (&attr))
-@@ -3643,7 +3645,6 @@ find_abstract_instance (struct comp_unit *unit,
- }
- }
- }
-- *pname = name;
- return true;
- }
-
-@@ -4139,8 +4140,11 @@ scan_unit_for_symbols (struct comp_unit *unit)
-
- case DW_AT_decl_file:
- if (is_int_form (&attr))
-- func->file = concat_filename (unit->line_table,
-- attr.u.val);
-+ {
-+ free (func->file);
-+ func->file = concat_filename (unit->line_table,
-+ attr.u.val);
-+ }
- break;
-
- case DW_AT_decl_line:
-@@ -4182,8 +4186,11 @@ scan_unit_for_symbols (struct comp_unit *unit)
-
- case DW_AT_decl_file:
- if (is_int_form (&attr))
-- var->file = concat_filename (unit->line_table,
-- attr.u.val);
-+ {
-+ free (var->file);
-+ var->file = concat_filename (unit->line_table,
-+ attr.u.val);
-+ }
- break;
-
- case DW_AT_decl_line:
diff --git a/gdb.spec b/gdb.spec
index 3dc5633..45e3ab6 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -53,11 +53,11 @@ Name: %{?scl_prefix}gdb
# See timestamp of source gnulib installed into gnulib/ .
%global snapgnulib 20220501
%global tarname gdb-%{version}
-Version: 13.2
+Version: 14.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: 12%{?dist}
+Release: 1%{?dist}
License: GPL-3.0-or-later AND BSD-3-clause AND FSFAP AND LGPL-2.1-or-later AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LicenseRef-Fedora-Public-Domain AND GFDL-1.3-or-later AND LGPL-2.0-or-later WITH GCC-exception-2.0 AND GPL-3.0-or-later WITH GCC-exception-3.1 AND GPL-2.0-or-later WITH GNU-compiler-exception
# Do not provide URL for snapshots as the file lasts there only for 2 days.
@@ -639,9 +639,7 @@ COMMON_GDB_CONFIGURE_FLAGS="\
--without-mmap \
%endif
--enable-64-bit-bfd \
-%if 0%{!?rhel:1} || 0%{?rhel} > 6
- --with-mpfr \
-%else
+%if 0%{?rhel:1} && 0%{?rhel} <= 6
--without-mpfr \
%endif
--with-system-zlib \
@@ -1252,6 +1250,33 @@ fi
%endif
%changelog
+* Fri Dec 8 2023 Kevin Buettner <kevinb@redhat.com> - 14.1-1
+- Rebase to FSF GDB 14.1.
+- Update local patches:
+ gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
+ gdb-6.6-buildid-locate-rpm.patch
+ gdb-6.6-buildid-locate.patch
+ gdb-container-rh-pkg.patch
+ gdb-core-open-vdso-warning.patch
+ gdb-fedora-libncursesw.patch
+ gdb-linux_perf-bundle.patch
+- Update backported patches which didn't make it into 14.1:
+ gdb-rhbz-2232086-cpp-ify-mapped-symtab.patch
+ gdb-rhbz-2232086-generate-gdb-index-consistently.patch
+- Drop upstreamed local patches:
+ gdb-6.5-sharedlibrary-path.patch
+- Drop gdb-13.2 backports (which are now in gdb-14.1):
+ gdb-binutils29988-read_indexed_address.patch
+ gdb-bz2196395-debuginfod-legacy-openssl-crash.patch
+ gdb-bz2237392-dwarf-obstack-allocation.patch
+ gdb-bz2237515-debuginfod-double-free.patch
+ gdb-rhbz2192105-ftbs-dangling-pointer
+ gdb-rhbz2233961-CVE-2022-4806.patch
+ gdb-rhbz2233965-memory-leak.patch
+- Adjust gdb.spec so that --with-mpfr is no longer passed to
+ configure; doing so, combined with some configury changes triggered
+ a latent build problem.
+
* Mon Dec 4 2023 Kevin Buettner <kevinb@redhat.com>
- Remove gdb-6.5-missed-trap-on-step-test.patch. Testing what happens
when stepping over/through a statement which triggers a watchpoint
diff --git a/sources b/sources
index bac9830..960a489 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
SHA512 (gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz) = a8b1c54dd348cfeb37da73f968742896be3dd13a4215f8d8519870c2abea915f5176c3fa6989ddd10f20020a16f0fab20cbae68ee8d58a82234d8778023520f8
SHA512 (v2.0.5.tar.gz) = 2e7ac2aede84671b15597d9c56dbe077a81357bbf44b6684802592246fb7729b4a5743238ddf02f6ea143b4d29872f581408135f9c1ea1ccc99dab905916d98d
-SHA512 (gdb-13.2.tar.xz) = 8185d3e11ab60dafff5860a5016577bfe7dd7547ef01ebc867bc247603d82b74ff74c4f29492c7d2aee57076f52be33e289f4c6b414a4b870d4b3004909f4c34
+SHA512 (gdb-14.1.tar.xz) = 575e198105076fc4a88f68591aa114ab9c1196e84386a3f7b9b58fe5f30cdeed33f6a5f957b68f08c47284ec922bb60c964627e238471419673fd913575ce427
reply other threads:[~2026-06-28 0:01 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178260488663.1.303253507866479056.rpms-gdb-ebdac5bb6ea5@fedoraproject.org \
--to=kevinb@redhat.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox