public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gdb] gdb-17.2-rebase-f44: - Split `gdb-6.6-buildid-locate.patch' to
@ 2026-06-27 23:54 Jan Kratochvil
  0 siblings, 0 replies; only message in thread
From: Jan Kratochvil @ 2026-06-27 23:54 UTC (permalink / raw)
  To: git-commits

        A new commit has been pushed.

        Repo   : rpms/gdb
        Branch : gdb-17.2-rebase-f44
        Commit : 09c22fd5fbaab20a031351621d473eb6924c4919
        Author : Jan Kratochvil <jkratoch@fedoraproject.org>
        Date   : 2009-03-07T01:42:03+00:00
        Stats  : +471/-463 in 3 file(s)
        URL    : https://src.fedoraproject.org/rpms/gdb/c/09c22fd5fbaab20a031351621d473eb6924c4919?branch=gdb-17.2-rebase-f44

        Log:
        - Split `gdb-6.6-buildid-locate.patch' to
`gdb-6.6-buildid-locate-rpm.patch'.

---
diff --git a/gdb-6.6-buildid-locate-rpm.patch b/gdb-6.6-buildid-locate-rpm.patch
new file mode 100644
index 0000000..4654024
--- /dev/null
+++ b/gdb-6.6-buildid-locate-rpm.patch
@@ -0,0 +1,429 @@
+--- ./gdb/Makefile.in	2009-03-07 01:45:51.000000000 +0100
++++ ./gdb/Makefile.in	2009-03-07 01:52:00.000000000 +0100
+@@ -396,7 +396,7 @@ CONFIG_UNINSTALL = @CONFIG_UNINSTALL@
+ # your system doesn't have fcntl.h in /usr/include (which is where it
+ # should be according to Posix).
+ DEFS = @DEFS@
+-GDB_CFLAGS = -I. -I$(srcdir) -I$(srcdir)/config -DLOCALEDIR="\"$(localedir)\"" $(DEFS)
++GDB_CFLAGS = -I. -I$(srcdir) -I$(srcdir)/config -I$(includedir)/rpm -DLOCALEDIR="\"$(localedir)\"" $(DEFS)
+ 
+ # MH_CFLAGS, if defined, has host-dependent CFLAGS from the config directory.
+ GLOBAL_CFLAGS = $(MH_CFLAGS)
+@@ -449,7 +449,7 @@ INSTALLED_LIBS=-lbfd -lreadline -lopcode
+ CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
+ 	$(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
+ 	$(LIBICONV) $(LIBEXPAT) \
+-	$(LIBIBERTY) $(WIN32LIBS) $(LIBGNU)
++	$(LIBIBERTY) $(WIN32LIBS) $(LIBGNU) -lrpm
+ CDEPS = $(XM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) \
+ 	$(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU)
+ 
+--- ./gdb/event-top.c	2009-03-07 02:29:51.000000000 +0100
++++ ./gdb/event-top.c	2009-03-07 01:52:00.000000000 +0100
+@@ -33,6 +33,7 @@
+ #include "cli/cli-script.h"     /* for reset_command_nest_depth */
+ #include "main.h"
+ #include "gdbthread.h"
++#include "symfile.h"
+ 
+ /* For dont_repeat() */
+ #include "gdbcmd.h"
+@@ -193,6 +194,8 @@ cli_command_loop (void)
+       char *a_prompt;
+       char *gdb_prompt = get_prompt ();
+ 
++      debug_flush_missing ();
++
+       /* Tell readline what the prompt to display is and what function it
+          will need to call after a whole line is read. This also displays
+          the first prompt. */
+@@ -264,6 +267,8 @@ display_gdb_prompt (char *new_prompt)
+   /* Reset the nesting depth used when trace-commands is set.  */
+   reset_command_nest_depth ();
+ 
++  debug_flush_missing ();
++
+   /* Each interpreter has its own rules on displaying the command
+      prompt.  */
+   if (!current_interp_display_prompt_p ())
+--- ./gdb/symfile.c	2009-03-07 02:30:20.000000000 +0100
++++ ./gdb/symfile.c	2009-03-07 01:52:00.000000000 +0100
+@@ -55,6 +55,7 @@
+ #include "solib.h"
+ #include "remote.h"
+ #include "libbfd.h"
++#include "elf/external.h"
+ 
+ #include <sys/types.h>
+ #include <fcntl.h>
+@@ -63,6 +64,7 @@
+ #include <ctype.h>
+ #include <time.h>
+ #include <sys/time.h>
++#include <sys/param.h>
+ 
+ 
+ int (*deprecated_ui_load_progress_hook) (const char *section, unsigned long num);
+@@ -1684,6 +1686,269 @@ build_id_to_filename (struct build_id *b
+   return retval;
+ }
+ 
++#include <rpm/rpmlib.h>
++#include <rpm/rpmts.h>
++#include <rpm/rpmdb.h>
++#include <rpm/header.h>
++
++/* This MISSING_RPM_HASH tracker is used to collect all the missing rpm files
++   and avoid their duplicities during a single inferior run.  */
++
++static struct htab *missing_rpm_hash;
++
++/* This MISSING_RPM_LIST tracker is used to collect and print as a single line
++   all the rpms right before the nearest GDB prompt.  It gets cleared after
++   each such print (it is questionable if we should clear it after the print).
++   */
++
++struct missing_rpm
++  {
++    struct missing_rpm *next;
++    char rpm[1];
++  };
++static struct missing_rpm *missing_rpm_list;
++static int missing_rpm_list_entries;
++
++/* Returns the count of newly added rpms.  */
++
++static int
++missing_rpm_enlist (const char *filename)
++{
++  static int rpm_init_done = 0;
++  rpmts ts;
++  rpmdbMatchIterator mi;
++  int count = 0;
++
++  if (filename == NULL)
++    return 0;
++
++  if (!rpm_init_done)
++    {
++      if (rpmReadConfigFiles(NULL, NULL) != 0)
++	{
++	  warning (_("Error reading the rpm configuration files"));
++	  return 0;
++	}
++      rpm_init_done = 1;
++    }
++
++  ts = rpmtsCreate ();
++
++  mi = rpmtsInitIterator (ts, RPMTAG_BASENAMES, filename, 0);
++  if (mi != NULL)
++    {
++      for (;;)
++	{
++	  Header h;
++	  char *debuginfo, **slot, *s, *s2;
++	  errmsg_t err;
++	  size_t srcrpmlen = sizeof (".src.rpm") - 1;
++	  size_t debuginfolen = sizeof ("-debuginfo") - 1;
++	  rpmdbMatchIterator mi_debuginfo;
++
++	  h = rpmdbNextIterator (mi);
++	  if (h == NULL)
++	    break;
++
++	  /* Verify the debuginfo file is not already installed.  */
++ 
++	  debuginfo = headerFormat (h, "%{sourcerpm}-debuginfo.%{arch}", &err);
++	  if (!debuginfo)
++	    {
++	      warning (_("Error querying the rpm file `%s': %s"), filename,
++	               err);
++	      continue;
++	    }
++	  /* s = `.src.rpm-debuginfo.%{arch}' */
++	  s = strrchr (debuginfo, '-') - srcrpmlen;
++	  s2 = NULL;
++	  if (s > debuginfo && memcmp (s, ".src.rpm", srcrpmlen) == 0)
++	    {
++	      /* s2 = `-%{release}.src.rpm-debuginfo.%{arch}' */
++	      s2 = memrchr (debuginfo, '-', s - debuginfo);
++	    }
++	  if (s2)
++	    {
++	      /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */
++	      s2 = memrchr (debuginfo, '-', s2 - debuginfo);
++	    }
++	  if (!s2)
++	    {
++	      warning (_("Error querying the rpm file `%s': %s"), filename,
++	               debuginfo);
++	      xfree (debuginfo);
++	      continue;
++	    }
++	  /* s = `.src.rpm-debuginfo.%{arch}' */
++	  /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */
++	  memmove (s2 + debuginfolen, s2, s - s2);
++	  memcpy (s2, "-debuginfo", debuginfolen);
++	  /* s = `XXXX.%{arch}' */
++	  /* strlen ("XXXX") == srcrpmlen + debuginfolen */
++	  /* s2 = `-debuginfo-%{version}-%{release}XX.%{arch}' */
++	  /* strlen ("XX") == srcrpmlen */
++	  memmove (s + debuginfolen, s + srcrpmlen + debuginfolen,
++		   strlen (s + srcrpmlen + debuginfolen) + 1);
++	  /* s = `-debuginfo-%{version}-%{release}.%{arch}' */
++
++	  /* RPMDBI_PACKAGES requires keylen == sizeof (int).  */
++	  /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel().  */
++	  mi_debuginfo = rpmtsInitIterator (ts, RPMDBI_LABEL, debuginfo, 0);
++	  xfree (debuginfo);
++	  if (mi_debuginfo)
++	    {
++	      rpmdbFreeIterator (mi_debuginfo);
++	      count = 0;
++	      break;
++	    }
++
++	  /* The allocated memory gets utilized below for MISSING_RPM_HASH.  */
++	  debuginfo = headerFormat (h,
++				    "%{name}-%{version}-%{release}.%{arch}",
++				    &err);
++	  if (!debuginfo)
++	    {
++	      warning (_("Error querying the rpm file `%s': %s"), filename,
++	               err);
++	      continue;
++	    }
++
++	  /* Base package name for `debuginfo-install'.  We do not use the
++	     `yum' command directly as the line
++		 yum --enablerepo='*-debuginfo' install NAME-debuginfo.ARCH
++	     would be more complicated than just:
++		 debuginfo-install NAME-VERSION-RELEASE.ARCH
++	     Do not supply the rpm base name (derived from .src.rpm name) as
++	     debuginfo-install is unable to install the debuginfo package if
++	     the base name PKG binary rpm is not installed while for example
++	     PKG-libs would be installed (RH Bug 467901).
++	     FUTURE: After multiple debuginfo versions simultaneously installed
++	     get supported the support for the VERSION-RELEASE tags handling
++	     may need an update.  */
++
++	  if (missing_rpm_hash == NULL)
++	    {
++	      /* DEL_F is passed NULL as MISSING_RPM_LIST's HTAB_DELETE
++		 should not deallocate the entries.  */
++
++	      missing_rpm_hash = htab_create_alloc (64, htab_hash_string,
++			       (int (*) (const void *, const void *)) streq,
++						    NULL, xcalloc, xfree);
++	    }
++	  slot = (char **) htab_find_slot (missing_rpm_hash, debuginfo, INSERT);
++	  /* XCALLOC never returns NULL.  */
++	  gdb_assert (slot != NULL);
++	  if (*slot == NULL)
++	    {
++	      struct missing_rpm *missing_rpm;
++
++	      *slot = debuginfo;
++
++	      missing_rpm = xmalloc (sizeof (*missing_rpm) + strlen (debuginfo));
++	      strcpy (missing_rpm->rpm, debuginfo);
++	      missing_rpm->next = missing_rpm_list;
++	      missing_rpm_list = missing_rpm;
++	      missing_rpm_list_entries++;
++	    }
++	  else
++	    xfree (debuginfo);
++	  count++;
++	}
++
++      rpmdbFreeIterator (mi);
++    }
++
++  rpmtsFree (ts);
++
++  return count;
++}
++
++static int
++missing_rpm_list_compar (const char *const *ap, const char *const *bp)
++{
++  return strcoll (*ap, *bp);
++}
++
++/* It returns a NULL-terminated array of strings needing to be FREEd.  It may
++   also return only NULL.  */
++
++static void
++missing_rpm_list_print (void)
++{
++  char **array, **array_iter;
++  struct missing_rpm *list_iter;
++  struct cleanup *cleanups;
++
++  if (missing_rpm_list_entries == 0)
++    return;
++
++  array = xmalloc (sizeof (*array) * missing_rpm_list_entries);
++  cleanups = make_cleanup (xfree, array);
++
++  array_iter = array;
++  for (list_iter = missing_rpm_list; list_iter != NULL;
++       list_iter = list_iter->next)
++    {
++      *array_iter++ = list_iter->rpm;
++    }
++  gdb_assert (array_iter == array + missing_rpm_list_entries);
++
++  qsort (array, missing_rpm_list_entries, sizeof (*array),
++	 (int (*) (const void *, const void *)) missing_rpm_list_compar);
++
++  printf_unfiltered (_("Missing separate debuginfos, use: %s"),
++		     "debuginfo-install");
++  for (array_iter = array; array_iter < array + missing_rpm_list_entries;
++       array_iter++)
++    {
++      putchar_unfiltered (' ');
++      puts_unfiltered (*array_iter);
++    }
++  putchar_unfiltered ('\n');
++
++  while (missing_rpm_list != NULL)
++    {
++      list_iter = missing_rpm_list;
++      missing_rpm_list = list_iter->next;
++      xfree (list_iter);
++    }
++  missing_rpm_list_entries = 0;
++
++  do_cleanups (cleanups);
++}
++
++static void
++missing_rpm_change (void)
++{
++  debug_flush_missing ();
++
++  gdb_assert (missing_rpm_list == NULL);
++  if (missing_rpm_hash != NULL)
++    {
++      htab_delete (missing_rpm_hash);
++      missing_rpm_hash = NULL;
++    }
++}
++
++enum missing_exec
++  {
++    /* Init state.  EXEC_BFD also still could be NULL.  */
++    MISSING_EXEC_NOT_TRIED,
++    /* We saw a non-NULL EXEC_BFD but RPM has no info about it.  */
++    MISSING_EXEC_NOT_FOUND,
++    /* We found EXEC_BFD by RPM and we either have its symbols (either embedded
++       or separate) or the main executable's RPM is now contained in
++       MISSING_RPM_HASH.  */
++    MISSING_EXEC_ENLISTED
++  };
++static enum missing_exec missing_exec = MISSING_EXEC_NOT_TRIED;
++
++void
++debug_flush_missing (void)
++{
++  missing_rpm_list_print ();
++}
++
+ /* This MISSING_FILEPAIR_HASH tracker is used only for the duplicite messages
+      yum --enablerepo='*-debuginfo' install ...
+    avoidance.  */
+@@ -1739,11 +2004,13 @@ missing_filepair_change (void)
+       /* All their memory came just from missing_filepair_OBSTACK.  */
+       missing_filepair_hash = NULL;
+     }
++  missing_exec = MISSING_EXEC_NOT_TRIED;
+ }
+ 
+ static void
+ debug_print_executable_changed (void)
+ {
++  missing_rpm_change ();
+   missing_filepair_change ();
+ }
+ 
+@@ -1802,14 +2069,31 @@ debug_print_missing (const char *binary,
+     }
+   *slot = missing_filepair;
+ 
+-  /* We do not collect and flush these messages as each such message
+-     already requires its own separate lines.  */
++  if (missing_exec == MISSING_EXEC_NOT_TRIED)
++    {
++      char *exec_filename;
+ 
+-  fprintf_unfiltered (gdb_stdlog,
+-		      _("Missing separate debuginfo for %s\n"), binary);
+-  if (debug != NULL)
+-    fprintf_unfiltered (gdb_stdlog, _("Try: %s %s\n"),
+-			"yum --enablerepo='*-debuginfo' install", debug);
++      exec_filename = get_exec_file (0);
++      if (exec_filename != NULL)
++	{
++	  if (missing_rpm_enlist (exec_filename) == 0)
++	    missing_exec = MISSING_EXEC_NOT_FOUND;
++	  else
++	    missing_exec = MISSING_EXEC_ENLISTED;
++	}
++    }
++  if (missing_exec != MISSING_EXEC_ENLISTED)
++    if (missing_rpm_enlist (binary) == 0 && missing_rpm_enlist (debug) == 0)
++      {
++	/* We do not collect and flush these messages as each such message
++	   already requires its own separate lines.  */
++
++	fprintf_unfiltered (gdb_stdlog,
++			    _("Missing separate debuginfo for %s\n"), binary);
++        if (debug != NULL)
++	  fprintf_unfiltered (gdb_stdlog, _("Try: %s %s\n"),
++			      "yum --enablerepo='*-debuginfo' install", debug);
++      }
+ }
+ 
+ static char *
+--- ./gdb/symfile.h	2009-03-07 02:16:18.000000000 +0100
++++ ./gdb/symfile.h	2009-03-07 01:52:00.000000000 +0100
+@@ -378,6 +378,7 @@ extern struct build_id *build_id_addr_ge
+ extern char *build_id_to_filename (struct build_id *build_id,
+ 				   char **link_return, int add_debug_suffix);
+ extern void debug_print_missing (const char *binary, const char *debug);
++extern void debug_flush_missing (void);
+ 
+ /* From dwarf2read.c */
+ 
+--- ./gdb/testsuite/lib/gdb.exp	2009-03-07 02:10:11.000000000 +0100
++++ ./gdb/testsuite/lib/gdb.exp	2009-03-07 01:52:00.000000000 +0100
+@@ -1230,7 +1230,7 @@ proc default_gdb_start { } {
+ 	    warning "Couldn't set the width to 0."
+ 	}
+     }
+-    # Turn off the missing warnings as the testsuite does not expect it.
++    # Turn off the missing RPMs warnings as the testsuite does not expect it.
+     send_gdb "set build-id-verbose 0\n"
+     gdb_expect 10 {
+ 	-re "$gdb_prompt $" {
+--- ./gdb/tui/tui-interp.c	2009-03-07 02:28:47.000000000 +0100
++++ ./gdb/tui/tui-interp.c	2009-03-07 01:52:00.000000000 +0100
+@@ -30,6 +30,7 @@
+ #include "tui/tui.h"
+ #include "tui/tui-io.h"
+ #include "exceptions.h"
++#include "symfile.h"
+ 
+ /* Set to 1 when the TUI mode must be activated when we first start
+    gdb.  */
+@@ -128,6 +129,8 @@ tui_command_loop (void *data)
+       char *a_prompt;
+       char *gdb_prompt = get_prompt ();
+ 
++      debug_flush_missing ();
++
+       /* Tell readline what the prompt to display is and what function
+          it will need to call after a whole line is read. This also
+          displays the first prompt.  */

diff --git a/gdb-6.6-buildid-locate.patch b/gdb-6.6-buildid-locate.patch
index d526e25..db62068 100644
--- a/gdb-6.6-buildid-locate.patch
+++ b/gdb-6.6-buildid-locate.patch
@@ -1,78 +1,5 @@
-[base]
-
-2007-10-16  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Port to GDB-6.7.
-
-2008-01-22  Jan Kratochvil  <jan.kratochvil@redhat.com>
-	option "build-id-core-loads": Fix it to be an "on"/"off" type.
-	More intuitive build-id missing files messages.
-	Lookup also the main executable from the rpm database.
-	Suppress duplicite buil-id missing files warnings.
-
-2008-01-26  Jan Kratochvil  <jan.kratochvil@redhat.com>
-	Print the shared libraries names unconditionally.
-
-2008-02-21  Jan Kratochvil  <jan.kratochvil@redhat.com>
-	Rename `debug build-id' to `build-id-verbose'.
-	Provide its level 0 to disable the build-id messages.
-	New description of `build-id-verbose' in the documentation.
-	Resolve the RH Bug 432164.
-
-2008-02-24  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Port to GDB-6.8pre.
-
-2008-03-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Implement the `debuginfo-install' rpm/yum integration.
-	Resolve the RH Bug 435581.
-
-2008-04-16  Robert Scheck  <redhat-bugzilla@linuxnetz.de>
-
-	Fix -I for non-standard rpm includes in `$(includedir)/rpm'.
-
-2008-04-19  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Disable the warnings for the testsuite not expecting them.
-
-2008-10-12  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	rpm compatibility patch by Panu Matilainen.
-
-2008-08-21  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Disable MI non-compliant message on the missing debuginfo printed on
-	reloaded exec file.
-	Fix found by Denys Vlasenko <dvlasenk@redhat.com>.
-	Fixes Red Hat Bug 459414.
-
-Index: gdb-6.8.50.20090226/gdb/Makefile.in
-===================================================================
---- gdb-6.8.50.20090226.orig/gdb/Makefile.in	2009-02-28 07:31:50.000000000 +0100
-+++ gdb-6.8.50.20090226/gdb/Makefile.in	2009-02-28 07:31:58.000000000 +0100
-@@ -392,7 +392,7 @@ CONFIG_UNINSTALL = @CONFIG_UNINSTALL@
- # your system doesn't have fcntl.h in /usr/include (which is where it
- # should be according to Posix).
- DEFS = @DEFS@
--GDB_CFLAGS = -I. -I$(srcdir) -I$(srcdir)/config -DLOCALEDIR="\"$(localedir)\"" $(DEFS)
-+GDB_CFLAGS = -I. -I$(srcdir) -I$(srcdir)/config -I$(includedir)/rpm -DLOCALEDIR="\"$(localedir)\"" $(DEFS)
- 
- # MH_CFLAGS, if defined, has host-dependent CFLAGS from the config directory.
- GLOBAL_CFLAGS = $(MH_CFLAGS)
-@@ -445,7 +445,7 @@ INSTALLED_LIBS=-lbfd -lreadline -lopcode
- CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
- 	$(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
- 	$(LIBICONV) $(LIBEXPAT) \
--	$(LIBIBERTY) $(WIN32LIBS) $(LIBGNU)
-+	$(LIBIBERTY) $(WIN32LIBS) $(LIBGNU) -lrpm
- CDEPS = $(XM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) \
- 	$(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU)
- 
-Index: gdb-6.8.50.20090226/gdb/corelow.c
-===================================================================
---- gdb-6.8.50.20090226.orig/gdb/corelow.c	2009-02-23 01:03:48.000000000 +0100
-+++ gdb-6.8.50.20090226/gdb/corelow.c	2009-02-28 07:32:23.000000000 +0100
+--- ./gdb/corelow.c	2009-03-07 01:45:51.000000000 +0100
++++ ./gdb/corelow.c	2009-03-07 02:29:31.000000000 +0100
 @@ -45,6 +45,10 @@
  #include "exceptions.h"
  #include "solib.h"
@@ -166,10 +93,8 @@ Index: gdb-6.8.50.20090226/gdb/corelow.c
 +			   NULL, NULL, NULL,
 +			   &setlist, &showlist);
  }
-Index: gdb-6.8.50.20090226/gdb/doc/gdb.texinfo
-===================================================================
---- gdb-6.8.50.20090226.orig/gdb/doc/gdb.texinfo	2009-02-28 07:31:50.000000000 +0100
-+++ gdb-6.8.50.20090226/gdb/doc/gdb.texinfo	2009-02-28 07:31:58.000000000 +0100
+--- ./gdb/doc/gdb.texinfo	2009-03-07 01:45:51.000000000 +0100
++++ ./gdb/doc/gdb.texinfo	2009-03-07 02:10:11.000000000 +0100
 @@ -13294,6 +13294,27 @@ information files.
  
  @end table
@@ -198,40 +123,8 @@ Index: gdb-6.8.50.20090226/gdb/doc/gdb.texinfo
  @cindex @code{.gnu_debuglink} sections
  @cindex debug link sections
  A debug link is a special section of the executable file named
-Index: gdb-6.8.50.20090226/gdb/event-top.c
-===================================================================
---- gdb-6.8.50.20090226.orig/gdb/event-top.c	2009-01-09 12:00:00.000000000 +0100
-+++ gdb-6.8.50.20090226/gdb/event-top.c	2009-02-28 07:31:58.000000000 +0100
-@@ -33,6 +33,7 @@
- #include "cli/cli-script.h"     /* for reset_command_nest_depth */
- #include "main.h"
- #include "gdbthread.h"
-+#include "symfile.h"
- 
- /* For dont_repeat() */
- #include "gdbcmd.h"
-@@ -193,6 +194,8 @@ cli_command_loop (void)
-       char *a_prompt;
-       char *gdb_prompt = get_prompt ();
- 
-+      debug_flush_missing ();
-+
-       /* Tell readline what the prompt to display is and what function it
-          will need to call after a whole line is read. This also displays
-          the first prompt. */
-@@ -264,6 +267,8 @@ display_gdb_prompt (char *new_prompt)
-   /* Reset the nesting depth used when trace-commands is set.  */
-   reset_command_nest_depth ();
- 
-+  debug_flush_missing ();
-+
-   /* Each interpreter has its own rules on displaying the command
-      prompt.  */
-   if (!current_interp_display_prompt_p ())
-Index: gdb-6.8.50.20090226/gdb/solib-svr4.c
-===================================================================
---- gdb-6.8.50.20090226.orig/gdb/solib-svr4.c	2009-02-27 00:04:34.000000000 +0100
-+++ gdb-6.8.50.20090226/gdb/solib-svr4.c	2009-02-28 07:31:58.000000000 +0100
+--- ./gdb/solib-svr4.c	2009-03-07 01:45:51.000000000 +0100
++++ ./gdb/solib-svr4.c	2009-03-07 02:10:11.000000000 +0100
 @@ -1000,9 +1000,33 @@ svr4_current_sos (void)
  		     safe_strerror (errcode));
  	  else
@@ -269,28 +162,17 @@ Index: gdb-6.8.50.20090226/gdb/solib-svr4.c
  	    }
  	  xfree (buffer);
  
-Index: gdb-6.8.50.20090226/gdb/symfile.c
-===================================================================
---- gdb-6.8.50.20090226.orig/gdb/symfile.c	2009-02-28 07:22:43.000000000 +0100
-+++ gdb-6.8.50.20090226/gdb/symfile.c	2009-02-28 07:31:58.000000000 +0100
-@@ -54,6 +54,8 @@
+--- ./gdb/symfile.c	2009-03-07 01:45:51.000000000 +0100
++++ ./gdb/symfile.c	2009-03-07 02:30:20.000000000 +0100
+@@ -54,6 +54,7 @@
  #include "elf-bfd.h"
  #include "solib.h"
  #include "remote.h"
 +#include "libbfd.h"
-+#include "elf/external.h"
  
  #include <sys/types.h>
  #include <fcntl.h>
-@@ -62,6 +64,7 @@
- #include <ctype.h>
- #include <time.h>
- #include <sys/time.h>
-+#include <sys/param.h>
- 
- 
- int (*deprecated_ui_load_progress_hook) (const char *section, unsigned long num);
-@@ -1185,16 +1188,65 @@ symbol_file_clear (int from_tty)
+@@ -1185,16 +1186,65 @@ symbol_file_clear (int from_tty)
        printf_unfiltered (_("No symbol file now.\n"));
  }
  
@@ -358,7 +240,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
  {
    struct build_id *retval;
  
-@@ -1210,6 +1262,348 @@ build_id_bfd_get (bfd *abfd)
+@@ -1210,6 +1260,348 @@ build_id_bfd_get (bfd *abfd)
    return retval;
  }
  
@@ -707,7 +589,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
  /* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value.  */
  
  static int
-@@ -1227,7 +1621,7 @@ build_id_verify (const char *filename, s
+@@ -1227,7 +1619,7 @@ build_id_verify (const char *filename, s
    if (abfd == NULL)
      return 0;
  
@@ -716,7 +598,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
  
    if (found == NULL)
      warning (_("File \"%s\" has no build-id, file skipped"), filename);
-@@ -1246,8 +1640,9 @@ build_id_verify (const char *filename, s
+@@ -1246,8 +1638,9 @@ build_id_verify (const char *filename, s
    return retval;
  }
  
@@ -728,7 +610,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
  {
    char *link, *s, *retval = NULL;
    gdb_byte *data = build_id->data;
-@@ -1255,7 +1650,9 @@ build_id_to_debug_filename (struct build
+@@ -1255,7 +1648,9 @@ build_id_to_debug_filename (struct build
  
    /* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */
    link = xmalloc (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1
@@ -739,7 +621,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
    s = link + sprintf (link, "%s/.build-id/", debug_file_directory);
    if (size > 0)
      {
-@@ -1266,12 +1663,14 @@ build_id_to_debug_filename (struct build
+@@ -1266,12 +1661,14 @@ build_id_to_debug_filename (struct build
      *s++ = '/';
    while (size-- > 0)
      s += sprintf (s, "%02x", (unsigned) *data++);
@@ -756,7 +638,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
  
    if (retval != NULL && !build_id_verify (retval, build_id))
      {
-@@ -1279,9 +1678,424 @@ build_id_to_debug_filename (struct build
+@@ -1279,9 +1676,142 @@ build_id_to_debug_filename (struct build
        retval = NULL;
      }
  
@@ -768,269 +650,6 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
 +  return retval;
 +}
 +
-+#include <rpm/rpmlib.h>
-+#include <rpm/rpmts.h>
-+#include <rpm/rpmdb.h>
-+#include <rpm/header.h>
-+
-+/* This MISSING_RPM_HASH tracker is used to collect all the missing rpm files
-+   and avoid their duplicities during a single inferior run.  */
-+
-+static struct htab *missing_rpm_hash;
-+
-+/* This MISSING_RPM_LIST tracker is used to collect and print as a single line
-+   all the rpms right before the nearest GDB prompt.  It gets cleared after
-+   each such print (it is questionable if we should clear it after the print).
-+   */
-+
-+struct missing_rpm
-+  {
-+    struct missing_rpm *next;
-+    char rpm[1];
-+  };
-+static struct missing_rpm *missing_rpm_list;
-+static int missing_rpm_list_entries;
-+
-+/* Returns the count of newly added rpms.  */
-+
-+static int
-+missing_rpm_enlist (const char *filename)
-+{
-+  static int rpm_init_done = 0;
-+  rpmts ts;
-+  rpmdbMatchIterator mi;
-+  int count = 0;
-+
-+  if (filename == NULL)
-+    return 0;
-+
-+  if (!rpm_init_done)
-+    {
-+      if (rpmReadConfigFiles(NULL, NULL) != 0)
-+	{
-+	  warning (_("Error reading the rpm configuration files"));
-+	  return 0;
-+	}
-+      rpm_init_done = 1;
-+    }
-+
-+  ts = rpmtsCreate ();
-+
-+  mi = rpmtsInitIterator (ts, RPMTAG_BASENAMES, filename, 0);
-+  if (mi != NULL)
-+    {
-+      for (;;)
-+	{
-+	  Header h;
-+	  char *debuginfo, **slot, *s, *s2;
-+	  errmsg_t err;
-+	  size_t srcrpmlen = sizeof (".src.rpm") - 1;
-+	  size_t debuginfolen = sizeof ("-debuginfo") - 1;
-+	  rpmdbMatchIterator mi_debuginfo;
-+
-+	  h = rpmdbNextIterator (mi);
-+	  if (h == NULL)
-+	    break;
-+
-+	  /* Verify the debuginfo file is not already installed.  */
-+ 
-+	  debuginfo = headerFormat (h, "%{sourcerpm}-debuginfo.%{arch}", &err);
-+	  if (!debuginfo)
-+	    {
-+	      warning (_("Error querying the rpm file `%s': %s"), filename,
-+	               err);
-+	      continue;
-+	    }
-+	  /* s = `.src.rpm-debuginfo.%{arch}' */
-+	  s = strrchr (debuginfo, '-') - srcrpmlen;
-+	  s2 = NULL;
-+	  if (s > debuginfo && memcmp (s, ".src.rpm", srcrpmlen) == 0)
-+	    {
-+	      /* s2 = `-%{release}.src.rpm-debuginfo.%{arch}' */
-+	      s2 = memrchr (debuginfo, '-', s - debuginfo);
-+	    }
-+	  if (s2)
-+	    {
-+	      /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */
-+	      s2 = memrchr (debuginfo, '-', s2 - debuginfo);
-+	    }
-+	  if (!s2)
-+	    {
-+	      warning (_("Error querying the rpm file `%s': %s"), filename,
-+	               debuginfo);
-+	      xfree (debuginfo);
-+	      continue;
-+	    }
-+	  /* s = `.src.rpm-debuginfo.%{arch}' */
-+	  /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */
-+	  memmove (s2 + debuginfolen, s2, s - s2);
-+	  memcpy (s2, "-debuginfo", debuginfolen);
-+	  /* s = `XXXX.%{arch}' */
-+	  /* strlen ("XXXX") == srcrpmlen + debuginfolen */
-+	  /* s2 = `-debuginfo-%{version}-%{release}XX.%{arch}' */
-+	  /* strlen ("XX") == srcrpmlen */
-+	  memmove (s + debuginfolen, s + srcrpmlen + debuginfolen,
-+		   strlen (s + srcrpmlen + debuginfolen) + 1);
-+	  /* s = `-debuginfo-%{version}-%{release}.%{arch}' */
-+
-+	  /* RPMDBI_PACKAGES requires keylen == sizeof (int).  */
-+	  /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel().  */
-+	  mi_debuginfo = rpmtsInitIterator (ts, RPMDBI_LABEL, debuginfo, 0);
-+	  xfree (debuginfo);
-+	  if (mi_debuginfo)
-+	    {
-+	      rpmdbFreeIterator (mi_debuginfo);
-+	      count = 0;
-+	      break;
-+	    }
-+
-+	  /* The allocated memory gets utilized below for MISSING_RPM_HASH.  */
-+	  debuginfo = headerFormat (h,
-+				    "%{name}-%{version}-%{release}.%{arch}",
-+				    &err);
-+	  if (!debuginfo)
-+	    {
-+	      warning (_("Error querying the rpm file `%s': %s"), filename,
-+	               err);
-+	      continue;
-+	    }
-+
-+	  /* Base package name for `debuginfo-install'.  We do not use the
-+	     `yum' command directly as the line
-+		 yum --enablerepo='*-debuginfo' install NAME-debuginfo.ARCH
-+	     would be more complicated than just:
-+		 debuginfo-install NAME-VERSION-RELEASE.ARCH
-+	     Do not supply the rpm base name (derived from .src.rpm name) as
-+	     debuginfo-install is unable to install the debuginfo package if
-+	     the base name PKG binary rpm is not installed while for example
-+	     PKG-libs would be installed (RH Bug 467901).
-+	     FUTURE: After multiple debuginfo versions simultaneously installed
-+	     get supported the support for the VERSION-RELEASE tags handling
-+	     may need an update.  */
-+
-+	  if (missing_rpm_hash == NULL)
-+	    {
-+	      /* DEL_F is passed NULL as MISSING_RPM_LIST's HTAB_DELETE
-+		 should not deallocate the entries.  */
-+
-+	      missing_rpm_hash = htab_create_alloc (64, htab_hash_string,
-+			       (int (*) (const void *, const void *)) streq,
-+						    NULL, xcalloc, xfree);
-+	    }
-+	  slot = (char **) htab_find_slot (missing_rpm_hash, debuginfo, INSERT);
-+	  /* XCALLOC never returns NULL.  */
-+	  gdb_assert (slot != NULL);
-+	  if (*slot == NULL)
-+	    {
-+	      struct missing_rpm *missing_rpm;
-+
-+	      *slot = debuginfo;
-+
-+	      missing_rpm = xmalloc (sizeof (*missing_rpm) + strlen (debuginfo));
-+	      strcpy (missing_rpm->rpm, debuginfo);
-+	      missing_rpm->next = missing_rpm_list;
-+	      missing_rpm_list = missing_rpm;
-+	      missing_rpm_list_entries++;
-+	    }
-+	  else
-+	    xfree (debuginfo);
-+	  count++;
-+	}
-+
-+      rpmdbFreeIterator (mi);
-+    }
-+
-+  rpmtsFree (ts);
-+
-+  return count;
-+}
-+
-+static int
-+missing_rpm_list_compar (const char *const *ap, const char *const *bp)
-+{
-+  return strcoll (*ap, *bp);
-+}
-+
-+/* It returns a NULL-terminated array of strings needing to be FREEd.  It may
-+   also return only NULL.  */
-+
-+static void
-+missing_rpm_list_print (void)
-+{
-+  char **array, **array_iter;
-+  struct missing_rpm *list_iter;
-+  struct cleanup *cleanups;
-+
-+  if (missing_rpm_list_entries == 0)
-+    return;
-+
-+  array = xmalloc (sizeof (*array) * missing_rpm_list_entries);
-+  cleanups = make_cleanup (xfree, array);
-+
-+  array_iter = array;
-+  for (list_iter = missing_rpm_list; list_iter != NULL;
-+       list_iter = list_iter->next)
-+    {
-+      *array_iter++ = list_iter->rpm;
-+    }
-+  gdb_assert (array_iter == array + missing_rpm_list_entries);
-+
-+  qsort (array, missing_rpm_list_entries, sizeof (*array),
-+	 (int (*) (const void *, const void *)) missing_rpm_list_compar);
-+
-+  printf_unfiltered (_("Missing separate debuginfos, use: %s"),
-+		     "debuginfo-install");
-+  for (array_iter = array; array_iter < array + missing_rpm_list_entries;
-+       array_iter++)
-+    {
-+      putchar_unfiltered (' ');
-+      puts_unfiltered (*array_iter);
-+    }
-+  putchar_unfiltered ('\n');
-+
-+  while (missing_rpm_list != NULL)
-+    {
-+      list_iter = missing_rpm_list;
-+      missing_rpm_list = list_iter->next;
-+      xfree (list_iter);
-+    }
-+  missing_rpm_list_entries = 0;
-+
-+  do_cleanups (cleanups);
-+}
-+
-+static void
-+missing_rpm_change (void)
-+{
-+  debug_flush_missing ();
-+
-+  gdb_assert (missing_rpm_list == NULL);
-+  if (missing_rpm_hash != NULL)
-+    {
-+      htab_delete (missing_rpm_hash);
-+      missing_rpm_hash = NULL;
-+    }
-+}
-+
-+enum missing_exec
-+  {
-+    /* Init state.  EXEC_BFD also still could be NULL.  */
-+    MISSING_EXEC_NOT_TRIED,
-+    /* We saw a non-NULL EXEC_BFD but RPM has no info about it.  */
-+    MISSING_EXEC_NOT_FOUND,
-+    /* We found EXEC_BFD by RPM and we either have its symbols (either embedded
-+       or separate) or the main executable's RPM is now contained in
-+       MISSING_RPM_HASH.  */
-+    MISSING_EXEC_ENLISTED
-+  };
-+static enum missing_exec missing_exec = MISSING_EXEC_NOT_TRIED;
-+
-+void
-+debug_flush_missing (void)
-+{
-+  missing_rpm_list_print ();
-+}
-+
 +/* This MISSING_FILEPAIR_HASH tracker is used only for the duplicite messages
 +     yum --enablerepo='*-debuginfo' install ...
 +   avoidance.  */
@@ -1086,13 +705,11 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
 +      /* All their memory came just from missing_filepair_OBSTACK.  */
 +      missing_filepair_hash = NULL;
 +    }
-+  missing_exec = MISSING_EXEC_NOT_TRIED;
 +}
 +
 +static void
 +debug_print_executable_changed (void)
 +{
-+  missing_rpm_change ();
 +  missing_filepair_change ();
 +}
 +
@@ -1151,37 +768,20 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
 +    }
 +  *slot = missing_filepair;
 +
-+  if (missing_exec == MISSING_EXEC_NOT_TRIED)
-+    {
-+      char *exec_filename;
++  /* We do not collect and flush these messages as each such message
++     already requires its own separate lines.  */
 +
-+      exec_filename = get_exec_file (0);
-+      if (exec_filename != NULL)
-+	{
-+	  if (missing_rpm_enlist (exec_filename) == 0)
-+	    missing_exec = MISSING_EXEC_NOT_FOUND;
-+	  else
-+	    missing_exec = MISSING_EXEC_ENLISTED;
-+	}
-+    }
-+  if (missing_exec != MISSING_EXEC_ENLISTED)
-+    if (missing_rpm_enlist (binary) == 0 && missing_rpm_enlist (debug) == 0)
-+      {
-+	/* We do not collect and flush these messages as each such message
-+	   already requires its own separate lines.  */
-+
-+	fprintf_unfiltered (gdb_stdlog,
-+			    _("Missing separate debuginfo for %s\n"), binary);
-+        if (debug != NULL)
-+	  fprintf_unfiltered (gdb_stdlog, _("Try: %s %s\n"),
-+			      "yum --enablerepo='*-debuginfo' install", debug);
-+      }
++  fprintf_unfiltered (gdb_stdlog,
++		      _("Missing separate debuginfo for %s\n"), binary);
++  if (debug != NULL)
++    fprintf_unfiltered (gdb_stdlog, _("Try: %s %s\n"),
++			"yum --enablerepo='*-debuginfo' install", debug);
 +}
 +
  static char *
  get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out)
  {
-@@ -1364,32 +2178,36 @@ static char *
+@@ -1364,32 +1894,36 @@ static char *
  find_separate_debug_file (struct objfile *objfile)
  {
    asection *sect;
@@ -1226,7 +826,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
      }
  
    basename = get_debug_link_info (objfile, &crc32);
-@@ -1397,7 +2215,7 @@ find_separate_debug_file (struct objfile
+@@ -1397,7 +1931,7 @@ find_separate_debug_file (struct objfile
    if (basename == NULL)
      /* There's no separate debug info, hence there's no way we could
         load it => no warning.  */
@@ -1235,7 +835,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
  
    dir = xstrdup (objfile->name);
  
-@@ -1413,23 +2231,19 @@ find_separate_debug_file (struct objfile
+@@ -1413,23 +1947,19 @@ find_separate_debug_file (struct objfile
    gdb_assert (i >= 0 && IS_DIR_SEPARATOR (dir[i]));
    dir[i+1] = '\0';
  
@@ -1266,7 +866,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
  
    /* Then try in the subdirectory named DEBUG_SUBDIRECTORY.  */
    strcpy (debugfile, dir);
-@@ -1438,11 +2252,7 @@ find_separate_debug_file (struct objfile
+@@ -1438,11 +1968,7 @@ find_separate_debug_file (struct objfile
    strcat (debugfile, basename);
  
    if (separate_debug_file_exists (debugfile, crc32, objfile->name))
@@ -1279,7 +879,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
  
    /* Then try in the global debugfile directory.  */
    strcpy (debugfile, debug_file_directory);
-@@ -1451,11 +2261,7 @@ find_separate_debug_file (struct objfile
+@@ -1451,11 +1977,7 @@ find_separate_debug_file (struct objfile
    strcat (debugfile, basename);
  
    if (separate_debug_file_exists (debugfile, crc32, objfile->name))
@@ -1292,7 +892,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
  
    /* If the file is in the sysroot, try using its base path in the
       global debugfile directory.  */
-@@ -1470,20 +2276,18 @@ find_separate_debug_file (struct objfile
+@@ -1470,20 +1992,18 @@ find_separate_debug_file (struct objfile
        strcat (debugfile, basename);
  
        if (separate_debug_file_exists (debugfile, crc32, objfile->name))
@@ -1321,7 +921,7 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
  }
  
  
-@@ -4215,4 +5019,16 @@ Show printing of symbol loading messages
+@@ -4216,4 +4736,16 @@ Show printing of symbol loading messages
                             NULL,
                             NULL,
                             &setprintlist, &showprintlist);
@@ -1338,11 +938,9 @@ Index: gdb-6.8.50.20090226/gdb/symfile.c
 +
 +  observer_attach_executable_changed (debug_print_executable_changed);
  }
-Index: gdb-6.8.50.20090226/gdb/symfile.h
-===================================================================
---- gdb-6.8.50.20090226.orig/gdb/symfile.h	2009-02-27 00:04:32.000000000 +0100
-+++ gdb-6.8.50.20090226/gdb/symfile.h	2009-02-28 07:31:58.000000000 +0100
-@@ -372,6 +372,14 @@ extern int symfile_map_offsets_to_segmen
+--- ./gdb/symfile.h	2009-03-07 01:45:51.000000000 +0100
++++ ./gdb/symfile.h	2009-03-07 02:16:18.000000000 +0100
+@@ -372,6 +372,13 @@ extern int symfile_map_offsets_to_segmen
  struct symfile_segment_data *get_symfile_segment_data (bfd *abfd);
  void free_symfile_segment_data (struct symfile_segment_data *data);
  
@@ -1352,20 +950,17 @@ Index: gdb-6.8.50.20090226/gdb/symfile.h
 +extern char *build_id_to_filename (struct build_id *build_id,
 +				   char **link_return, int add_debug_suffix);
 +extern void debug_print_missing (const char *binary, const char *debug);
-+extern void debug_flush_missing (void);
 +
  /* From dwarf2read.c */
  
  extern int dwarf2_has_info (struct objfile *);
-Index: gdb-6.8.50.20090226/gdb/testsuite/lib/gdb.exp
-===================================================================
---- gdb-6.8.50.20090226.orig/gdb/testsuite/lib/gdb.exp	2009-02-27 00:04:34.000000000 +0100
-+++ gdb-6.8.50.20090226/gdb/testsuite/lib/gdb.exp	2009-02-28 07:31:58.000000000 +0100
+--- ./gdb/testsuite/lib/gdb.exp	2009-03-07 01:45:51.000000000 +0100
++++ ./gdb/testsuite/lib/gdb.exp	2009-03-07 02:10:11.000000000 +0100
 @@ -1230,6 +1230,16 @@ proc default_gdb_start { } {
  	    warning "Couldn't set the width to 0."
  	}
      }
-+    # Turn off the missing RPMs warnings as the testsuite does not expect it.
++    # Turn off the missing warnings as the testsuite does not expect it.
 +    send_gdb "set build-id-verbose 0\n"
 +    gdb_expect 10 {
 +	-re "$gdb_prompt $" {
@@ -1378,24 +973,3 @@ Index: gdb-6.8.50.20090226/gdb/testsuite/lib/gdb.exp
      return 0;
  }
  
-Index: gdb-6.8.50.20090226/gdb/tui/tui-interp.c
-===================================================================
---- gdb-6.8.50.20090226.orig/gdb/tui/tui-interp.c	2009-02-21 17:14:50.000000000 +0100
-+++ gdb-6.8.50.20090226/gdb/tui/tui-interp.c	2009-02-28 07:31:58.000000000 +0100
-@@ -30,6 +30,7 @@
- #include "tui/tui.h"
- #include "tui/tui-io.h"
- #include "exceptions.h"
-+#include "symfile.h"
- 
- /* Set to 1 when the TUI mode must be activated when we first start
-    gdb.  */
-@@ -128,6 +129,8 @@ tui_command_loop (void *data)
-       char *a_prompt;
-       char *gdb_prompt = get_prompt ();
- 
-+      debug_flush_missing ();
-+
-       /* Tell readline what the prompt to display is and what function
-          it will need to call after a whole line is read. This also
-          displays the first prompt.  */

diff --git a/gdb.spec b/gdb.spec
index 5c361fd..f7d8a08 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -13,7 +13,7 @@ Version: 6.8.50.20090302
 
 # The release always contains a leading reserved number, start it at 1.
 # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 3%{?_with_upstream:.upstream}%{?dist}
+Release: 4%{?_with_upstream:.upstream}%{?dist}
 
 License: GPLv3+
 Group: Development/Debuggers
@@ -273,6 +273,7 @@ Patch271: gdb-6.5-bz243845-stale-testing-zombie-test.patch
 
 # New locating of the matching binaries from the pure core file (build-id).
 Patch274: gdb-6.6-buildid-locate.patch
+Patch353: gdb-6.6-buildid-locate-rpm.patch
 
 # Fix hardware watchpoints after inferior forks-off some process.
 # Threaded `set follow-fork-mode child' still not fixed there, glibc fixes reqd.
@@ -531,6 +532,7 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
 %patch266 -p1
 %patch271 -p1
 %patch274 -p1
+%patch353 -p1
 %patch280 -p1
 %patch282 -p1
 %patch284 -p1
@@ -836,6 +838,9 @@ fi
 %endif
 
 %changelog
+* Sat Mar  7 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090302-4
+- Split `gdb-6.6-buildid-locate.patch' to `gdb-6.6-buildid-locate-rpm.patch'.
+
 * Sat Mar  7 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090302-3
 - Archer update to the snapshot: 6cf16c0711e844094ab694b3d929f7bd30b49f61
 - Fix crash on the inlined functions support.

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-27 23:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-27 23:54 [rpms/gdb] gdb-17.2-rebase-f44: - Split `gdb-6.6-buildid-locate.patch' to Jan Kratochvil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox