]> git.pld-linux.org Git - packages/gdb.git/blobdiff - gdb-6.6-buildid-locate-rpm-scl.patch
- updated to 8.0
[packages/gdb.git] / gdb-6.6-buildid-locate-rpm-scl.patch
diff --git a/gdb-6.6-buildid-locate-rpm-scl.patch b/gdb-6.6-buildid-locate-rpm-scl.patch
new file mode 100644 (file)
index 0000000..f2f605d
--- /dev/null
@@ -0,0 +1,121 @@
+warning: Skipping deprecated .gdb_index section
+https://bugzilla.redhat.com/show_bug.cgi?id=953585
+
+diff -dup -rup gdb-7.10.50.20160106-orig/gdb/build-id.c gdb-7.10.50.20160106/gdb/build-id.c
+--- gdb-7.10.50.20160106-orig/gdb/build-id.c   2016-01-09 14:40:39.420385241 +0100
++++ gdb-7.10.50.20160106/gdb/build-id.c        2016-01-09 14:41:05.944549393 +0100
+@@ -713,7 +713,11 @@ static int missing_rpm_list_entries;
+ /* Returns the count of newly added rpms.  */
+ static int
++#ifndef GDB_INDEX_VERIFY_VENDOR
+ missing_rpm_enlist (const char *filename)
++#else
++missing_rpm_enlist_1 (const char *filename, int verify_vendor)
++#endif
+ {
+   static int rpm_init_done = 0;
+   rpmts ts;
+@@ -817,7 +821,11 @@ missing_rpm_enlist (const char *filename
+   mi = rpmtsInitIterator_p (ts, RPMTAG_BASENAMES, filename, 0);
+   if (mi != NULL)
+     {
++#ifndef GDB_INDEX_VERIFY_VENDOR
+       for (;;)
++#else
++      if (!verify_vendor) for (;;)
++#endif
+       {
+         Header h;
+         char *debuginfo, **slot, *s, *s2;
+@@ -935,6 +943,37 @@ missing_rpm_enlist (const char *filename
+           xfree (debuginfo);
+         count++;
+       }
++#ifdef GDB_INDEX_VERIFY_VENDOR
++      else /* verify_vendor */
++      {
++        int vendor_pass = 0, vendor_fail = 0;
++
++        for (;;)
++          {
++            Header h;
++            errmsg_t err;
++            char *vendor;
++
++            h = rpmdbNextIterator_p (mi);
++            if (h == NULL)
++              break;
++
++            vendor = headerFormat_p (h, "%{vendor}", &err);
++            if (!vendor)
++              {
++                warning (_("Error querying the rpm file `%s': %s"), filename,
++                         err);
++                continue;
++              }
++            if (strcmp (vendor, "Red Hat, Inc.") == 0)
++              vendor_pass = 1;
++            else
++              vendor_fail = 1;
++            xfree (vendor);
++          }
++        count = vendor_pass != 0 && vendor_fail == 0;
++      }
++#endif
+       rpmdbFreeIterator_p (mi);
+     }
+@@ -945,6 +984,21 @@ missing_rpm_enlist (const char *filename
+ }
+ static int
++#ifdef GDB_INDEX_VERIFY_VENDOR
++missing_rpm_enlist (const char *filename)
++{
++  return missing_rpm_enlist_1 (filename, 0);
++}
++
++extern int rpm_verify_vendor (const char *filename);
++int
++rpm_verify_vendor (const char *filename)
++{
++  return missing_rpm_enlist_1 (filename, 1);
++}
++
++static int
++#endif
+ missing_rpm_list_compar (const char *const *ap, const char *const *bp)
+ {
+   return strcoll (*ap, *bp);
+diff -dup -rup gdb-7.10.50.20160106-orig/gdb/dwarf2read.c gdb-7.10.50.20160106/gdb/dwarf2read.c
+--- gdb-7.10.50.20160106-orig/gdb/dwarf2read.c 2016-01-09 14:40:39.416385216 +0100
++++ gdb-7.10.50.20160106/gdb/dwarf2read.c      2016-01-09 14:41:05.942549381 +0100
+@@ -3111,6 +3111,16 @@ read_index_from_section (struct objfile
+      "set use-deprecated-index-sections on".  */
+   if (version < 6 && !deprecated_ok)
+     {
++#ifdef GDB_INDEX_VERIFY_VENDOR
++      extern int rpm_verify_vendor (const char *filename);
++
++      /* Red Hat Developer Toolset exception.  */
++      if (rpm_verify_vendor (filename))
++      {}
++      else
++      {
++
++#endif
+       static int warning_printed = 0;
+       if (!warning_printed)
+       {
+@@ -3122,6 +3132,10 @@ to use the section anyway."),
+         warning_printed = 1;
+       }
+       return 0;
++#ifdef GDB_INDEX_VERIFY_VENDOR
++
++      }
++#endif
+     }
+   /* Version 7 indices generated by gold refer to the CU for a symbol instead
+      of the TU (for symbols coming from TUs),
This page took 0.450129 seconds and 4 git commands to generate.