]> git.pld-linux.org Git - packages/gdb.git/blobdiff - gdb-6.6-buildid-locate-rpm.patch
- fix build on x32
[packages/gdb.git] / gdb-6.6-buildid-locate-rpm.patch
index 8289baea03558660c0101c56acdd5d21939241e2..56ce7db2b336b9772be5608d764366874c8d57d2 100644 (file)
-Index: gdb-7.6/gdb/event-top.c
+Index: gdb-7.11.50.20160630/gdb/event-top.c
 ===================================================================
---- gdb-7.6.orig/gdb/event-top.c       2013-01-31 19:37:37.000000000 +0100
-+++ gdb-7.6/gdb/event-top.c    2013-07-17 19:51:02.679357656 +0200
-@@ -36,6 +36,7 @@
- #include "continuations.h"
- #include "gdbcmd.h"           /* for dont_repeat() */
- #include "annotate.h"
+--- gdb-7.11.50.20160630.orig/gdb/event-top.c  2016-07-02 23:43:24.085214144 +0200
++++ gdb-7.11.50.20160630/gdb/event-top.c       2016-07-03 14:37:12.572130734 +0200
+@@ -40,6 +40,7 @@
+ #include "buffer.h"
+ #include "ser-event.h"
+ #include "gdb_select.h"
 +#include "symfile.h"
  
  /* readline include files.  */
  #include "readline/readline.h"
-@@ -170,6 +171,8 @@ rl_callback_read_char_wrapper (gdb_clien
- void
- cli_command_loop (void)
- {
-+  debug_flush_missing ();
-+
-   display_gdb_prompt (0);
-   /* Now it's time to start the event loop.  */
-@@ -237,6 +240,8 @@ display_gdb_prompt (char *new_prompt)
+@@ -347,6 +348,8 @@
    /* 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-7.6/gdb/elfread.c
-===================================================================
---- gdb-7.6.orig/gdb/elfread.c 2013-07-17 19:51:02.639357629 +0200
-+++ gdb-7.6/gdb/elfread.c      2013-07-17 19:51:50.738390068 +0200
-@@ -49,6 +49,7 @@
- #include "gdbcore.h"
- #include "gdbcmd.h"
- #include "observer.h"
-+#include "elf/external.h"
- #include <sys/stat.h>
+   old_chain = make_cleanup (free_current_contents, &actual_gdb_prompt);
+   /* Do not call the python hook on an explicit prompt change as
+@@ -794,7 +797,10 @@
+       command_handler (cmd);
  
- extern void _initialize_elfread (void);
-@@ -1682,8 +1683,360 @@ build_id_to_filename (const struct elf_b
-   return retval;
+       if (ui->prompt_state != PROMPTED)
+-      display_gdb_prompt (0);
++      {
++        debug_flush_missing ();
++        display_gdb_prompt (0);
++      }
+     }
  }
  
-+#ifdef HAVE_LIBRPM
-+
-+#include <rpm/rpmlib.h>
-+#include <rpm/rpmts.h>
-+#include <rpm/rpmdb.h>
-+#include <rpm/header.h>
-+#ifdef DLOPEN_LIBRPM
-+#include <dlfcn.h>
-+#endif
-+
-+/* 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;
+Index: gdb-7.11.50.20160630/gdb/symfile.h
+===================================================================
+--- gdb-7.11.50.20160630.orig/gdb/symfile.h    2016-07-03 14:34:32.032753668 +0200
++++ gdb-7.11.50.20160630/gdb/symfile.h 2016-07-03 14:37:12.573130742 +0200
+@@ -592,6 +592,8 @@
+ /* 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);
++extern void debug_flush_missing (void);
++#define BUILD_ID_MAIN_EXECUTABLE_FILENAME _("the main executable file")
+ /* From dwarf2read.c */
+Index: gdb-7.11.50.20160630/gdb/aclocal.m4
+===================================================================
+--- gdb-7.11.50.20160630.orig/gdb/aclocal.m4   2016-07-02 23:43:24.085214144 +0200
++++ gdb-7.11.50.20160630/gdb/aclocal.m4        2016-07-03 14:37:12.576130768 +0200
+@@ -11,6 +11,221 @@
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ # PARTICULAR PURPOSE.
++# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
++# serial 1 (pkg-config-0.24)
++# 
++# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++#
++# As a special exception to the GNU General Public License, if you
++# distribute this file as part of a program that contains a
++# configuration script generated by Autoconf, you may include it under
++# the same distribution terms that you use for the rest of that program.
 +
-+/* 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).
-+   */
++# PKG_PROG_PKG_CONFIG([MIN-VERSION])
++# ----------------------------------
++AC_DEFUN([PKG_PROG_PKG_CONFIG],
++[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
++m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
++m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
++AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
++AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
++AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
 +
-+struct missing_rpm
-+  {
-+    struct missing_rpm *next;
-+    char rpm[1];
-+  };
-+static struct missing_rpm *missing_rpm_list;
-+static int missing_rpm_list_entries;
++if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
++      AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
++fi
++if test -n "$PKG_CONFIG"; then
++      _pkg_min_version=m4_default([$1], [0.9.0])
++      AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
++      if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
++              AC_MSG_RESULT([yes])
++      else
++              AC_MSG_RESULT([no])
++              PKG_CONFIG=""
++      fi
++fi[]dnl
++])# PKG_PROG_PKG_CONFIG
 +
-+/* Returns the count of newly added rpms.  */
++# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
++#
++# Check to see whether a particular set of modules exists.  Similar
++# to PKG_CHECK_MODULES(), but does not set variables or print errors.
++#
++# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++# only at the first occurence in configure.ac, so if the first place
++# it's called might be skipped (such as if it is within an "if", you
++# have to call PKG_CHECK_EXISTS manually
++# --------------------------------------------------------------
++AC_DEFUN([PKG_CHECK_EXISTS],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++if test -n "$PKG_CONFIG" && \
++    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
++  m4_default([$2], [:])
++m4_ifvaln([$3], [else
++  $3])dnl
++fi])
 +
-+static int
-+missing_rpm_enlist (const char *filename)
-+{
-+  static int rpm_init_done = 0;
-+  rpmts ts;
-+  rpmdbMatchIterator mi;
-+  int count = 0;
++# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
++# ---------------------------------------------
++m4_define([_PKG_CONFIG],
++[if test -n "$$1"; then
++    pkg_cv_[]$1="$$1"
++ elif test -n "$PKG_CONFIG"; then
++    PKG_CHECK_EXISTS([$3],
++                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
++                    test "x$?" != "x0" && pkg_failed=yes ],
++                   [pkg_failed=yes])
++ else
++    pkg_failed=untried
++fi[]dnl
++])# _PKG_CONFIG
 +
-+#ifdef DLOPEN_LIBRPM
-+  /* Duplicate here the declarations to verify they match.  The same sanity
-+     check is present also in `configure.ac'.  */
-+  extern char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg);
-+  static char *(*headerFormat_p) (Header h, const char * fmt, errmsg_t *errmsg);
-+  extern int rpmReadConfigFiles(const char * file, const char * target);
-+  static int (*rpmReadConfigFiles_p) (const char * file, const char * target);
-+  extern rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi);
-+  static rpmdbMatchIterator (*rpmdbFreeIterator_p) (rpmdbMatchIterator mi);
-+  extern Header rpmdbNextIterator(rpmdbMatchIterator mi);
-+  static Header (*rpmdbNextIterator_p) (rpmdbMatchIterator mi);
-+  extern rpmts rpmtsCreate(void);
-+  static rpmts (*rpmtsCreate_p) (void);
-+  extern rpmts rpmtsFree(rpmts ts);
-+  static rpmts (*rpmtsFree_p) (rpmts ts);
-+  extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
-+                                              const void * keyp, size_t keylen);
-+  static rpmdbMatchIterator (*rpmtsInitIterator_p) (const rpmts ts,
-+                                                  rpmTag rpmtag,
-+                                                  const void *keyp,
-+                                                  size_t keylen);
-+#else /* !DLOPEN_LIBRPM */
-+# define headerFormat_p headerFormat
-+# define rpmReadConfigFiles_p rpmReadConfigFiles
-+# define rpmdbFreeIterator_p rpmdbFreeIterator
-+# define rpmdbNextIterator_p rpmdbNextIterator
-+# define rpmtsCreate_p rpmtsCreate
-+# define rpmtsFree_p rpmtsFree
-+# define rpmtsInitIterator_p rpmtsInitIterator
-+#endif        /* !DLOPEN_LIBRPM */
++# _PKG_SHORT_ERRORS_SUPPORTED
++# -----------------------------
++AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
++        _pkg_short_errors_supported=yes
++else
++        _pkg_short_errors_supported=no
++fi[]dnl
++])# _PKG_SHORT_ERRORS_SUPPORTED
 +
-+  gdb_assert (filename != NULL);
 +
-+  if (strcmp (filename, BUILD_ID_MAIN_EXECUTABLE_FILENAME) == 0)
-+    return 0;
++# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
++# [ACTION-IF-NOT-FOUND])
++#
++#
++# Note that if there is a possibility the first call to
++# PKG_CHECK_MODULES might not happen, you should be sure to include an
++# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
++#
++#
++# --------------------------------------------------------------
++AC_DEFUN([PKG_CHECK_MODULES],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
++AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
 +
-+  if (filename[0] != '/')
-+    {
-+      warning (_("Ignoring non-absolute filename: <%s>"), filename);
-+      return 0;
-+    }
++pkg_failed=no
++AC_MSG_CHECKING([for $1])
 +
-+  if (!rpm_init_done)
-+    {
-+      static int init_tried;
++_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
++_PKG_CONFIG([$1][_LIBS], [libs], [$2])
 +
-+      /* Already failed the initialization before?  */
-+      if (init_tried)
-+              return 0;
-+      init_tried = 1;
++m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
++and $1[]_LIBS to avoid the need to call pkg-config.
++See the pkg-config man page for more details.])
 +
-+#ifdef DLOPEN_LIBRPM
-+      {
-+      void *h;
++if test $pkg_failed = yes; then
++      AC_MSG_RESULT([no])
++        _PKG_SHORT_ERRORS_SUPPORTED
++        if test $_pkg_short_errors_supported = yes; then
++              $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
++        else 
++              $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
++        fi
++      # Put the nasty error message in config.log where it belongs
++      echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
 +
-+      h = dlopen (DLOPEN_LIBRPM, RTLD_LAZY);
-+      if (!h)
-+        {
-+          warning (_("Unable to open \"%s\" (%s), "
-+                    "missing debuginfos notifications will not be displayed"),
-+                   DLOPEN_LIBRPM, dlerror ());
-+          return 0;
-+        }
++      m4_default([$4], [AC_MSG_ERROR(
++[Package requirements ($2) were not met:
 +
-+      if (!((headerFormat_p = dlsym (h, "headerFormat"))
-+            && (rpmReadConfigFiles_p = dlsym (h, "rpmReadConfigFiles"))
-+            && (rpmdbFreeIterator_p = dlsym (h, "rpmdbFreeIterator"))
-+            && (rpmdbNextIterator_p = dlsym (h, "rpmdbNextIterator"))
-+            && (rpmtsCreate_p = dlsym (h, "rpmtsCreate"))
-+            && (rpmtsFree_p = dlsym (h, "rpmtsFree"))
-+            && (rpmtsInitIterator_p = dlsym (h, "rpmtsInitIterator"))))
-+        {
-+          warning (_("Opened library \"%s\" is incompatible (%s), "
-+                    "missing debuginfos notifications will not be displayed"),
-+                   DLOPEN_LIBRPM, dlerror ());
-+          if (dlclose (h))
-+            warning (_("Error closing library \"%s\": %s\n"), DLOPEN_LIBRPM,
-+                     dlerror ());
-+          return 0;
-+        }
-+      }
-+#endif        /* DLOPEN_LIBRPM */
++$$1_PKG_ERRORS
 +
-+      if (rpmReadConfigFiles_p (NULL, NULL) != 0)
-+      {
-+        warning (_("Error reading the rpm configuration files"));
-+        return 0;
-+      }
++Consider adjusting the PKG_CONFIG_PATH environment variable if you
++installed software in a non-standard prefix.
 +
-+      rpm_init_done = 1;
-+    }
++_PKG_TEXT])[]dnl
++        ])
++elif test $pkg_failed = untried; then
++      AC_MSG_RESULT([no])
++      m4_default([$4], [AC_MSG_FAILURE(
++[The pkg-config script could not be found or is too old.  Make sure it
++is in your PATH or set the PKG_CONFIG environment variable to the full
++path to pkg-config.
 +
-+  ts = rpmtsCreate_p ();
++_PKG_TEXT
 +
-+  mi = rpmtsInitIterator_p (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;
++To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
++        ])
++else
++      $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
++      $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
++        AC_MSG_RESULT([yes])
++      $3
++fi[]dnl
++])# PKG_CHECK_MODULES
 +
-+        h = rpmdbNextIterator_p (mi);
-+        if (h == NULL)
-+          break;
 +
-+        /* Verify the debuginfo file is not already installed.  */
++# PKG_INSTALLDIR(DIRECTORY)
++# -------------------------
++# Substitutes the variable pkgconfigdir as the location where a module
++# should install pkg-config .pc files. By default the directory is
++# $libdir/pkgconfig, but the default can be changed by passing
++# DIRECTORY. The user can override through the --with-pkgconfigdir
++# parameter.
++AC_DEFUN([PKG_INSTALLDIR],
++[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
++m4_pushdef([pkg_description],
++    [pkg-config installation directory @<:@]pkg_default[@:>@])
++AC_ARG_WITH([pkgconfigdir],
++    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
++    [with_pkgconfigdir=]pkg_default)
++AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
++m4_popdef([pkg_default])
++m4_popdef([pkg_description])
++]) dnl PKG_INSTALLDIR
++
++
++# PKG_NOARCH_INSTALLDIR(DIRECTORY)
++# -------------------------
++# Substitutes the variable noarch_pkgconfigdir as the location where a
++# module should install arch-independent pkg-config .pc files. By
++# default the directory is $datadir/pkgconfig, but the default can be
++# changed by passing DIRECTORY. The user can override through the
++# --with-noarch-pkgconfigdir parameter.
++AC_DEFUN([PKG_NOARCH_INSTALLDIR],
++[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
++m4_pushdef([pkg_description],
++    [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
++AC_ARG_WITH([noarch-pkgconfigdir],
++    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
++    [with_noarch_pkgconfigdir=]pkg_default)
++AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
++m4_popdef([pkg_default])
++m4_popdef([pkg_description])
++]) dnl PKG_NOARCH_INSTALLDIR
++
++
++# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
++# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
++# -------------------------------------------
++# Retrieves the value of the pkg-config variable for the given module.
++AC_DEFUN([PKG_CHECK_VAR],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
 +
-+        debuginfo = headerFormat_p (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}' */
++_PKG_CONFIG([$1], [variable="][$3]["], [$2])
++AS_VAR_COPY([$1], [pkg_cv_][$1])
 +
-+        /* RPMDBI_PACKAGES requires keylen == sizeof (int).  */
-+        /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel().  */
-+        mi_debuginfo = rpmtsInitIterator_p (ts, RPMDBI_LABEL, debuginfo, 0);
-+        xfree (debuginfo);
-+        if (mi_debuginfo)
-+          {
-+            rpmdbFreeIterator_p (mi_debuginfo);
-+            count = 0;
-+            break;
-+          }
++AS_VAR_IF([$1], [""], [$5], [$4])dnl
++])# PKG_CHECK_VAR
 +
-+        /* The allocated memory gets utilized below for MISSING_RPM_HASH.  */
-+        debuginfo = headerFormat_p (h,
-+                                    "%{name}-%{version}-%{release}.%{arch}",
-+                                    &err);
-+        if (!debuginfo)
-+          {
-+            warning (_("Error querying the rpm file `%s': %s"), filename,
-+                     err);
-+            continue;
-+          }
+ # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+ # Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+Index: gdb-7.11.50.20160630/gdb/config.in
+===================================================================
+--- gdb-7.11.50.20160630.orig/gdb/config.in    2016-07-02 23:43:24.085214144 +0200
++++ gdb-7.11.50.20160630/gdb/config.in 2016-07-03 14:37:12.576130768 +0200
+@@ -33,6 +33,9 @@
+ /* Define to BFD's default target vector. */
+ #undef DEFAULT_BFD_VEC
++/* librpm version specific library name to dlopen. */
++#undef DLOPEN_LIBRPM
 +
-+        /* Base package name for `debuginfo-install'.  We do not use the
-+           `yum' command directly as the line
-+               yum --enablerepo='*debug*' 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.  */
+ /* Define to 1 if translation of program messages to the user's native
+    language is requested. */
+ #undef ENABLE_NLS
+@@ -261,6 +264,9 @@
+ /* Define if Python 2.7 is being used. */
+ #undef HAVE_LIBPYTHON2_7
++/* Define if librpm library is being used. */
++#undef HAVE_LIBRPM
 +
-+        if (missing_rpm_hash == NULL)
-+          {
-+            /* DEL_F is passed NULL as MISSING_RPM_LIST's HTAB_DELETE
-+               should not deallocate the entries.  */
+ /* Define to 1 if you have the <libunwind-ia64.h> header file. */
+ #undef HAVE_LIBUNWIND_IA64_H
+Index: gdb-7.11.50.20160630/gdb/configure
+===================================================================
+--- gdb-7.11.50.20160630.orig/gdb/configure    2016-07-02 23:43:24.085214144 +0200
++++ gdb-7.11.50.20160630/gdb/configure 2016-07-03 14:37:12.581130811 +0200
+@@ -705,6 +705,11 @@
+ HAVE_NATIVE_GCORE_TARGET
+ TARGET_OBS
+ subdirs
++RPM_LIBS
++RPM_CFLAGS
++PKG_CONFIG_LIBDIR
++PKG_CONFIG_PATH
++PKG_CONFIG
+ GDB_DATADIR
+ DEBUGDIR
+ MAKEINFO_EXTRA_FLAGS
+@@ -814,6 +819,7 @@
+ with_relocated_sources
+ with_auto_load_dir
+ with_auto_load_safe_path
++with_rpm
+ enable_targets
+ enable_64_bit_bfd
+ enable_gdbcli
+@@ -870,6 +876,11 @@
+ CPP
+ MAKEINFO
+ MAKEINFOFLAGS
++PKG_CONFIG
++PKG_CONFIG_PATH
++PKG_CONFIG_LIBDIR
++RPM_CFLAGS
++RPM_LIBS
+ YACC
+ YFLAGS
+ XMKMF'
+@@ -1541,6 +1552,8 @@
+                           [--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-libunwind-ia64   use libunwind frame unwinding for ia64 targets
+   --with-curses           use the curses library instead of the termcap
+                           library
+@@ -1595,6 +1608,13 @@
+   MAKEINFO    Parent configure detects if it is of sufficient version.
+   MAKEINFOFLAGS
+               Parameters for MAKEINFO.
++  PKG_CONFIG  path to pkg-config utility
++  PKG_CONFIG_PATH
++              directories to add to pkg-config's search path
++  PKG_CONFIG_LIBDIR
++              path overriding pkg-config's built-in search path
++  RPM_CFLAGS  C compiler flags for RPM, overriding pkg-config
++  RPM_LIBS    linker flags for RPM, overriding pkg-config
+   YACC        The `Yet Another C Compiler' implementation to use. Defaults to
+               the first program found out of: `bison -y', `byacc', `yacc'.
+   YFLAGS      The list of arguments that will be passed by default to $YACC.
+@@ -5613,6 +5633,494 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5
+ $as_echo "$with_auto_load_safe_path" >&6; }
++# Integration with rpm library to support missing debuginfo suggestions.
++# --without-rpm: Disable any rpm support.
++# --with-rpm=libname.so: Try to dynamically open `libname.so' during runtime.
++#   Even with runtime missing `libname.so' GDB will still other run correctly.
++#   Missing `libname.so' during ./configure will abort the configuration.
++# --with-rpm=librpm.so: Like `--with-rpm=libname.so' but try to find specific
++#   minor version first such as `librpm-4.6.so' as minor version differences
++#   mean API+ABI incompatibility.  If the specific match versioned library name
++#   could not be found still open dynamically at least `librpm.so'.
++# --with-rpm: Like `--with-rpm=librpm.so' but if any of its detection fails try
++#   to find librpm for compilation-time linking by pkg-config.  GDB binary will
++#   be probably linked with the version specific library (as `librpm-4.6.so').
++#   Failure to find librpm by pkg-config will abort the configuration.
++# (default) --with-rpm=auto: Like `--with-rpm=librpm.so' but if even pkg-config
++#   cannot find librpm use to the rpmless compilation (like `--without-rpm').
 +
-+            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;
++# Check whether --with-rpm was given.
++if test "${with_rpm+set}" = set; then :
++  withval=$with_rpm;
++else
++  with_rpm="auto"
++fi
 +
-+            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_p (mi);
-+    }
 +
-+  rpmtsFree_p (ts);
 +
-+  return count;
-+}
++if test "x$with_rpm" != "xno"; then
++  if test "x$with_rpm" = "xyes"; then
++    LIBRPM="librpm.so"
++    RPM_REQUIRE=true
++    DLOPEN_REQUIRE=false
++  elif test "x$with_rpm" = "xauto"; then
++    LIBRPM="librpm.so"
++    RPM_REQUIRE=false
++    DLOPEN_REQUIRE=false
++  else
++    LIBRPM="$with_rpm"
++    RPM_REQUIRE=true
++    DLOPEN_REQUIRE=true
++  fi
++  LIBRPM_STRING='"'"$LIBRPM"'"'
 +
-+static int
-+missing_rpm_list_compar (const char *const *ap, const char *const *bp)
-+{
-+  return strcoll (*ap, *bp);
-+}
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking specific librpm version" >&5
++$as_echo_n "checking specific librpm version... " >&6; }
++  HAVE_DLOPEN_LIBRPM=false
++  save_LIBS="$LIBS"
++  LIBS="$LIBS -ldl"
++  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; }
++else
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
 +
-+/* It returns a NULL-terminated array of strings needing to be FREEd.  It may
-+   also return only NULL.  */
++#include <rpm/rpmlib.h>
++#include <dlfcn.h>
++#include <errno.h>
 +
-+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;
++int
++main ()
++{
 +
-+  array = xmalloc (sizeof (*array) * missing_rpm_list_entries);
-+  cleanups = make_cleanup (xfree, array);
++    void *h;
++    const char *const *rpmverp;
++    FILE *f;
 +
-+  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);
++    f = fopen ("conftest.out", "w");
++    if (!f)
++      {
++      fprintf (stderr, "Cannot write \"%s\": %s\n", "conftest.out",
++               strerror (errno));
++      return 1;
++      }
++    h = dlopen ($LIBRPM_STRING, RTLD_LAZY);
++    if (!h)
++      {
++      fprintf (stderr, "dlopen (\"%s\"): %s\n", $LIBRPM_STRING, dlerror ());
++      return 1;
++      }
++    rpmverp = dlsym (h, "RPMVERSION");
++    if (!rpmverp)
++      {
++      fprintf (stderr, "dlsym (\"RPMVERSION\"): %s\n", dlerror ());
++      return 1;
++      }
++    fprintf (stderr, "RPMVERSION is: \"");
++    fprintf (stderr, "%s\"\n", *rpmverp);
 +
-+  qsort (array, missing_rpm_list_entries, sizeof (*array),
-+       (int (*) (const void *, const void *)) missing_rpm_list_compar);
++    /* Try to find the specific librpm version only for "librpm.so" as we do
++       not know how to assemble the version string otherwise.  */
 +
-+  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');
++    if (strcmp ("librpm.so", $LIBRPM_STRING) != 0)
++      {
++      fprintf (f, "%s\n", $LIBRPM_STRING);
++      return 0;
++      }
++    else
++      {
++      char *h2_name;
++      void *h2;
++      int major, minor;
 +
-+  while (missing_rpm_list != NULL)
-+    {
-+      list_iter = missing_rpm_list;
-+      missing_rpm_list = list_iter->next;
-+      xfree (list_iter);
-+    }
-+  missing_rpm_list_entries = 0;
++      if (sscanf (*rpmverp, "%d.%d", &major, &minor) != 2)
++        {
++          fprintf (stderr, "Unable to parse RPMVERSION.\n");
++          fprintf (f, "%s\n", $LIBRPM_STRING);
++          return 0;
++        }
++      /* Avoid the square brackets by malloc.  */
++      h2_name = malloc (64);
++      sprintf (h2_name, "librpm-%d.%d.so", major, minor);
++      h2 = dlopen (h2_name, RTLD_LAZY);
++      if (!h2)
++        {
++          fprintf (stderr, "dlopen (\"%s\"): %s\n", h2_name, dlerror ());
++          fprintf (f, "%s\n", $LIBRPM_STRING);
++          return 0;
++        }
++      if (h2 != h)
++        {
++          fprintf (stderr, "dlopen of \"%s\" and \"%s\" are different.\n",
++                   $LIBRPM_STRING, h2_name);
++          fprintf (f, "%s\n", $LIBRPM_STRING);
++          return 0;
++        }
++      /* Found the valid .so name with a specific version.  */
++      fprintf (f, "%s\n", h2_name);
++      return 0;
++      }
 +
-+  do_cleanups (cleanups);
++  ;
++  return 0;
 +}
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
 +
-+static void
-+missing_rpm_change (void)
-+{
-+  debug_flush_missing ();
++    DLOPEN_LIBRPM="`cat conftest.out`"
++    if test "x$DLOPEN_LIBRPM" != "x"; then
++      HAVE_DLOPEN_LIBRPM=true
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLOPEN_LIBRPM" >&5
++$as_echo "$DLOPEN_LIBRPM" >&6; }
++    fi
 +
-+  gdb_assert (missing_rpm_list == NULL);
-+  if (missing_rpm_hash != NULL)
-+    {
-+      htab_delete (missing_rpm_hash);
-+      missing_rpm_hash = NULL;
-+    }
-+}
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++  conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
 +
-+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;
++  rm -f conftest.out
 +
-+#endif        /* HAVE_LIBRPM */
 +
-+void
-+debug_flush_missing (void)
++
++  if $HAVE_DLOPEN_LIBRPM; then
++
++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking rpm library API compatibility" >&5
++$as_echo_n "checking rpm library API compatibility... " >&6; }
++    # The compilation requires -Werror to verify anything.
++    save_CFLAGS="$CFLAGS"
++    CFLAGS="$CFLAGS -Werror"
++    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++/* Duplicate here the declarations to verify they match "elfread.c".  */
++#include <rpm/rpmlib.h>
++#include <rpm/rpmts.h>
++#include <rpm/rpmdb.h>
++#include <rpm/header.h>
++extern char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg);
++extern int rpmReadConfigFiles(const char * file, const char * target);
++extern rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi);
++extern Header rpmdbNextIterator(rpmdbMatchIterator mi);
++extern rpmts rpmtsCreate(void);
++extern rpmts rpmtsFree(rpmts ts);
++extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
++                                          const void * keyp, size_t keylen);
++
++int
++main ()
 +{
-+#ifdef HAVE_LIBRPM
-+  missing_rpm_list_print ();
-+#endif
++
++  ;
++  return 0;
 +}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
 +
- /* This MISSING_FILEPAIR_HASH tracker is used only for the duplicite messages
--     Try to install the hash file ...
-+     yum --enablerepo='*debug*' install ...
-    avoidance.  */
- struct missing_filepair
-@@ -1737,11 +2090,17 @@ missing_filepair_change (void)
-       /* All their memory came just from missing_filepair_OBSTACK.  */
-       missing_filepair_hash = NULL;
-     }
-+#ifdef HAVE_LIBRPM
-+  missing_exec = MISSING_EXEC_NOT_TRIED;
-+#endif
- }
- static void
- debug_print_executable_changed (void)
- {
-+#ifdef HAVE_LIBRPM
-+  missing_rpm_change ();
-+#endif
-   missing_filepair_change ();
- }
-@@ -1808,14 +2167,34 @@ 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.  */
-+#ifdef HAVE_LIBRPM
-+  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 to install the hash file %s\n"),
--                      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 ((binary[0] == 0 || missing_rpm_enlist (binary) == 0)
-+      && (debug == NULL || missing_rpm_enlist (debug) == 0))
-+#endif        /* HAVE_LIBRPM */
-+      {
-+      /* We do not collect and flush these messages as each such message
-+         already requires its own separate lines.  */
++      LIBRPM_COMPAT=true
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
 +
-+      fprintf_unfiltered (gdb_stdlog,
-+                          _("Missing separate debuginfo for %s\n"), binary);
-+        if (debug != NULL)
-+        fprintf_unfiltered (gdb_stdlog, _("Try: %s %s\n"),
-+                            "yum --enablerepo='*debug*' install", debug);
-+      }
- }
- static char *
-Index: gdb-7.6/gdb/symfile.h
-===================================================================
---- gdb-7.6.orig/gdb/symfile.h 2013-07-17 19:51:02.639357629 +0200
-+++ gdb-7.6/gdb/symfile.h      2013-07-17 19:51:02.687357661 +0200
-@@ -598,6 +598,8 @@ extern struct elf_build_id *build_id_add
- extern char *build_id_to_filename (const struct elf_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);
-+#define BUILD_ID_MAIN_EXECUTABLE_FILENAME _("the main executable file")
- /* From dwarf2read.c */
-Index: gdb-7.6/gdb/testsuite/lib/gdb.exp
-===================================================================
---- gdb-7.6.orig/gdb/testsuite/lib/gdb.exp     2013-07-17 19:51:02.640357629 +0200
-+++ gdb-7.6/gdb/testsuite/lib/gdb.exp  2013-07-17 19:51:02.688357662 +0200
-@@ -1482,7 +1482,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 $" {
-Index: gdb-7.6/gdb/testsuite/lib/mi-support.exp
-===================================================================
---- gdb-7.6.orig/gdb/testsuite/lib/mi-support.exp      2013-07-17 19:51:02.656357640 +0200
-+++ gdb-7.6/gdb/testsuite/lib/mi-support.exp   2013-07-17 19:51:02.689357663 +0200
-@@ -212,7 +212,7 @@ proc default_mi_gdb_start { args } {
-           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 "190-gdb-set build-id-verbose 0\n"
-     gdb_expect 10 {
-       -re ".*190-gdb-set build-id-verbose 0\r\n190\\\^done\r\n$mi_gdb_prompt$" {
-Index: gdb-7.6/gdb/tui/tui-interp.c
-===================================================================
---- gdb-7.6.orig/gdb/tui/tui-interp.c  2013-01-01 07:41:30.000000000 +0100
-+++ gdb-7.6/gdb/tui/tui-interp.c       2013-07-17 19:51:02.689357663 +0200
-@@ -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.  */
-Index: gdb-7.6/gdb/aclocal.m4
-===================================================================
---- gdb-7.6.orig/gdb/aclocal.m4        2013-01-17 12:06:26.000000000 +0100
-+++ gdb-7.6/gdb/aclocal.m4     2013-07-17 19:51:02.689357663 +0200
-@@ -11,6 +11,164 @@
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
-+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
-+# serial 1 (pkg-config-0.24)
-+# 
-+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
-+#
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful, but
-+# WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+# General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+#
-+# As a special exception to the GNU General Public License, if you
-+# distribute this file as part of a program that contains a
-+# configuration script generated by Autoconf, you may include it under
-+# the same distribution terms that you use for the rest of that program.
++else
 +
-+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-+# ----------------------------------
-+AC_DEFUN([PKG_PROG_PKG_CONFIG],
-+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
-+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
-+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
-+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
++      LIBRPM_COMPAT=false
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
 +
-+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-+      AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
 +fi
-+if test -n "$PKG_CONFIG"; then
-+      _pkg_min_version=m4_default([$1], [0.9.0])
-+      AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
-+      if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-+              AC_MSG_RESULT([yes])
-+      else
-+              AC_MSG_RESULT([no])
-+              PKG_CONFIG=""
-+      fi
-+fi[]dnl
-+])# PKG_PROG_PKG_CONFIG
-+
-+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-+#
-+# Check to see whether a particular set of modules exists.  Similar
-+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-+#
-+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-+# only at the first occurence in configure.ac, so if the first place
-+# it's called might be skipped (such as if it is within an "if", you
-+# have to call PKG_CHECK_EXISTS manually
-+# --------------------------------------------------------------
-+AC_DEFUN([PKG_CHECK_EXISTS],
-+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-+if test -n "$PKG_CONFIG" && \
-+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-+  m4_default([$2], [:])
-+m4_ifvaln([$3], [else
-+  $3])dnl
-+fi])
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++    CFLAGS="$save_CFLAGS"
 +
-+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-+# ---------------------------------------------
-+m4_define([_PKG_CONFIG],
-+[if test -n "$$1"; then
-+    pkg_cv_[]$1="$$1"
-+ elif test -n "$PKG_CONFIG"; then
-+    PKG_CHECK_EXISTS([$3],
-+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
-+                   [pkg_failed=yes])
-+ else
-+    pkg_failed=untried
-+fi[]dnl
-+])# _PKG_CONFIG
++    if ! $LIBRPM_COMPAT; then
++      HAVE_DLOPEN_LIBRPM=false
++    fi
++  fi
 +
-+# _PKG_SHORT_ERRORS_SUPPORTED
-+# -----------------------------
-+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-+        _pkg_short_errors_supported=yes
-+else
-+        _pkg_short_errors_supported=no
-+fi[]dnl
-+])# _PKG_SHORT_ERRORS_SUPPORTED
++  if $HAVE_DLOPEN_LIBRPM; then
++    DLOPEN_LIBRPM_STRING='"'"$DLOPEN_LIBRPM"'"'
 +
++cat >>confdefs.h <<_ACEOF
++#define DLOPEN_LIBRPM $DLOPEN_LIBRPM_STRING
++_ACEOF
 +
-+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-+# [ACTION-IF-NOT-FOUND])
-+#
-+#
-+# Note that if there is a possibility the first call to
-+# PKG_CHECK_MODULES might not happen, you should be sure to include an
-+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-+#
-+#
-+# --------------------------------------------------------------
-+AC_DEFUN([PKG_CHECK_MODULES],
-+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
 +
-+pkg_failed=no
-+AC_MSG_CHECKING([for $1])
++$as_echo "#define HAVE_LIBRPM 1" >>confdefs.h
 +
-+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
++  else
++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$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
++    fi
 +
-+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-+and $1[]_LIBS to avoid the need to call pkg-config.
-+See the pkg-config man page for more details.])
 +
-+if test $pkg_failed = yes; then
-+      AC_MSG_RESULT([no])
-+        _PKG_SHORT_ERRORS_SUPPORTED
-+        if test $_pkg_short_errors_supported = yes; then
-+              $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
-+        else 
-+              $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
-+        fi
-+      # Put the nasty error message in config.log where it belongs
-+      echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
 +
-+      m4_default([$4], [AC_MSG_ERROR(
-+[Package requirements ($2) were not met:
 +
-+$$1_PKG_ERRORS
 +
-+Consider adjusting the PKG_CONFIG_PATH environment variable if you
-+installed software in a non-standard prefix.
 +
-+_PKG_TEXT])
-+        ])
-+elif test $pkg_failed = untried; then
-+      AC_MSG_RESULT([no])
-+      m4_default([$4], [AC_MSG_FAILURE(
-+[The pkg-config script could not be found or is too old.  Make sure it
-+is in your PATH or set the PKG_CONFIG environment variable to the full
-+path to pkg-config.
 +
-+_PKG_TEXT
++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
 +
-+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])
-+        ])
++  ;;
++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
-+      $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
-+      $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
-+        AC_MSG_RESULT([yes])
-+      $3
-+fi[]dnl
-+])# PKG_CHECK_MODULES
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
 +
- # AM_CONDITIONAL                                            -*- Autoconf -*-
- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-Index: gdb-7.6/gdb/config.in
-===================================================================
---- gdb-7.6.orig/gdb/config.in 2012-12-09 19:39:58.000000000 +0100
-+++ gdb-7.6/gdb/config.in      2013-07-17 19:51:02.689357663 +0200
-@@ -33,6 +33,9 @@
- /* Define to BFD's default target vector. */
- #undef DEFAULT_BFD_VEC
-+/* librpm version specific library name to dlopen. */
-+#undef DLOPEN_LIBRPM
 +
- /* Define to 1 if translation of program messages to the user's native
-    language is requested. */
- #undef ENABLE_NLS
-@@ -210,6 +213,9 @@
- /* Define if Python 2.7 is being used. */
- #undef HAVE_LIBPYTHON2_7
-+/* Define if librpm library is being used. */
-+#undef HAVE_LIBRPM
++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; }
++
++if test -n "$RPM_CFLAGS"; then
++    pkg_cv_RPM_CFLAGS="$RPM_CFLAGS"
++ elif test -n "$PKG_CONFIG"; then
++    if test -n "$PKG_CONFIG" && \
++    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"rpm\""; } >&5
++  ($PKG_CONFIG --exists --print-errors "rpm") 2>&5
++  ac_status=$?
++  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++  test $ac_status = 0; }; then
++  pkg_cv_RPM_CFLAGS=`$PKG_CONFIG --cflags "rpm" 2>/dev/null`
++                    test "x$?" != "x0" && pkg_failed=yes
++else
++  pkg_failed=yes
++fi
++ else
++    pkg_failed=untried
++fi
++if test -n "$RPM_LIBS"; then
++    pkg_cv_RPM_LIBS="$RPM_LIBS"
++ elif test -n "$PKG_CONFIG"; then
++    if test -n "$PKG_CONFIG" && \
++    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"rpm\""; } >&5
++  ($PKG_CONFIG --exists --print-errors "rpm") 2>&5
++  ac_status=$?
++  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++  test $ac_status = 0; }; then
++  pkg_cv_RPM_LIBS=`$PKG_CONFIG --libs "rpm" 2>/dev/null`
++                    test "x$?" != "x0" && pkg_failed=yes
++else
++  pkg_failed=yes
++fi
++ else
++    pkg_failed=untried
++fi
++
++
++
++if test $pkg_failed = yes; then
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++
++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
++        _pkg_short_errors_supported=yes
++else
++        _pkg_short_errors_supported=no
++fi
++        if test $_pkg_short_errors_supported = yes; then
++              RPM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "rpm" 2>&1`
++        else
++              RPM_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "rpm" 2>&1`
++        fi
++      # Put the nasty error message in config.log where it belongs
++      echo "$RPM_PKG_ERRORS" >&5
++
++      HAVE_LIBRPM=false
++elif test $pkg_failed = untried; then
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++      HAVE_LIBRPM=false
++else
++      RPM_CFLAGS=$pkg_cv_RPM_CFLAGS
++      RPM_LIBS=$pkg_cv_RPM_LIBS
++        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
++      HAVE_LIBRPM=true
++fi
++
++    if $HAVE_LIBRPM; then
++
++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking rpm library API compatibility" >&5
++$as_echo_n "checking rpm library API compatibility... " >&6; }
++    # The compilation requires -Werror to verify anything.
++    save_CFLAGS="$CFLAGS"
++    CFLAGS="$CFLAGS -Werror"
++    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++/* Duplicate here the declarations to verify they match "elfread.c".  */
++#include <rpm/rpmlib.h>
++#include <rpm/rpmts.h>
++#include <rpm/rpmdb.h>
++#include <rpm/header.h>
++extern char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg);
++extern int rpmReadConfigFiles(const char * file, const char * target);
++extern rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi);
++extern Header rpmdbNextIterator(rpmdbMatchIterator mi);
++extern rpmts rpmtsCreate(void);
++extern rpmts rpmtsFree(rpmts ts);
++extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
++                                          const void * keyp, size_t keylen);
++
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++
++      LIBRPM_COMPAT=true
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
++
++else
++
++      LIBRPM_COMPAT=false
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++    CFLAGS="$save_CFLAGS"
++
++      if ! $LIBRPM_COMPAT; then
++      HAVE_LIBRPM=false
++      RPM_PKG_ERRORS="Found $LIBRPM API is incompatibile with this GDB"
++      fi
++    fi
++
++    if $HAVE_LIBRPM; then
++
++$as_echo "#define HAVE_LIBRPM 1" >>confdefs.h
++
++      CFLAGS="$CFLAGS $RPM_CFLAGS"
++      LIBS="$LIBS $RPM_LIBS"
++    else
++      if $RPM_REQUIRE; then
++      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;}
++      fi
++    fi
++  fi
++fi
 +
- /* Define to 1 if you have the <libunwind-ia64.h> header file. */
- #undef HAVE_LIBUNWIND_IA64_H
-Index: gdb-7.6/gdb/configure
-===================================================================
---- gdb-7.6.orig/gdb/configure 2013-07-17 19:51:01.665356963 +0200
-+++ gdb-7.6/gdb/configure      2013-07-17 19:51:02.691357664 +0200
-@@ -686,6 +686,11 @@ PKGVERSION
- HAVE_NATIVE_GCORE_TARGET
- TARGET_OBS
- subdirs
-+RPM_LIBS
-+RPM_CFLAGS
-+PKG_CONFIG_LIBDIR
-+PKG_CONFIG_PATH
-+PKG_CONFIG
- GDB_DATADIR
- DEBUGDIR
- MAKEINFO_EXTRA_FLAGS
-@@ -786,6 +791,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_gdbcli
-@@ -834,6 +840,11 @@ CPPFLAGS
- CPP
- MAKEINFO
- MAKEINFOFLAGS
-+PKG_CONFIG
-+PKG_CONFIG_PATH
-+PKG_CONFIG_LIBDIR
-+RPM_CFLAGS
-+RPM_LIBS
- YACC
- YFLAGS
- XMKMF'
-@@ -1504,6 +1515,8 @@ 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-libunwind-ia64   use libunwind frame unwinding for ia64 targets
-   --with-curses           use the curses library instead of the termcap
-                           library
-@@ -1548,6 +1561,13 @@ Some influential environment variables:
-   MAKEINFO    Parent configure detects if it is of sufficient version.
-   MAKEINFOFLAGS
-               Parameters for MAKEINFO.
-+  PKG_CONFIG  path to pkg-config utility
-+  PKG_CONFIG_PATH
-+              directories to add to pkg-config's search path
-+  PKG_CONFIG_LIBDIR
-+              path overriding pkg-config's built-in search path
-+  RPM_CFLAGS  C compiler flags for RPM, overriding pkg-config
-+  RPM_LIBS    linker flags for RPM, overriding pkg-config
-   YACC        The `Yet Another C Compiler' implementation to use. Defaults to
-               the first program found out of: `bison -y', `byacc', `yacc'.
-   YFLAGS      The list of arguments that will be passed by default to $YACC.
-@@ -5033,6 +5053,491 @@ _ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5
- $as_echo "$with_auto_load_safe_path" >&6; }
+ subdirs="$subdirs testsuite"
+Index: gdb-7.11.50.20160630/gdb/configure.ac
+===================================================================
+--- gdb-7.11.50.20160630.orig/gdb/configure.ac 2016-07-02 23:43:24.085214144 +0200
++++ gdb-7.11.50.20160630/gdb/configure.ac      2016-07-03 14:37:12.582130819 +0200
+@@ -177,6 +177,199 @@
+             [Directories safe to hold auto-loaded files.])
+ AC_MSG_RESULT([$with_auto_load_safe_path])
  
 +# Integration with rpm library to support missing debuginfo suggestions.
 +# --without-rpm: Disable any rpm support.
@@ -785,17 +872,12 @@ Index: gdb-7.6/gdb/configure
 +# (default) --with-rpm=auto: Like `--with-rpm=librpm.so' but if even pkg-config
 +#   cannot find librpm use to the rpmless compilation (like `--without-rpm').
 +
++AC_ARG_WITH([rpm],
++  [AS_HELP_STRING([--with-rpm],
++                  [query rpm database for missing debuginfos (yes/no, def. auto=librpm.so)])], [], [with_rpm="auto"])
 +
-+# Check whether --with-rpm was given.
-+if test "${with_rpm+set}" = set; then :
-+  withval=$with_rpm;
-+else
-+  with_rpm="auto"
-+fi
-+
-+
-+
-+
++m4_pattern_allow([^AC_MSG_ERROR$])
++m4_pattern_allow([^AC_MSG_WARN$])
 +if test "x$with_rpm" != "xno"; then
 +  if test "x$with_rpm" = "xyes"; then
 +    LIBRPM="librpm.so"
@@ -812,28 +894,15 @@ Index: gdb-7.6/gdb/configure
 +  fi
 +  LIBRPM_STRING='"'"$LIBRPM"'"'
 +
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking specific librpm version" >&5
-+$as_echo_n "checking specific librpm version... " >&6; }
++  AC_MSG_CHECKING([specific librpm version])
 +  HAVE_DLOPEN_LIBRPM=false
 +  save_LIBS="$LIBS"
 +  LIBS="$LIBS -ldl"
-+  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; }
-+else
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
++  AC_RUN_IFELSE(AC_LANG_PROGRAM([[
 +#include <rpm/rpmlib.h>
 +#include <dlfcn.h>
 +#include <errno.h>
-+
-+int
-+main ()
-+{
-+
++  ]], [[
 +    void *h;
 +    const char *const *rpmverp;
 +    FILE *f;
@@ -901,39 +970,21 @@ Index: gdb-7.6/gdb/configure
 +      fprintf (f, "%s\n", h2_name);
 +      return 0;
 +      }
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+
++  ]]), [
 +    DLOPEN_LIBRPM="`cat conftest.out`"
 +    if test "x$DLOPEN_LIBRPM" != "x"; then
 +      HAVE_DLOPEN_LIBRPM=true
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLOPEN_LIBRPM" >&5
-+$as_echo "$DLOPEN_LIBRPM" >&6; }
++      AC_MSG_RESULT($DLOPEN_LIBRPM)
 +    fi
-+
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+  conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
++  ])
 +  rm -f conftest.out
 +
-+
-+
-+  if $HAVE_DLOPEN_LIBRPM; then
-+
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking rpm library API compatibility" >&5
-+$as_echo_n "checking rpm library API compatibility... " >&6; }
++  m4_define([CHECK_LIBRPM_COMPAT], [
++    AC_MSG_CHECKING([rpm library API compatibility])
 +    # The compilation requires -Werror to verify anything.
 +    save_CFLAGS="$CFLAGS"
 +    CFLAGS="$CFLAGS -Werror"
-+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
++    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[
 +/* Duplicate here the declarations to verify they match "elfread.c".  */
 +#include <rpm/rpmlib.h>
 +#include <rpm/rpmts.h>
@@ -947,31 +998,18 @@ Index: gdb-7.6/gdb/configure
 +extern rpmts rpmtsFree(rpmts ts);
 +extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
 +                                          const void * keyp, size_t keylen);
-+
-+int
-+main ()
-+{
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+
++    ]]), [
 +      LIBRPM_COMPAT=true
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-+$as_echo "yes" >&6; }
-+
-+else
-+
++      AC_MSG_RESULT(yes)
++    ], [
 +      LIBRPM_COMPAT=false
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++      AC_MSG_RESULT(no)
++    ])
 +    CFLAGS="$save_CFLAGS"
++  ])
 +
++  if $HAVE_DLOPEN_LIBRPM; then
++    CHECK_LIBRPM_COMPAT
 +    if ! $LIBRPM_COMPAT; then
 +      HAVE_DLOPEN_LIBRPM=false
 +    fi
@@ -979,498 +1017,496 @@ Index: gdb-7.6/gdb/configure
 +
 +  if $HAVE_DLOPEN_LIBRPM; then
 +    DLOPEN_LIBRPM_STRING='"'"$DLOPEN_LIBRPM"'"'
-+
-+cat >>confdefs.h <<_ACEOF
-+#define DLOPEN_LIBRPM $DLOPEN_LIBRPM_STRING
-+_ACEOF
-+
-+
-+$as_echo "#define HAVE_LIBRPM 1" >>confdefs.h
-+
++    AC_DEFINE_UNQUOTED(DLOPEN_LIBRPM, $DLOPEN_LIBRPM_STRING, [librpm version specific library name to dlopen.])
++    AC_DEFINE(HAVE_LIBRPM, 1, [Define if librpm library is being used.])
 +  else
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
++    AC_MSG_RESULT(no)
 +    LIBS="$save_LIBS"
 +    if $DLOPEN_REQUIRE; then
-+      as_fn_error "Specific name $LIBRPM was requested but it could not be opened." "$LINENO" 5
++      AC_MSG_ERROR([Specific name $LIBRPM was requested but it could not be opened.])
 +    fi
++    PKG_CHECK_MODULES(RPM, rpm, [HAVE_LIBRPM=true], [HAVE_LIBRPM=false])
 +
++    if $HAVE_LIBRPM; then
++      CHECK_LIBRPM_COMPAT
++      if ! $LIBRPM_COMPAT; then
++      HAVE_LIBRPM=false
++      RPM_PKG_ERRORS="Found $LIBRPM API is incompatibile with this GDB"
++      fi
++    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
++    if $HAVE_LIBRPM; then
++      AC_DEFINE(HAVE_LIBRPM, 1, [Define if librpm library is being used.])
++      CFLAGS="$CFLAGS $RPM_CFLAGS"
++      LIBS="$LIBS $RPM_LIBS"
++    else
++      if $RPM_REQUIRE; then
++      AC_MSG_ERROR($RPM_PKG_ERRORS)
++      else
++      AC_MSG_WARN($RPM_PKG_ERRORS)
++      fi
++    fi
 +  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
++ 
+ AC_CONFIG_SUBDIRS(testsuite)
+ # Check whether to support alternative target configurations
+Index: gdb-7.11.50.20160630/gdb/corelow.c
+===================================================================
+--- gdb-7.11.50.20160630.orig/gdb/corelow.c    2016-07-03 14:34:32.022753582 +0200
++++ gdb-7.11.50.20160630/gdb/corelow.c 2016-07-03 14:37:12.582130819 +0200
+@@ -310,7 +310,7 @@
+         symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
+     }
+   else
+-    debug_print_missing (_("the main executable file"), build_id_filename);
++    debug_print_missing (BUILD_ID_MAIN_EXECUTABLE_FILENAME, build_id_filename);
+   do_cleanups (back_to);
+Index: gdb-7.11.50.20160630/gdb/build-id.c
+===================================================================
+--- gdb-7.11.50.20160630.orig/gdb/build-id.c   2016-07-03 14:36:50.124938187 +0200
++++ gdb-7.11.50.20160630/gdb/build-id.c        2016-07-03 14:42:25.171812134 +0200
+@@ -35,6 +35,7 @@
+ #include "elf/common.h"
+ #include "elf-bfd.h"
+ #include <sys/stat.h>
++#include "elf/external.h"
+ #define BUILD_ID_VERBOSE_NONE 0
+ #define BUILD_ID_VERBOSE_FILENAMES 1
+@@ -665,8 +666,366 @@
+   return result;
+ }
++#ifdef HAVE_LIBRPM
 +
++#include <rpm/rpmlib.h>
++#include <rpm/rpmts.h>
++#include <rpm/rpmdb.h>
++#include <rpm/header.h>
++#ifdef DLOPEN_LIBRPM
++#include <dlfcn.h>
++#endif
 +
-+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
++/* This MISSING_RPM_HASH tracker is used to collect all the missing rpm files
++   and avoid their duplicities during a single inferior run.  */
 +
-+  ;;
-+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
++static struct htab *missing_rpm_hash;
 +
-+  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
++/* 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).
++   */
 +
-+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
++struct missing_rpm
++  {
++    struct missing_rpm *next;
++    char rpm[1];
++  };
++static struct missing_rpm *missing_rpm_list;
++static int missing_rpm_list_entries;
 +
-+pkg_failed=no
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RPM" >&5
-+$as_echo_n "checking for RPM... " >&6; }
++/* Returns the count of newly added rpms.  */
 +
-+if test -n "$RPM_CFLAGS"; then
-+    pkg_cv_RPM_CFLAGS="$RPM_CFLAGS"
-+ elif test -n "$PKG_CONFIG"; then
-+    if test -n "$PKG_CONFIG" && \
-+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"rpm\""; } >&5
-+  ($PKG_CONFIG --exists --print-errors "rpm") 2>&5
-+  ac_status=$?
-+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }; then
-+  pkg_cv_RPM_CFLAGS=`$PKG_CONFIG --cflags "rpm" 2>/dev/null`
-+else
-+  pkg_failed=yes
-+fi
-+ else
-+    pkg_failed=untried
-+fi
-+if test -n "$RPM_LIBS"; then
-+    pkg_cv_RPM_LIBS="$RPM_LIBS"
-+ elif test -n "$PKG_CONFIG"; then
-+    if test -n "$PKG_CONFIG" && \
-+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"rpm\""; } >&5
-+  ($PKG_CONFIG --exists --print-errors "rpm") 2>&5
-+  ac_status=$?
-+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }; then
-+  pkg_cv_RPM_LIBS=`$PKG_CONFIG --libs "rpm" 2>/dev/null`
-+else
-+  pkg_failed=yes
-+fi
-+ else
-+    pkg_failed=untried
-+fi
++static int
++missing_rpm_enlist (const char *filename)
++{
++  static int rpm_init_done = 0;
++  rpmts ts;
++  rpmdbMatchIterator mi;
++  int count = 0;
 +
++#ifdef DLOPEN_LIBRPM
++  /* Duplicate here the declarations to verify they match.  The same sanity
++     check is present also in `configure.ac'.  */
++  extern char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg);
++  static char *(*headerFormat_p) (Header h, const char * fmt, errmsg_t *errmsg);
++  extern int rpmReadConfigFiles(const char * file, const char * target);
++  static int (*rpmReadConfigFiles_p) (const char * file, const char * target);
++  extern rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi);
++  static rpmdbMatchIterator (*rpmdbFreeIterator_p) (rpmdbMatchIterator mi);
++  extern Header rpmdbNextIterator(rpmdbMatchIterator mi);
++  static Header (*rpmdbNextIterator_p) (rpmdbMatchIterator mi);
++  extern rpmts rpmtsCreate(void);
++  static rpmts (*rpmtsCreate_p) (void);
++  extern rpmts rpmtsFree(rpmts ts);
++  static rpmts (*rpmtsFree_p) (rpmts ts);
++  extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
++                                              const void * keyp, size_t keylen);
++  static rpmdbMatchIterator (*rpmtsInitIterator_p) (const rpmts ts,
++                                                  rpmTag rpmtag,
++                                                  const void *keyp,
++                                                  size_t keylen);
++#else /* !DLOPEN_LIBRPM */
++# define headerFormat_p headerFormat
++# define rpmReadConfigFiles_p rpmReadConfigFiles
++# define rpmdbFreeIterator_p rpmdbFreeIterator
++# define rpmdbNextIterator_p rpmdbNextIterator
++# define rpmtsCreate_p rpmtsCreate
++# define rpmtsFree_p rpmtsFree
++# define rpmtsInitIterator_p rpmtsInitIterator
++#endif        /* !DLOPEN_LIBRPM */
 +
++  gdb_assert (filename != NULL);
 +
-+if test $pkg_failed = yes; then
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
++  if (strcmp (filename, BUILD_ID_MAIN_EXECUTABLE_FILENAME) == 0)
++    return 0;
 +
-+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-+        _pkg_short_errors_supported=yes
-+else
-+        _pkg_short_errors_supported=no
-+fi
-+        if test $_pkg_short_errors_supported = yes; then
-+              RPM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "rpm" 2>&1`
-+        else
-+              RPM_PKG_ERRORS=`$PKG_CONFIG --print-errors "rpm" 2>&1`
-+        fi
-+      # Put the nasty error message in config.log where it belongs
-+      echo "$RPM_PKG_ERRORS" >&5
++  if (is_target_filename (filename))
++    return 0;
 +
-+      HAVE_LIBRPM=false
-+elif test $pkg_failed = untried; then
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+      HAVE_LIBRPM=false
-+else
-+      RPM_CFLAGS=$pkg_cv_RPM_CFLAGS
-+      RPM_LIBS=$pkg_cv_RPM_LIBS
-+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-+$as_echo "yes" >&6; }
-+      HAVE_LIBRPM=true
-+fi
++  if (filename[0] != '/')
++    {
++      warning (_("Ignoring non-absolute filename: <%s>"), filename);
++      return 0;
++    }
 +
-+    if $HAVE_LIBRPM; then
++  if (!rpm_init_done)
++    {
++      static int init_tried;
 +
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking rpm library API compatibility" >&5
-+$as_echo_n "checking rpm library API compatibility... " >&6; }
-+    # The compilation requires -Werror to verify anything.
-+    save_CFLAGS="$CFLAGS"
-+    CFLAGS="$CFLAGS -Werror"
-+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
++      /* Already failed the initialization before?  */
++      if (init_tried)
++              return 0;
++      init_tried = 1;
 +
-+/* Duplicate here the declarations to verify they match "elfread.c".  */
-+#include <rpm/rpmlib.h>
-+#include <rpm/rpmts.h>
-+#include <rpm/rpmdb.h>
-+#include <rpm/header.h>
-+extern char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg);
-+extern int rpmReadConfigFiles(const char * file, const char * target);
-+extern rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi);
-+extern Header rpmdbNextIterator(rpmdbMatchIterator mi);
-+extern rpmts rpmtsCreate(void);
-+extern rpmts rpmtsFree(rpmts ts);
-+extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
-+                                          const void * keyp, size_t keylen);
++#ifdef DLOPEN_LIBRPM
++      {
++      void *h;
 +
-+int
-+main ()
-+{
++      h = dlopen (DLOPEN_LIBRPM, RTLD_LAZY);
++      if (!h)
++        {
++          warning (_("Unable to open \"%s\" (%s), "
++                    "missing debuginfos notifications will not be displayed"),
++                   DLOPEN_LIBRPM, dlerror ());
++          return 0;
++        }
 +
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
++      if (!((headerFormat_p = (char *(*) (Header h, const char * fmt, errmsg_t *errmsg)) dlsym (h, "headerFormat"))
++            && (rpmReadConfigFiles_p = (int (*) (const char * file, const char * target)) dlsym (h, "rpmReadConfigFiles"))
++            && (rpmdbFreeIterator_p = (rpmdbMatchIterator (*) (rpmdbMatchIterator mi)) dlsym (h, "rpmdbFreeIterator"))
++            && (rpmdbNextIterator_p = (Header (*) (rpmdbMatchIterator mi)) dlsym (h, "rpmdbNextIterator"))
++            && (rpmtsCreate_p = (rpmts (*) (void)) dlsym (h, "rpmtsCreate"))
++            && (rpmtsFree_p = (rpmts (*) (rpmts ts)) dlsym (h, "rpmtsFree"))
++            && (rpmtsInitIterator_p = (rpmdbMatchIterator (*) (const rpmts ts, rpmTag rpmtag, const void *keyp, size_t keylen)) dlsym (h, "rpmtsInitIterator"))))
++        {
++          warning (_("Opened library \"%s\" is incompatible (%s), "
++                    "missing debuginfos notifications will not be displayed"),
++                   DLOPEN_LIBRPM, dlerror ());
++          if (dlclose (h))
++            warning (_("Error closing library \"%s\": %s\n"), DLOPEN_LIBRPM,
++                     dlerror ());
++          return 0;
++        }
++      }
++#endif        /* DLOPEN_LIBRPM */
 +
-+      LIBRPM_COMPAT=true
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-+$as_echo "yes" >&6; }
++      if (rpmReadConfigFiles_p (NULL, NULL) != 0)
++      {
++        warning (_("Error reading the rpm configuration files"));
++        return 0;
++      }
 +
-+else
++      rpm_init_done = 1;
++    }
 +
-+      LIBRPM_COMPAT=false
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
++  ts = rpmtsCreate_p ();
 +
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+    CFLAGS="$save_CFLAGS"
++  mi = rpmtsInitIterator_p (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;
 +
-+      if ! $LIBRPM_COMPAT; then
-+      HAVE_LIBRPM=false
-+      RPM_PKG_ERRORS="Found $LIBRPM API is incompatibile with this GDB"
-+      fi
-+    fi
++        h = rpmdbNextIterator_p (mi);
++        if (h == NULL)
++          break;
 +
-+    if $HAVE_LIBRPM; then
++        /* Verify the debuginfo file is not already installed.  */
 +
-+$as_echo "#define HAVE_LIBRPM 1" >>confdefs.h
++        debuginfo = headerFormat_p (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 = (char *) memrchr (debuginfo, '-', s - debuginfo);
++          }
++        if (s2)
++          {
++            /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */
++            s2 = (char *) 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}' */
 +
-+      CFLAGS="$CFLAGS $RPM_CFLAGS"
-+      LIBS="$LIBS $RPM_LIBS"
-+    else
-+      if $RPM_REQUIRE; then
-+      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;}
-+      fi
-+    fi
-+  fi
-+fi
++        /* RPMDBI_PACKAGES requires keylen == sizeof (int).  */
++        /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel().  */
++        mi_debuginfo = rpmtsInitIterator_p (ts, (rpmTag) RPMDBI_LABEL, debuginfo, 0);
++        xfree (debuginfo);
++        if (mi_debuginfo)
++          {
++            rpmdbFreeIterator_p (mi_debuginfo);
++            count = 0;
++            break;
++          }
 +
- subdirs="$subdirs testsuite"
-Index: gdb-7.6/gdb/configure.ac
-===================================================================
---- gdb-7.6.orig/gdb/configure.ac      2013-07-17 19:51:01.666356964 +0200
-+++ gdb-7.6/gdb/configure.ac   2013-07-17 19:51:02.692357665 +0200
-@@ -166,6 +166,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escap
-             [Directories safe to hold auto-loaded files.])
- AC_MSG_RESULT([$with_auto_load_safe_path])
-+# Integration with rpm library to support missing debuginfo suggestions.
-+# --without-rpm: Disable any rpm support.
-+# --with-rpm=libname.so: Try to dynamically open `libname.so' during runtime.
-+#   Even with runtime missing `libname.so' GDB will still other run correctly.
-+#   Missing `libname.so' during ./configure will abort the configuration.
-+# --with-rpm=librpm.so: Like `--with-rpm=libname.so' but try to find specific
-+#   minor version first such as `librpm-4.6.so' as minor version differences
-+#   mean API+ABI incompatibility.  If the specific match versioned library name
-+#   could not be found still open dynamically at least `librpm.so'.
-+# --with-rpm: Like `--with-rpm=librpm.so' but if any of its detection fails try
-+#   to find librpm for compilation-time linking by pkg-config.  GDB binary will
-+#   be probably linked with the version specific library (as `librpm-4.6.so').
-+#   Failure to find librpm by pkg-config will abort the configuration.
-+# (default) --with-rpm=auto: Like `--with-rpm=librpm.so' but if even pkg-config
-+#   cannot find librpm use to the rpmless compilation (like `--without-rpm').
++        /* The allocated memory gets utilized below for MISSING_RPM_HASH.  */
++        debuginfo = headerFormat_p (h,
++                                    "%{name}-%{version}-%{release}.%{arch}",
++                                    &err);
++        if (!debuginfo)
++          {
++            warning (_("Error querying the rpm file `%s': %s"), filename,
++                     err);
++            continue;
++          }
 +
-+AC_ARG_WITH([rpm],
-+  [AS_HELP_STRING([--with-rpm],
-+                  [query rpm database for missing debuginfos (yes/no, def. auto=librpm.so)])], [], [with_rpm="auto"])
++        /* Base package name for `debuginfo-install'.  We do not use the
++           `yum' command directly as the line
++               yum --enablerepo='*debug*' 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.  */
 +
-+m4_pattern_allow([^AC_MSG_ERROR$])
-+m4_pattern_allow([^AC_MSG_WARN$])
-+if test "x$with_rpm" != "xno"; then
-+  if test "x$with_rpm" = "xyes"; then
-+    LIBRPM="librpm.so"
-+    RPM_REQUIRE=true
-+    DLOPEN_REQUIRE=false
-+  elif test "x$with_rpm" = "xauto"; then
-+    LIBRPM="librpm.so"
-+    RPM_REQUIRE=false
-+    DLOPEN_REQUIRE=false
-+  else
-+    LIBRPM="$with_rpm"
-+    RPM_REQUIRE=true
-+    DLOPEN_REQUIRE=true
-+  fi
-+  LIBRPM_STRING='"'"$LIBRPM"'"'
++        if (missing_rpm_hash == NULL)
++          {
++            /* DEL_F is passed NULL as MISSING_RPM_LIST's HTAB_DELETE
++               should not deallocate the entries.  */
 +
-+  AC_MSG_CHECKING([specific librpm version])
-+  HAVE_DLOPEN_LIBRPM=false
-+  save_LIBS="$LIBS"
-+  LIBS="$LIBS -ldl"
-+  AC_RUN_IFELSE(AC_LANG_PROGRAM([[
-+#include <rpm/rpmlib.h>
-+#include <dlfcn.h>
-+#include <errno.h>
-+  ]], [[
-+    void *h;
-+    const char *const *rpmverp;
-+    FILE *f;
++            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;
 +
-+    f = fopen ("conftest.out", "w");
-+    if (!f)
-+      {
-+      fprintf (stderr, "Cannot write \"%s\": %s\n", "conftest.out",
-+               strerror (errno));
-+      return 1;
-+      }
-+    h = dlopen ($LIBRPM_STRING, RTLD_LAZY);
-+    if (!h)
-+      {
-+      fprintf (stderr, "dlopen (\"%s\"): %s\n", $LIBRPM_STRING, dlerror ());
-+      return 1;
-+      }
-+    rpmverp = dlsym (h, "RPMVERSION");
-+    if (!rpmverp)
-+      {
-+      fprintf (stderr, "dlsym (\"RPMVERSION\"): %s\n", dlerror ());
-+      return 1;
-+      }
-+    fprintf (stderr, "RPMVERSION is: \"");
-+    fprintf (stderr, "%s\"\n", *rpmverp);
++            *slot = debuginfo;
 +
-+    /* Try to find the specific librpm version only for "librpm.so" as we do
-+       not know how to assemble the version string otherwise.  */
++            missing_rpm = (struct 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++;
++      }
 +
-+    if (strcmp ("librpm.so", $LIBRPM_STRING) != 0)
-+      {
-+      fprintf (f, "%s\n", $LIBRPM_STRING);
-+      return 0;
-+      }
-+    else
-+      {
-+      char *h2_name;
-+      void *h2;
-+      int major, minor;
++      rpmdbFreeIterator_p (mi);
++    }
 +
-+      if (sscanf (*rpmverp, "%d.%d", &major, &minor) != 2)
-+        {
-+          fprintf (stderr, "Unable to parse RPMVERSION.\n");
-+          fprintf (f, "%s\n", $LIBRPM_STRING);
-+          return 0;
-+        }
-+      /* Avoid the square brackets by malloc.  */
-+      h2_name = malloc (64);
-+      sprintf (h2_name, "librpm-%d.%d.so", major, minor);
-+      h2 = dlopen (h2_name, RTLD_LAZY);
-+      if (!h2)
-+        {
-+          fprintf (stderr, "dlopen (\"%s\"): %s\n", h2_name, dlerror ());
-+          fprintf (f, "%s\n", $LIBRPM_STRING);
-+          return 0;
-+        }
-+      if (h2 != h)
-+        {
-+          fprintf (stderr, "dlopen of \"%s\" and \"%s\" are different.\n",
-+                   $LIBRPM_STRING, h2_name);
-+          fprintf (f, "%s\n", $LIBRPM_STRING);
-+          return 0;
-+        }
-+      /* Found the valid .so name with a specific version.  */
-+      fprintf (f, "%s\n", h2_name);
-+      return 0;
-+      }
-+  ]]), [
-+    DLOPEN_LIBRPM="`cat conftest.out`"
-+    if test "x$DLOPEN_LIBRPM" != "x"; then
-+      HAVE_DLOPEN_LIBRPM=true
-+      AC_MSG_RESULT($DLOPEN_LIBRPM)
-+    fi
-+  ])
-+  rm -f conftest.out
++  rpmtsFree_p (ts);
 +
-+  m4_define([CHECK_LIBRPM_COMPAT], [
-+    AC_MSG_CHECKING([rpm library API compatibility])
-+    # The compilation requires -Werror to verify anything.
-+    save_CFLAGS="$CFLAGS"
-+    CFLAGS="$CFLAGS -Werror"
-+    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[
-+/* Duplicate here the declarations to verify they match "elfread.c".  */
-+#include <rpm/rpmlib.h>
-+#include <rpm/rpmts.h>
-+#include <rpm/rpmdb.h>
-+#include <rpm/header.h>
-+extern char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg);
-+extern int rpmReadConfigFiles(const char * file, const char * target);
-+extern rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi);
-+extern Header rpmdbNextIterator(rpmdbMatchIterator mi);
-+extern rpmts rpmtsCreate(void);
-+extern rpmts rpmtsFree(rpmts ts);
-+extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
-+                                          const void * keyp, size_t keylen);
-+    ]]), [
-+      LIBRPM_COMPAT=true
-+      AC_MSG_RESULT(yes)
-+    ], [
-+      LIBRPM_COMPAT=false
-+      AC_MSG_RESULT(no)
-+    ])
-+    CFLAGS="$save_CFLAGS"
-+  ])
++  return count;
++}
 +
-+  if $HAVE_DLOPEN_LIBRPM; then
-+    CHECK_LIBRPM_COMPAT
-+    if ! $LIBRPM_COMPAT; then
-+      HAVE_DLOPEN_LIBRPM=false
-+    fi
-+  fi
++static int
++missing_rpm_list_compar (const char *const *ap, const char *const *bp)
++{
++  return strcoll (*ap, *bp);
++}
 +
-+  if $HAVE_DLOPEN_LIBRPM; then
-+    DLOPEN_LIBRPM_STRING='"'"$DLOPEN_LIBRPM"'"'
-+    AC_DEFINE_UNQUOTED(DLOPEN_LIBRPM, $DLOPEN_LIBRPM_STRING, [librpm version specific library name to dlopen.])
-+    AC_DEFINE(HAVE_LIBRPM, 1, [Define if librpm library is being used.])
-+  else
-+    AC_MSG_RESULT(no)
-+    LIBS="$save_LIBS"
-+    if $DLOPEN_REQUIRE; then
-+      AC_MSG_ERROR([Specific name $LIBRPM was requested but it could not be opened.])
-+    fi
-+    PKG_CHECK_MODULES(RPM, rpm, [HAVE_LIBRPM=true], [HAVE_LIBRPM=false])
++/* It returns a NULL-terminated array of strings needing to be FREEd.  It may
++   also return only NULL.  */
 +
-+    if $HAVE_LIBRPM; then
-+      CHECK_LIBRPM_COMPAT
-+      if ! $LIBRPM_COMPAT; then
-+      HAVE_LIBRPM=false
-+      RPM_PKG_ERRORS="Found $LIBRPM API is incompatibile with this GDB"
-+      fi
-+    fi
++static void
++missing_rpm_list_print (void)
++{
++  char **array, **array_iter;
++  struct missing_rpm *list_iter;
++  struct cleanup *cleanups;
 +
-+    if $HAVE_LIBRPM; then
-+      AC_DEFINE(HAVE_LIBRPM, 1, [Define if librpm library is being used.])
-+      CFLAGS="$CFLAGS $RPM_CFLAGS"
-+      LIBS="$LIBS $RPM_LIBS"
-+    else
-+      if $RPM_REQUIRE; then
-+      AC_MSG_ERROR($RPM_PKG_ERRORS)
-+      else
-+      AC_MSG_WARN($RPM_PKG_ERRORS)
-+      fi
-+    fi
-+  fi
-+fi
-+ 
- AC_CONFIG_SUBDIRS(testsuite)
++  if (missing_rpm_list_entries == 0)
++    return;
++
++  array = (char **) 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"),
++#ifdef DNF_DEBUGINFO_INSTALL
++                   "dnf "
++#endif
++                   "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;
++
++#endif        /* HAVE_LIBRPM */
++
++void
++debug_flush_missing (void)
++{
++#ifdef HAVE_LIBRPM
++  missing_rpm_list_print ();
++#endif
++}
++
+ /* This MISSING_FILEPAIR_HASH tracker is used only for the duplicite messages
+-     Try to install the hash file ...
++     yum --enablerepo='*debug*' install ...
+    avoidance.  */
  
- # Check whether to support alternative target configurations
-Index: gdb-7.6/gdb/corelow.c
-===================================================================
---- gdb-7.6.orig/gdb/corelow.c 2013-07-17 19:51:02.608357607 +0200
-+++ gdb-7.6/gdb/corelow.c      2013-07-17 19:51:02.692357665 +0200
-@@ -314,7 +314,7 @@ build_id_locate_exec (int from_tty)
-         symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
+ struct missing_filepair
+@@ -720,11 +1079,17 @@
+       /* All their memory came just from missing_filepair_OBSTACK.  */
+       missing_filepair_hash = NULL;
      }
-   else
--    debug_print_missing (_("the main executable file"), build_id_filename);
-+    debug_print_missing (BUILD_ID_MAIN_EXECUTABLE_FILENAME, build_id_filename);
++#ifdef HAVE_LIBRPM
++  missing_exec = MISSING_EXEC_NOT_TRIED;
++#endif
+ }
  
-   do_cleanups (back_to);
+ static void
+ debug_print_executable_changed (void)
+ {
++#ifdef HAVE_LIBRPM
++  missing_rpm_change ();
++#endif
+   missing_filepair_change ();
+ }
+@@ -791,14 +1156,39 @@
+   *slot = missing_filepair;
+-  /* We do not collect and flush these messages as each such message
+-     already requires its own separate lines.  */
++#ifdef HAVE_LIBRPM
++  if (missing_exec == MISSING_EXEC_NOT_TRIED)
++    {
++      char *execfilename;
+-  fprintf_unfiltered (gdb_stdlog,
+-                    _("Missing separate debuginfo for %s\n"), binary);
+-  if (debug != NULL)
+-    fprintf_unfiltered (gdb_stdlog, _("Try to install the hash file %s\n"),
+-                      debug);
++      execfilename = get_exec_file (0);
++      if (execfilename != NULL)
++      {
++        if (missing_rpm_enlist (execfilename) == 0)
++          missing_exec = MISSING_EXEC_NOT_FOUND;
++        else
++          missing_exec = MISSING_EXEC_ENLISTED;
++      }
++    }
++  if (missing_exec != MISSING_EXEC_ENLISTED)
++    if ((binary[0] == 0 || missing_rpm_enlist (binary) == 0)
++      && (debug == NULL || missing_rpm_enlist (debug) == 0))
++#endif        /* HAVE_LIBRPM */
++      {
++      /* 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"),
++#ifdef DNF_DEBUGINFO_INSTALL
++                            "dnf"
++#else
++                            "yum"
++#endif
++                            " --enablerepo='*debug*' install", debug);
++      }
+ }
  
+ /* See build-id.h.  */
This page took 0.146243 seconds and 4 git commands to generate.