X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;ds=sidebyside;f=gdb-6.6-buildid-locate-rpm.patch;h=3f7c6519c24ef2026ea15c31481114eb55b900e0;hb=77d1099;hp=30832c60fe657ca380d22386845f65291202694f;hpb=e51789606e7bc99bfd8ac5714774904c874e3387;p=packages%2Fgdb.git diff --git a/gdb-6.6-buildid-locate-rpm.patch b/gdb-6.6-buildid-locate-rpm.patch index 30832c6..3f7c651 100644 --- a/gdb-6.6-buildid-locate-rpm.patch +++ b/gdb-6.6-buildid-locate-rpm.patch @@ -1,47 +1,251 @@ -Index: gdb-7.2/gdb/event-top.c -=================================================================== ---- gdb-7.2.orig/gdb/event-top.c 2010-06-26 08:44:47.000000000 +0200 -+++ gdb-7.2/gdb/event-top.c 2010-10-06 22:39:32.000000000 +0200 -@@ -33,6 +33,7 @@ - #include "cli/cli-script.h" /* for reset_command_nest_depth */ - #include "main.h" - #include "gdbthread.h" -+#include "symfile.h" - - /* For dont_repeat() */ - #include "gdbcmd.h" -@@ -193,6 +194,8 @@ cli_command_loop (void) - char *a_prompt; - char *gdb_prompt = get_prompt (); +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.6-buildid-locate-rpm.patch + +;;=push+jan + +diff --git a/gdb/aclocal.m4 b/gdb/aclocal.m4 +--- a/gdb/aclocal.m4 ++++ b/gdb/aclocal.m4 +@@ -11,7 +11,223 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. -+ debug_flush_missing (); ++# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- ++# serial 1 (pkg-config-0.24) ++# ++# Copyright © 2004 Scott James Remnant . ++# ++# 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. + - /* Tell readline what the prompt to display is and what function it - will need to call after a whole line is read. This also displays - the first prompt. */ -@@ -264,6 +267,8 @@ display_gdb_prompt (char *new_prompt) - /* Reset the nesting depth used when trace-commands is set. */ - reset_command_nest_depth (); - -+ debug_flush_missing (); ++# 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]) + - /* Each interpreter has its own rules on displaying the command - prompt. */ - if (!current_interp_display_prompt_p ()) -Index: gdb-7.2/gdb/elfread.c -=================================================================== ---- gdb-7.2.orig/gdb/elfread.c 2010-10-06 22:39:32.000000000 +0200 -+++ gdb-7.2/gdb/elfread.c 2010-10-06 22:39:52.000000000 +0200 -@@ -42,6 +42,7 @@ - #include "gdbcore.h" - #include "gdbcmd.h" - #include "observer.h" -+#include "elf/external.h" ++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]) ++ ++# _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 ++ ++# _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 ++ ++ ++# 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]) ++ ++_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) ++_PKG_CONFIG([$1][_LIBS], [libs], [$2]) ++ ++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 --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 ++ ++ 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])[]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. ++ ++_PKG_TEXT ++ ++To get pkg-config, see .])[]dnl ++ ]) ++else ++ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS ++ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS ++ AC_MSG_RESULT([yes]) ++ $3 ++fi[]dnl ++])# PKG_CHECK_MODULES ++ ++ ++# 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 ++ ++_PKG_CONFIG([$1], [variable="][$3]["], [$2]) ++AS_VAR_COPY([$1], [pkg_cv_][$1]) ++ ++AS_VAR_IF([$1], [""], [$5], [$4])dnl ++])# PKG_CHECK_VAR ++ + m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) ++ + # AM_AUX_DIR_EXPAND -*- Autoconf -*- - extern void _initialize_elfread (void); + # Copyright (C) 2001-2017 Free Software Foundation, Inc. +diff --git a/gdb/build-id.c b/gdb/build-id.c +--- a/gdb/build-id.c ++++ b/gdb/build-id.c +@@ -35,6 +35,8 @@ + #include "elf/common.h" + #include "elf-bfd.h" + #include ++#include "elf/external.h" ++#include "inferior.h" -@@ -1371,8 +1372,361 @@ build_id_to_filename (struct build_id *b - return retval; + #define BUILD_ID_VERBOSE_NONE 0 + #define BUILD_ID_VERBOSE_FILENAMES 1 +@@ -700,8 +702,366 @@ build_id_to_filename (const struct bfd_build_id *build_id, char **link_return) + return result; } +#ifdef HAVE_LIBRPM @@ -118,6 +322,9 @@ Index: gdb-7.2/gdb/elfread.c + if (strcmp (filename, BUILD_ID_MAIN_EXECUTABLE_FILENAME) == 0) + return 0; + ++ if (is_target_filename (filename)) ++ return 0; ++ + if (filename[0] != '/') + { + warning (_("Ignoring non-absolute filename: <%s>"), filename); @@ -146,13 +353,13 @@ Index: gdb-7.2/gdb/elfread.c + return 0; + } + -+ 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")))) ++ 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"), @@ -208,12 +415,12 @@ Index: gdb-7.2/gdb/elfread.c + if (s > debuginfo && memcmp (s, ".src.rpm", srcrpmlen) == 0) + { + /* s2 = `-%{release}.src.rpm-debuginfo.%{arch}' */ -+ s2 = memrchr (debuginfo, '-', s - debuginfo); ++ s2 = (char *) memrchr (debuginfo, '-', s - debuginfo); + } + if (s2) + { + /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */ -+ s2 = memrchr (debuginfo, '-', s2 - debuginfo); ++ s2 = (char *) memrchr (debuginfo, '-', s2 - debuginfo); + } + if (!s2) + { @@ -236,7 +443,7 @@ Index: gdb-7.2/gdb/elfread.c + + /* RPMDBI_PACKAGES requires keylen == sizeof (int). */ + /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel(). */ -+ mi_debuginfo = rpmtsInitIterator_p (ts, RPMDBI_LABEL, debuginfo, 0); ++ mi_debuginfo = rpmtsInitIterator_p (ts, (rpmTag) RPMDBI_LABEL, debuginfo, 0); + xfree (debuginfo); + if (mi_debuginfo) + { @@ -258,8 +465,7 @@ Index: gdb-7.2/gdb/elfread.c + + /* Base package name for `debuginfo-install'. We do not use the + `yum' command directly as the line -+ yum --disablerepo='*' --enablerepo='*-debuginfo' \ -+ install NAME-debuginfo.ARCH ++ 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 @@ -288,7 +494,7 @@ Index: gdb-7.2/gdb/elfread.c + + *slot = debuginfo; + -+ missing_rpm = xmalloc (sizeof (*missing_rpm) + strlen (debuginfo)); ++ 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; @@ -326,7 +532,7 @@ Index: gdb-7.2/gdb/elfread.c + if (missing_rpm_list_entries == 0) + return; + -+ array = xmalloc (sizeof (*array) * missing_rpm_list_entries); ++ array = (char **) xmalloc (sizeof (*array) * missing_rpm_list_entries); + cleanups = make_cleanup (xfree, array); + + array_iter = array; @@ -341,6 +547,9 @@ Index: gdb-7.2/gdb/elfread.c + (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++) @@ -399,11 +608,11 @@ Index: gdb-7.2/gdb/elfread.c + /* This MISSING_FILEPAIR_HASH tracker is used only for the duplicite messages - Try to install the hash file ... -+ yum --disablerepo='*' --enablerepo='*-debuginfo' install ... ++ yum --enablerepo='*debug*' install ... avoidance. */ struct missing_filepair -@@ -1426,11 +1780,17 @@ missing_filepair_change (void) +@@ -755,11 +1115,17 @@ missing_filepair_change (void) /* All their memory came just from missing_filepair_OBSTACK. */ missing_filepair_hash = NULL; } @@ -421,7 +630,7 @@ Index: gdb-7.2/gdb/elfread.c missing_filepair_change (); } -@@ -1497,14 +1857,35 @@ debug_print_missing (const char *binary, +@@ -826,14 +1192,39 @@ debug_print_missing (const char *binary, const char *debug) *slot = missing_filepair; @@ -430,17 +639,17 @@ Index: gdb-7.2/gdb/elfread.c +#ifdef HAVE_LIBRPM + if (missing_exec == MISSING_EXEC_NOT_TRIED) + { -+ char *exec_filename; ++ 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); -+ exec_filename = get_exec_file (0); -+ if (exec_filename != NULL) ++ execfilename = get_exec_file (0); ++ if (execfilename != NULL) + { -+ if (missing_rpm_enlist (exec_filename) == 0) ++ if (missing_rpm_enlist (execfilename) == 0) + missing_exec = MISSING_EXEC_NOT_FOUND; + else + missing_exec = MISSING_EXEC_ENLISTED; @@ -458,244 +667,20 @@ Index: gdb-7.2/gdb/elfread.c + _("Missing separate debuginfo for %s\n"), binary); + if (debug != NULL) + fprintf_unfiltered (gdb_stdlog, _("Try: %s %s\n"), -+ "yum --disablerepo='*' --enablerepo='*-debuginfo'" -+ " install", debug); ++#ifdef DNF_DEBUGINFO_INSTALL ++ "dnf" ++#else ++ "yum" ++#endif ++ " --enablerepo='*debug*' install", debug); + } } - static char * -Index: gdb-7.2/gdb/symfile.h -=================================================================== ---- gdb-7.2.orig/gdb/symfile.h 2010-10-06 22:39:32.000000000 +0200 -+++ gdb-7.2/gdb/symfile.h 2010-10-06 22:39:52.000000000 +0200 -@@ -577,6 +577,8 @@ extern struct build_id *build_id_addr_ge - extern char *build_id_to_filename (struct build_id *build_id, - char **link_return, int add_debug_suffix); - extern void debug_print_missing (const char *binary, const char *debug); -+extern void debug_flush_missing (void); -+#define BUILD_ID_MAIN_EXECUTABLE_FILENAME _("the main executable file") - - /* From dwarf2read.c */ - -Index: gdb-7.2/gdb/testsuite/lib/gdb.exp -=================================================================== ---- gdb-7.2.orig/gdb/testsuite/lib/gdb.exp 2010-10-06 22:39:32.000000000 +0200 -+++ gdb-7.2/gdb/testsuite/lib/gdb.exp 2010-10-06 22:39:32.000000000 +0200 -@@ -1359,7 +1359,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.2/gdb/testsuite/lib/mi-support.exp -=================================================================== ---- gdb-7.2.orig/gdb/testsuite/lib/mi-support.exp 2010-10-06 22:39:32.000000000 +0200 -+++ gdb-7.2/gdb/testsuite/lib/mi-support.exp 2010-10-06 22:39:32.000000000 +0200 -@@ -221,7 +221,7 @@ proc default_mi_gdb_start { args } { - } - } - } -- # 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.2/gdb/tui/tui-interp.c -=================================================================== ---- gdb-7.2.orig/gdb/tui/tui-interp.c 2010-05-18 00:21:43.000000000 +0200 -+++ gdb-7.2/gdb/tui/tui-interp.c 2010-10-06 22:39:32.000000000 +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. */ -@@ -146,6 +147,8 @@ tui_command_loop (void *data) - char *a_prompt; - char *gdb_prompt = get_prompt (); - -+ debug_flush_missing (); -+ - /* Tell readline what the prompt to display is and what function - it will need to call after a whole line is read. This also - displays the first prompt. */ -Index: gdb-7.2/gdb/aclocal.m4 -=================================================================== ---- gdb-7.2.orig/gdb/aclocal.m4 2010-05-23 02:56:59.000000000 +0200 -+++ gdb-7.2/gdb/aclocal.m4 2010-10-06 22:39:32.000000000 +0200 -@@ -19,6 +19,162 @@ You have another version of autoconf. I - If you have problems, you may need to regenerate the build system entirely. - To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -+# -+# Copyright © 2004 Scott James Remnant . -+# -+# 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. -+ -+# 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])dnl -+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. -+# -+# -+# Similar to PKG_CHECK_MODULES, make sure that the first instance of -+# this or PKG_CHECK_MODULES is called, or make sure 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_ifval([$2], [$2], [:]) -+m4_ifvaln([$3], [else -+ $3])dnl -+fi]) -+ -+ -+# _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 -+ -+# _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 -+ -+ -+# 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]) -+ -+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -+_PKG_CONFIG([$1][_LIBS], [libs], [$2]) -+ -+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 -+ _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 -+ -+ ifelse([$4], , [AC_MSG_ERROR(dnl -+[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 -+])], -+ [AC_MSG_RESULT([no]) -+ $4]) -+elif test $pkg_failed = untried; then -+ ifelse([$4], , [AC_MSG_FAILURE(dnl -+[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 -+ -+To get pkg-config, see .])], -+ [$4]) -+else -+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS -+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS -+ AC_MSG_RESULT([yes]) -+ ifelse([$3], , :, [$3]) -+fi[]dnl -+])# PKG_CHECK_MODULES -+ - # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation -Index: gdb-7.2/gdb/config.in -=================================================================== ---- gdb-7.2.orig/gdb/config.in 2010-10-06 22:39:31.000000000 +0200 -+++ gdb-7.2/gdb/config.in 2010-10-06 22:39:32.000000000 +0200 -@@ -46,6 +46,9 @@ + /* See build-id.h. */ +diff --git a/gdb/config.in b/gdb/config.in +--- a/gdb/config.in ++++ b/gdb/config.in +@@ -33,6 +33,9 @@ /* Define to BFD's default target vector. */ #undef DEFAULT_BFD_VEC @@ -705,70 +690,77 @@ Index: gdb-7.2/gdb/config.in /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS -@@ -231,6 +234,9 @@ +@@ -255,6 +258,9 @@ /* Define if Python 2.7 is being used. */ #undef HAVE_LIBPYTHON2_7 +/* Define if librpm library is being used. */ +#undef HAVE_LIBRPM + - /* Define if libunwind library is being used. */ - #undef HAVE_LIBUNWIND + /* Define to 1 if you have the header file. */ + #undef HAVE_LIBUNWIND_IA64_H -Index: gdb-7.2/gdb/configure -=================================================================== ---- gdb-7.2.orig/gdb/configure 2010-10-06 22:39:31.000000000 +0200 -+++ gdb-7.2/gdb/configure 2010-10-06 22:39:32.000000000 +0200 -@@ -679,6 +679,9 @@ REPORT_BUGS_TO - PKGVERSION +diff --git a/gdb/configure b/gdb/configure +--- a/gdb/configure ++++ b/gdb/configure +@@ -751,6 +751,11 @@ CODESIGN_CERT + HAVE_NATIVE_GCORE_TARGET TARGET_OBS subdirs +RPM_LIBS +RPM_CFLAGS ++PKG_CONFIG_LIBDIR ++PKG_CONFIG_PATH +PKG_CONFIG - pythondir - GDB_DATADIR_PATH GDB_DATADIR -@@ -948,6 +951,7 @@ with_separate_debug_dir - with_gdb_datadir + DEBUGDIR + MAKEINFO_EXTRA_FLAGS +@@ -855,6 +860,7 @@ with_gdb_datadir with_relocated_sources - with_pythondir + with_auto_load_dir + with_auto_load_safe_path +with_rpm enable_targets enable_64_bit_bfd - enable_gdbcli -@@ -988,6 +992,9 @@ LDFLAGS - LIBS - CPPFLAGS + enable_gdbmi +@@ -914,6 +920,11 @@ CCC CPP + MAKEINFO + MAKEINFOFLAGS +PKG_CONFIG ++PKG_CONFIG_PATH ++PKG_CONFIG_LIBDIR +RPM_CFLAGS +RPM_LIBS YACC YFLAGS XMKMF' -@@ -1653,6 +1660,8 @@ Optional Packages: - [DATADIR/gdb] - --with-pythondir install Python data files in this path - [DATADIR/gdb/python] +@@ -1585,6 +1596,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 use libunwind frame unwinding support + --with-libunwind-ia64 use libunwind frame unwinding for ia64 targets --with-curses use the curses library instead of the termcap library -@@ -1688,6 +1697,9 @@ Some influential environment variables: - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor +@@ -1642,6 +1655,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. -@@ -7951,6 +7963,485 @@ _ACEOF - fi - + YACC The `Yet Another Compiler Compiler' implementation to use. + Defaults to the first program found out of: `bison -y', `byacc', + `yacc'. +@@ -6623,6 +6643,494 @@ _ACEOF + { $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. @@ -997,6 +989,11 @@ Index: gdb-7.2/gdb/configure + 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. @@ -1109,7 +1106,6 @@ Index: gdb-7.2/gdb/configure +$as_echo "no" >&6; } + PKG_CONFIG="" + fi -+ +fi + +pkg_failed=no @@ -1126,6 +1122,7 @@ Index: gdb-7.2/gdb/configure + $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 @@ -1142,6 +1139,7 @@ Index: gdb-7.2/gdb/configure + $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 @@ -1152,6 +1150,8 @@ Index: gdb-7.2/gdb/configure + + +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 @@ -1159,17 +1159,17 @@ Index: gdb-7.2/gdb/configure + _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` ++ RPM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "rpm" 2>&1` + else -+ RPM_PKG_ERRORS=`$PKG_CONFIG --print-errors "rpm" 2>&1` ++ 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 + -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ HAVE_LIBRPM=false ++ 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 @@ -1249,16 +1249,16 @@ Index: gdb-7.2/gdb/configure + fi + fi +fi ++ - -Index: gdb-7.2/gdb/configure.ac -=================================================================== ---- gdb-7.2.orig/gdb/configure.ac 2010-10-06 22:39:31.000000000 +0200 -+++ gdb-7.2/gdb/configure.ac 2010-10-06 22:39:32.000000000 +0200 -@@ -152,6 +152,198 @@ else - fi - AC_SUBST(pythondir) + subdirs="$subdirs testsuite" +diff --git a/gdb/configure.ac b/gdb/configure.ac +--- a/gdb/configure.ac ++++ b/gdb/configure.ac +@@ -166,6 +166,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir, + [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. @@ -1452,33 +1452,14 @@ Index: gdb-7.2/gdb/configure.ac + fi + fi +fi ++ + AC_CONFIG_SUBDIRS(testsuite) - AC_CONFIG_SUBDIRS(doc testsuite) - -Index: gdb-7.2/gdb/acinclude.m4 -=================================================================== ---- gdb-7.2.orig/gdb/acinclude.m4 2010-05-27 05:40:45.000000000 +0200 -+++ gdb-7.2/gdb/acinclude.m4 2010-10-06 22:39:32.000000000 +0200 -@@ -1,3 +1,5 @@ -+# serial 1 -+ - dnl written by Rob Savoye for Cygnus Support - dnl major rewriting for Tcl 7.5 by Don Libes - -@@ -81,8 +83,6 @@ AC_MSG_RESULT(yes) - # Foundation, Inc., 51 Franklin Street, Fifth Floor, - # Boston, MA 02110-1301, USA. - --# serial 1 -- - # @defmac AC_PROG_CC_STDC - # @maindex PROG_CC_STDC - # @ovindex CC -Index: gdb-7.2/gdb/corelow.c -=================================================================== ---- gdb-7.2.orig/gdb/corelow.c 2010-10-06 22:39:39.000000000 +0200 -+++ gdb-7.2/gdb/corelow.c 2010-10-06 22:39:52.000000000 +0200 -@@ -331,7 +331,7 @@ build_id_locate_exec (int from_tty) + # Check whether to support alternative target configurations +diff --git a/gdb/corelow.c b/gdb/corelow.c +--- a/gdb/corelow.c ++++ b/gdb/corelow.c +@@ -365,7 +365,7 @@ build_id_locate_exec (int from_tty) symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED; } else @@ -1487,3 +1468,47 @@ Index: gdb-7.2/gdb/corelow.c do_cleanups (back_to); +diff --git a/gdb/event-top.c b/gdb/event-top.c +--- a/gdb/event-top.c ++++ b/gdb/event-top.c +@@ -40,6 +40,7 @@ + #include "common/buffer.h" + #include "ser-event.h" + #include "gdb_select.h" ++#include "symfile.h" + + /* readline include files. */ + #include "readline/readline.h" +@@ -359,6 +360,8 @@ display_gdb_prompt (const char *new_prompt) + /* Reset the nesting depth used when trace-commands is set. */ + reset_command_nest_depth (); + ++ debug_flush_missing (); ++ + /* Do not call the python hook on an explicit prompt change as + passed to this function, as this forms a secondary/local prompt, + IE, displayed but not set. */ +@@ -770,7 +773,10 @@ command_line_handler (gdb::unique_xmalloc_ptr &&rl) + command_handler (cmd); + + if (ui->prompt_state != PROMPTED) +- display_gdb_prompt (0); ++ { ++ debug_flush_missing (); ++ display_gdb_prompt (0); ++ } + } + } + +diff --git a/gdb/symfile.h b/gdb/symfile.h +--- a/gdb/symfile.h ++++ b/gdb/symfile.h +@@ -534,6 +534,8 @@ void map_symbol_filenames (symbol_filename_ftype *fun, void *data, + /* 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 */ +