rpms/gdb/F-11 gdb-6.6-buildid-locate-rpm.patch, 1.3, 1.4 gdb-6.6-buildid-locate.patch, 1.20, 1.21 gdb.spec, 1.349, 1.350

Jan Kratochvil jkratoch at fedoraproject.org
Fri Jun 12 21:53:21 UTC 2009


Author: jkratoch

Update of /cvs/pkgs/rpms/gdb/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv18429

Modified Files:
	gdb-6.6-buildid-locate-rpm.patch gdb-6.6-buildid-locate.patch 
	gdb.spec 
Log Message:
* Fri Jun 12 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090302-26
- Fix an occasional crash during printing of missing debuginfo rpms (BZ 505401).


gdb-6.6-buildid-locate-rpm.patch:

Index: gdb-6.6-buildid-locate-rpm.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/F-11/gdb-6.6-buildid-locate-rpm.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- gdb-6.6-buildid-locate-rpm.patch	22 Mar 2009 20:57:29 -0000	1.3
+++ gdb-6.6-buildid-locate-rpm.patch	12 Jun 2009 21:53:20 -0000	1.4
@@ -421,7 +421,7 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
  }
  
 @@ -1802,14 +2154,33 @@ debug_print_missing (const char *binary,
-     }
+ 
    *slot = missing_filepair;
  
 -  /* We do not collect and flush these messages as each such message

gdb-6.6-buildid-locate.patch:

Index: gdb-6.6-buildid-locate.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/F-11/gdb-6.6-buildid-locate.patch,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -p -r1.20 -r1.21
--- gdb-6.6-buildid-locate.patch	22 Mar 2009 20:57:29 -0000	1.20
+++ gdb-6.6-buildid-locate.patch	12 Jun 2009 21:53:20 -0000	1.21
@@ -646,7 +646,7 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
  
    if (retval != NULL && !build_id_verify (retval, build_id))
      {
-@@ -1279,9 +1676,142 @@ build_id_to_debug_filename (struct build
+@@ -1279,9 +1676,150 @@ build_id_to_debug_filename (struct build
        retval = NULL;
      }
  
@@ -700,8 +700,8 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
 +		       const struct missing_filepair *elem2)
 +{
 +  return strcmp (elem1->binary, elem2->binary) == 0
-+         && ((elem1->debug == NULL && elem2->debug == NULL)
-+	     || strcmp (elem1->debug, elem2->debug) == 0);
++         && ((elem1->debug == NULL) == (elem2->debug == NULL))
++         && (elem1->debug == NULL || strcmp (elem1->debug, elem2->debug) == 0);
 +}
 +
 +static void
@@ -732,6 +732,7 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
 +{
 +  size_t binary_len0 = strlen (binary) + 1;
 +  size_t debug_len0 = debug ? strlen (debug) + 1 : 0;
++  struct missing_filepair missing_filepair_find;
 +  struct missing_filepair *missing_filepair;
 +  struct missing_filepair **slot;
 +
@@ -747,6 +748,27 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
 +	missing_filepair_xcalloc, NULL);
 +    }
 +
++  /* Use MISSING_FILEPAIR_FIND first instead of calling obstack_alloc with
++     obstack_free in the case of a (rare) match.  The problem is ALLOC_F for
++     MISSING_FILEPAIR_HASH allocates from MISSING_FILEPAIR_OBSTACK maintenance
++     structures for MISSING_FILEPAIR_HASH.  Calling obstack_free would possibly
++     not to free only MISSING_FILEPAIR but also some such structures (allocated
++     during the htab_find_slot call).  */
++
++  missing_filepair_find.binary = (char *) binary;
++  missing_filepair_find.debug = (char *) debug;
++  slot = (struct missing_filepair **) htab_find_slot (missing_filepair_hash,
++						      &missing_filepair_find,
++						      INSERT);
++
++  /* While it may be still printed duplicitely with the missing debuginfo file
++   * it is due to once printing about the binary file build-id link and once
++   * about the .debug file build-id link as both the build-id symlinks are
++   * located in the debuginfo package.  */
++
++  if (*slot != NULL)
++    return;
++
 +  missing_filepair = obstack_alloc (&missing_filepair_obstack,
 +				      sizeof (*missing_filepair) - 1
 +				      + binary_len0 + debug_len0);
@@ -760,20 +782,6 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
 +  else
 +    missing_filepair->debug = NULL;
 +
-+  slot = (struct missing_filepair **) htab_find_slot (missing_filepair_hash,
-+							missing_filepair,
-+							INSERT);
-+
-+  /* While it may be still printed duplicitely with the missing debuginfo file
-+   * it is due to once printing about the binary file build-id link and once
-+   * about the .debug file build-id link as both the build-id symlinks are
-+   * located in the debuginfo package.  */
-+
-+  if (*slot != NULL)
-+    {
-+      obstack_free (&missing_filepair_obstack, missing_filepair);
-+      return;
-+    }
 +  *slot = missing_filepair;
 +
 +  /* We do not collect and flush these messages as each such message


Index: gdb.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/F-11/gdb.spec,v
retrieving revision 1.349
retrieving revision 1.350
diff -u -p -r1.349 -r1.350
--- gdb.spec	11 Jun 2009 21:40:21 -0000	1.349
+++ gdb.spec	12 Jun 2009 21:53:20 -0000	1.350
@@ -14,7 +14,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: 25%{?_with_upstream:.upstream}%{?dist}
+Release: 26%{?_with_upstream:.upstream}%{?dist}
 
 License: GPLv3+
 Group: Development/Debuggers
@@ -876,6 +876,9 @@ fi
 %endif
 
 %changelog
+* Fri Jun 12 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090302-26
+- Fix an occasional crash during printing of missing debuginfo rpms (BZ 505401).
+
 * Thu Jun 11 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090302-25
 - Archer update to the snapshot: 30c13da4efe18f43ee34aa4b29bc86e1a53de548
 - Archer backport: 30c13da4efe18f43ee34aa4b29bc86e1a53de548




More information about the fedora-extras-commits mailing list