c8226c1e04
- Maintenance script qa.sh: * Add SLE-12/x86_64 to "known clean configs". * Add fail for PR29405. * Add fail for PR26915. - Patches added: * gdb-testsuite-fix-gdb.threads-killed-outside.exp-on-aarch64.patch - Maintenance script qa.sh: * Remove PR29247 internal-error. * Add SLE-15/aarch64 to "known clean configs". - Patches added: * gdb-fix-watchpoints-triggered.patch - Maintenance script qa.sh: * Add kfails for PR25038, PR29253, and PR29423. * Remove gdb.mi/mi-var-invalidate-shlib.exp kfails. - Mention qa-local.sh, qa-remote.sh and README.qa as sources. - Maintenance script qa-local.sh: * Use have_combo consistently. - Maintenance script qa.sh: * Add kfail_aarch64. * Add PR29419/PR29409 kfails. * Update PR29247 kfails. - Patches added: * make-gdb.ada-float-bits.exp-more-generic.patch * gdb-testsuite-fix-gdb.ada-literals.exp-with-aarch64.patch - Actually apply fixup-gdb-test-bt-cfi-without-die.patch and fixup-2-gdb-rhbz1553104-s390x-arch12-test.patch. - Also remove gdb-6.5-readline-long-line-crash-test.patch from patches list in gdb.spec. - Patches added: * powerpc-add-support-for-ieee-128-bit-format.patch * powerpc-correct-the-gdb-ioctl-values-for-tcgets-tcsets-tcsetsw-and-tcsetsf.patch * gdb-testsuite-remove-target-limits-in-gdb.base-catch-syscall.exp.patch * powerpc-fix-for-gdb.base-eh_return.exp.patch * fix-comparison-of-unsigned-long-int-to-int-in-record_linux_system_call.patch * gdb-testsuite-fix-gdb.reverse-test_ioctl_tcsetsw.exp-with-libc-debuginfo.patch * fixup-gdb-test-bt-cfi-without-die.patch * fix-core-file-detach-crash-corefiles-29275.patch * gdb-testsuite-fix-gdb.dwarf2-dw2-out-of-range-end-of-seq.exp-on-aarch64.patch * gdb-testsuite-fix-gdb.base-catch-syscall.exp-without-enable-targets.patch * gdb-testsuite-fix-gdb.base-catch-syscall.exp-with-with-expat-no.patch * fix-for-gdb.base-solib-search.exp-test.patch - Patch removed: * gdb-6.7-ppc-clobbered-registers-O2-test.patch * gdb-6.5-readline-long-line-crash-test.patch - Patches updated: * gdb-tdep-update-syscalls-ppc64-ppc-linux.xml.patch * gdb-testsuite-handle-pipe2-syscall-in-gdb.base-catch-syscall.exp.patch - Maintenance script qa.sh: * Add PR28504 KFAILs. * Make .sum file matching less complex. * Add fedora test-case kfail. - Maintenance script qa-local.sh: * Fix incorrect path name. - Update comments in gdb.spec. - Patches added: * powerpc-update-expected-floating-point-output-for-gdb.arch-altivec-regs.exp-and-gdb.arch-vsx-regs.exp.patch - Patches updated: * gdb-testsuite-support-recording-of-getrandom.patch (add aarch64 part) - Maintenance script qa.sh: * Add i586 to known clean configs. - Patches added: * gdb-testsuite-enable-some-test-cases-for-x86_64-m32.patch * gdb-testsuite-fix-gdb.reverse-i387-env-reverse.exp-for-pie.patch * gdb-testsuite-support-recording-of-getrandom.patch - Patches updated: * gdb-record-handle-statx-system-call.patch - Maintenance script qa.sh: * Allow only two summary files, for i586. * Add i586 KFAILs. - Maintenance script qa-local.sh: * Add i586. - Maintenance script qa-local.sh: * Fix rpm pathname. - Maintenance script qa-remote.sh: * Skip stale config openSUSE_Leap_15.2. - Maintenance script qa.sh: * Drop known clean config: Leap 15.2 x86_64. - Maintenance script qa-local.sh: * Add cleanup step. * Add "build all configs without testsuite" step. * For "build all configs with testsuite" step, redirect output to log and produce PASS/FAIL line, and make sure buildroot is removed also in case of missing rpm. * Use "--clean --trust-all-projects" for osc build commands. * Drop openSUSE_Leap_15.2. - Maintenance script qa.sh: * Rename argument 6 to -local. * Add PR29247 KFAILs. * Update internal-error regexps. - New maintenance script qa-remote.sh. - Add "build all configs without testsuite" step in README.qa. - Patches added (backport from trunk): * gdb-testsuite-remove-attach-test-from-can_spawn_for_attach.patch - README.qa: * Add remote qa entry. * Update local qa entry: * Add notes entry. * Other updates to match changes in qa-local.sh. - Fix installed but unpackaged /usr/share/info/ctf-spec.info.gz. - Rebase to 12.1 release (as in fedora 36 @ 89947a7): * DBX mode is deprecated, and will be removed in GDB 13. * GDB 12 is the last release of GDB that will support building against Python 2. From GDB 13, it will only be possible to build GDB itself with Python 3 support. * Improved C++ template support: GDB now treats functions/types involving C++ templates like it does function overloads. Users may omit parameter lists to set breakpoints on families of template functions, including types/functions composed of multiple template types: (gdb) break template_func(template_1, int) The above will set breakpoints at every function `template_func' where the first function parameter is any template type named `template_1' and the second function parameter is `int'. TAB completion also gains similar improvements. * New commands: maint set backtrace-on-fatal-signal on|off maint show backtrace-on-fatal-signal This setting is 'on' by default. When 'on' GDB will print a limited backtrace to stderr in the situation where GDB terminates with a fatal signal. This only supported on some platforms where the backtrace and backtrace_symbols_fd functions are available. set source open on|off show source open This setting, which is on by default, controls whether GDB will try to open source code files. Switching this off will stop GDB trying to open and read source code files, which can be useful if the files are located over a slow network connection. set varsize-limit show varsize-limit These are now deprecated aliases for "set max-value-size" and "show max-value-size". task apply [all | TASK-IDS...] [FLAG]... COMMAND Like "thread apply", but applies COMMAND to Ada tasks. watch [...] task ID Watchpoints can now be restricted to a specific Ada task. maint set internal-error backtrace on|off maint show internal-error backtrace maint set internal-warning backtrace on|off maint show internal-warning backtrace GDB can now print a backtrace of itself when it encounters either an internal-error, or an internal-warning. This is on by default for internal-error and off by default for internal-warning. set logging on|off Deprecated and replaced by "set logging enabled on|off". set logging enabled on|off show logging enabled These commands set or show whether logging is enabled or disabled. exit You can now exit GDB by using the new command "exit", in addition to the existing "quit" command. set debug threads on|off show debug threads Print additional debug messages about thread creation and deletion. set debug linux-nat on|off show debug linux-nat These new commands replaced the old 'set debug lin-lwp' and 'show debug lin-lwp' respectively. Turning this setting on prints debug messages relating to GDB's handling of native Linux inferiors. maint flush source-cache Flush the contents of the source code cache. maint set gnu-source-highlight enabled on|off maint show gnu-source-highlight enabled Whether GDB should use the GNU Source Highlight library for adding styling to source code. When off, the library will not be used, even when available. When GNU Source Highlight isn't used, or can't add styling to a particular source file, then the Python Pygments library will be used instead. set suppress-cli-notifications (on|off) show suppress-cli-notifications This controls whether printing the notifications is suppressed for CLI. CLI notifications occur when you change the selected context (i.e., the current inferior, thread and/or the frame), or when the program being debugged stops (e.g., because of hitting a breakpoint, completing source-stepping, an interrupt, etc.). set style disassembler enabled on|off show style disassembler enabled If GDB is compiled with Python support, and the Python Pygments package is available, then, when this setting is on, disassembler output will have styling applied. set ada source-charset show ada source-charset Set the character set encoding that is assumed for Ada symbols. Valid values for this follow the values that can be passed to the GNAT compiler via the '-gnati' option. The default is ISO-8859-1. * Changed commands: print Printing of floating-point values with base-modifying formats like /x has been changed to display the underlying bytes of the value in the desired base. This was GDB's documented behavior, but was never implemented correctly. maint packet This command can now print a reply, if the reply includes non-printable characters. Any non-printable characters are printed as escaped hex, e.g. \x?? where '??' is replaces with the value of the non-printable character. clone-inferior The clone-inferior command now ensures that the TTY, CMD and ARGS settings are copied from the original inferior to the new one. All modifications to the environment variables done using the 'set environment' or 'unset environment' commands are also copied to the new inferior. set debug lin-lwp on|off show debug lin-lwp These commands have been removed from GDB. The new command 'set debug linux-nat' and 'show debug linux-nat' should be used instead. info win This command now includes information about the width of the tui windows in its output. * GDB's Ada parser now supports an extension for specifying the exact byte contents of a floating-point literal. This can be useful for setting floating-point registers to a precise value without loss of precision. The syntax is an extension of the based literal syntax. Use, e.g., "16lf#0123abcd#" -- the number of "l"s controls the width of the floating-point type, and the "f" is the marker for floating point. * MI changes: ** The '-add-inferior' with no option flags now inherits the connection of the current inferior, this restores the behaviour of GDB as it was prior to GDB 10. ** The '-add-inferior' command now accepts a '--no-connection' option, which causes the new inferior to start without a connection. * Python API: ** New function gdb.add_history(), which takes a gdb.Value object and adds the value it represents to GDB's history list. An integer, the index of the new item in the history list, is returned. ** New function gdb.history_count(), which returns the number of values in GDB's value history. ** New gdb.events.gdb_exiting event. This event is called with a gdb.GdbExitingEvent object which has the read-only attribute 'exit_code', which contains the value of the GDB exit code. This event is triggered once GDB decides it is going to exit, but before GDB starts to clean up its internal state. ** New function gdb.architecture_names(), which returns a list containing all of the possible Architecture.name() values. Each entry is a string. ** New function gdb.Architecture.integer_type(), which returns an integer type given a size and a signed-ness. ** New gdb.TargetConnection object type that represents a connection (as displayed by the 'info connections' command). A sub-class, gdb.RemoteTargetConnection, is used to represent 'remote' and 'extended-remote' connections. ** The gdb.Inferior type now has a 'connection' property which is an instance of gdb.TargetConnection, the connection used by this inferior. This can be None if the inferior has no connection. ** New 'gdb.events.connection_removed' event registry, which emits a 'gdb.ConnectionEvent' when a connection is removed from GDB. This event has a 'connection' property, a gdb.TargetConnection object for the connection being removed. ** New gdb.connections() function that returns a list of all currently active connections. ** New gdb.RemoteTargetConnection.send_packet(PACKET) method. This is equivalent to the existing 'maint packet' CLI command; it allows a user specified packet to be sent to the remote target. ** New function gdb.host_charset(), returns a string, which is the name of the current host charset. ** New gdb.set_parameter(NAME, VALUE). This sets the gdb parameter NAME to VALUE. ** New gdb.with_parameter(NAME, VALUE). This returns a context manager that temporarily sets the gdb parameter NAME to VALUE, then resets it when the context is exited. ** The gdb.Value.format_string method now takes a 'styling' argument, which is a boolean. When true, the returned string can include escape sequences to apply styling. The styling will only be present if styling is otherwise turned on in GDB (see 'help set styling'). When false, which is the default if the argument is not given, then no styling is applied to the returned string. ** New read-only attribute gdb.InferiorThread.details, which is either a string, containing additional, target specific thread state information, or None, if there is no such additional information. ** New read-only attribute gdb.Type.is_scalar, which is True for scalar types, and False for all other types. ** New read-only attribute gdb.Type.is_signed. This attribute should only be read when Type.is_scalar is True, and will be True for signed types, and False for all other types. Attempting to read this attribute for non-scalar types will raise a ValueError. ** It is now possible to add GDB/MI commands implemented in Python. - Update libipt to v2.0.5. - Patches added: * gdb-6.3-rh-testversion-20041202.patch * gdb-6.5-BEA-testsuite.patch * gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch * gdb-6.7-charsign-test.patch * gdb-6.8-bz466901-backtrace-full-prelinked.patch * gdb-fix-for-gdb.base-eof-exit.exp-test-failures.patch * gdb-improved-eof-handling-when-using-readline-7.patch * gdb-libexec-add-index.patch * gdb-tdep-detect-get_pc_thunk-call-in-i386-prologue.patch * gdb-testsuite-address-test-failures-in-gdb.mi-mi-multi-commands.exp.patch * gdb-testsuite-detect-change-instead-of-init-in-gdb.mi-mi-var-block.exp.patch * gdb-testsuite-fix-gdb.opt-clobbered-registers-o2.exp-with-gcc-12.patch * gdb-testsuite-fix-occasional-failure-in-gdb.mi-mi-multi-commands.exp.patch * gdb-testsuite-fix-test-failure-when-building-against-readline-v7.patch * gdb-testsuite-handle-older-python-in-gdb.python-py-send-packet.py.patch * gdb-testsuite-handle-quotes-in-gdb_py_module_available.patch * gdb-testsuite-handle-unordered-dict-in-gdb.python-py-mi-cmd.exp.patch * gdb-testsuite-skip-gdb.fortran-namelist.exp-for-gfortran-4.8.patch * gdb-testsuite-workaround-unnecessary-.s-file-with-gfortran-4.8.patch - Patches dropped: * aarch64-make-gdbserver-register-set-selection-dynamic.patch * fix-build-with-current-gcc-el_explicit-location-always-non-null.patch * fix-gdb.base-sigstep.exp-test-for-ppc.patch * fix-gdb.multi-multi-term-settings.exp-race.patch * fixup-2-gdb-6.6-buildid-locate.patch * fixup-gdb-6.6-buildid-locate.patch * gdb-6.3-inferior-notification-20050721.patch * gdb-ada-fix-assert-in-ada_is_unconstrained_packed_array_type.patch * gdb-build-add-cxx_dialect-to-cxx.patch * gdb-build-make-c-exp.y-work-with-bison-3.8.patch * gdb-doc-fix-print-inferior-events-default.patch * gdb-exp-improve-error-reading-variable-message.patch * gdb-fortran-handle-dw-at-string-length-with-loclistptr.patch * gdb-r_version-check.patch * gdb-rhbz1976887-field-location-kind.patch * gdb-rhbz2012976-paper-over-fortran-lex-problems.patch * gdb-symtab-add-call_site_eq-and-call_site_hash.patch * gdb-symtab-c-ify-call_site.patch * gdb-symtab-fix-htab_find_slot-call-in-read_call_site_scope.patch * gdb-symtab-fix-segfault-in-search_one_symtab.patch * gdb-symtab-remove-compunit_call_site_htab.patch * gdb-symtab-use-unrelocated-addresses-in-call_site.patch * gdb-tdep-fix-avx512-m32-support-in-gdbserver.patch * gdb-tdep-rs6000-don-t-skip-system-call-in-skip_prologue.patch * gdb-test-for-rhbz1976887.patch * gdb-testsuite-add-gdb.arch-ppc64-break-on-_exit.exp.patch * gdb-testsuite-add-gdb.opt-break-on-_exit.exp.patch * gdb-testsuite-add-gdb.testsuite-dump-system-info.exp.patch * gdb-testsuite-add-missing-wait-in-gdb.base-signals-state-child.exp.patch * gdb-testsuite-add-nopie-in-two-test-cases.patch * gdb-testsuite-detect-no-mpx-support.patch * gdb-testsuite-disable-inferior-output-in-gdb.base-foll-vfork.exp.patch * gdb-testsuite-don-t-error-when-trying-to-unset-last_spawn_tty_name.patch * gdb-testsuite-factor-out-dump_info-in-gdb.testsuite-dump-system-info.exp.patch * gdb-testsuite-fix-assembly-comments-in-gdb.dwarf2-clang-debug-names.exp.tcl.patch * gdb-testsuite-fix-data-alignment-in-gdb.arch-i386-avx-sse-.exp.patch * gdb-testsuite-fix-fail-in-gdb.base-annota1.exp.patch * gdb-testsuite-fix-fail-in-gdb.tui-basic.exp.patch * gdb-testsuite-fix-fail-in-gdb.tui-corefile-run.exp.patch * gdb-testsuite-fix-gdb.ada-big_packed_array.exp-xfail-for-m32.patch * gdb-testsuite-fix-gdb.arch-i386-pkru.exp-on-linux.patch * gdb-testsuite-fix-gdb.base-annota1.exp-with-pie.patch * gdb-testsuite-fix-gdb.base-dcache-flush.exp.patch * gdb-testsuite-fix-gdb.gdb-selftest.exp.patch * gdb-testsuite-fix-gdb.guile-scm-type.exp-with-gcc-4.8.patch * gdb-testsuite-fix-gdb.python-py-events.exp.patch * gdb-testsuite-fix-gdb.server-server-kill.exp-with-m32.patch * gdb-testsuite-fix-gdb.threads-check-libthread-db.exp-with-glibc-2.34.patch * gdb-testsuite-fix-gdb.threads-linux-dp.exp.patch * gdb-testsuite-fix-gdb.threads-thread-specific-bp.exp.patch * gdb-testsuite-fix-port-detection-in-gdb.debuginfod-fetch_src_and_symbols.exp.patch * gdb-testsuite-fix-regexp-in-gdb.base-foll-vfork.exp.patch * gdb-testsuite-fix-stepi-test-cases-with-unix-m32-fpie-pie.patch * gdb-testsuite-handle-recursive-internal-problem-in-gdb_internal_error_resync.patch * gdb-testsuite-handle-runto-fail-in-gdb.mi-mi-var-cp.exp.patch * gdb-testsuite-handle-sigill-in-two-gdb.arch-powerpc-test-cases.patch * gdb-testsuite-handle-supports_memtag-in-gdb.base-gdb-caching-proc.exp.patch * gdb-testsuite-make-gdb.base-annota1.exp-more-robust.patch * gdb-testsuite-refactor-regexp-in-gdb.base-annota1.exp.patch * gdb-testsuite-support-fpie-fno-pie-pie-no-pie-in-gdb_compile_rust.patch * gdb-testsuite-update-test-gdb.base-step-over-syscall.exp.patch * gdb-testsuite-use-compiler-generated-instead-of-gas-generated-stabs.patch * gdb-tui-fix-breakpoint-display-functionality.patch * ibm-z-add-another-arch14-instruction.patch * ibm-z-remove-lpswey-parameter.patch - Patched updated: * gdb-6.3-gstack-20050411.patch * gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch * gdb-6.6-buildid-locate-rpm-librpm-workaround.patch * gdb-6.6-buildid-locate-rpm-scl.patch * gdb-6.6-buildid-locate-rpm.patch * gdb-6.6-buildid-locate-solib-missing-ids.patch * gdb-6.6-buildid-locate.patch * gdb-cli-add-ignore-errors-command.patch * gdb-container-rh-pkg.patch * gdb-core-open-vdso-warning.patch * gdb-fedora-libncursesw.patch * gdb-gcore-bash.patch * gdb-linux_perf-bundle.patch * gdb-testsuite-handle-init-errors-in-gdb.mi-user-selected-context-sync.exp.patch - Add BuildRequires python-xml. - Maintenance script qa.sh: * Add -sle-12 and -factory options. * Handle *.-fPIE.-pie.sum files. * Add KFAILs for PRs 26292, 29238, 25059, 29240, 29241, 29244, 29245, 29160, 29196. * Move PR27539 KFAILs from kfail_factory to kfail. - New maintenance script qa-local.sh. - New file README.qa. OBS-URL: https://build.opensuse.org/request/show/991863 OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=325
1049 lines
33 KiB
Diff
1049 lines
33 KiB
Diff
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
|
From: Fedora GDB patches <invalid@email.com>
|
|
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.
|
|
|
|
+# 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.
|
|
+
|
|
+# 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])
|
|
+
|
|
+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 <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
|
|
+
|
|
+
|
|
+# 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 -*-
|
|
|
|
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
|
diff --git a/gdb/config.in b/gdb/config.in
|
|
--- a/gdb/config.in
|
|
+++ b/gdb/config.in
|
|
@@ -39,6 +39,9 @@
|
|
/* Handle .ctf type-info sections */
|
|
#undef ENABLE_LIBCTF
|
|
|
|
+/* 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
|
|
@@ -259,6 +262,9 @@
|
|
/* Define if you have the mpfr library. */
|
|
#undef HAVE_LIBMPFR
|
|
|
|
+/* Define if librpm library is being used. */
|
|
+#undef HAVE_LIBRPM
|
|
+
|
|
/* Define to 1 if you have the <libunwind-ia64.h> header file. */
|
|
#undef HAVE_LIBUNWIND_IA64_H
|
|
|
|
diff --git a/gdb/configure b/gdb/configure
|
|
--- a/gdb/configure
|
|
+++ b/gdb/configure
|
|
@@ -775,6 +775,11 @@ TARGET_OBS
|
|
ENABLE_BFD_64_BIT_FALSE
|
|
ENABLE_BFD_64_BIT_TRUE
|
|
subdirs
|
|
+RPM_LIBS
|
|
+RPM_CFLAGS
|
|
+PKG_CONFIG_LIBDIR
|
|
+PKG_CONFIG_PATH
|
|
+PKG_CONFIG
|
|
GDB_DATADIR
|
|
DEBUGDIR
|
|
MAKEINFO_EXTRA_FLAGS
|
|
@@ -880,6 +885,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_gdbmi
|
|
@@ -959,6 +965,8 @@ PKG_CONFIG_PATH
|
|
PKG_CONFIG_LIBDIR
|
|
DEBUGINFOD_CFLAGS
|
|
DEBUGINFOD_LIBS
|
|
+RPM_CFLAGS
|
|
+RPM_LIBS
|
|
YACC
|
|
YFLAGS
|
|
XMKMF'
|
|
@@ -1635,6 +1643,8 @@ Optional Packages:
|
|
do not restrict auto-loaded files locations
|
|
--with-debuginfod Enable debuginfo lookups with debuginfod
|
|
(auto/yes/no)
|
|
+ --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
|
|
@@ -1715,6 +1725,8 @@ Some influential environment variables:
|
|
C compiler flags for DEBUGINFOD, overriding pkg-config
|
|
DEBUGINFOD_LIBS
|
|
linker flags for DEBUGINFOD, overriding pkg-config
|
|
+ RPM_CFLAGS C compiler flags for RPM, overriding pkg-config
|
|
+ RPM_LIBS linker flags for RPM, overriding pkg-config
|
|
YACC The `Yet Another Compiler Compiler' implementation to use.
|
|
Defaults to the first program found out of: `bison -y', `byacc',
|
|
`yacc'.
|
|
@@ -6634,6 +6646,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.
|
|
+# --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').
|
|
+
|
|
+
|
|
+# Check whether --with-rpm was given.
|
|
+if test "${with_rpm+set}" = set; then :
|
|
+ withval=$with_rpm;
|
|
+else
|
|
+ with_rpm="auto"
|
|
+fi
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+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"'"'
|
|
+
|
|
+ { $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. */
|
|
+
|
|
+#include <rpm/rpmlib.h>
|
|
+#include <dlfcn.h>
|
|
+#include <errno.h>
|
|
+
|
|
+int
|
|
+main ()
|
|
+{
|
|
+
|
|
+ void *h;
|
|
+ const char *const *rpmverp;
|
|
+ FILE *f;
|
|
+
|
|
+ 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);
|
|
+
|
|
+ /* Try to find the specific librpm version only for "librpm.so" as we do
|
|
+ not know how to assemble the version string otherwise. */
|
|
+
|
|
+ if (strcmp ("librpm.so", $LIBRPM_STRING) != 0)
|
|
+ {
|
|
+ fprintf (f, "%s\n", $LIBRPM_STRING);
|
|
+ return 0;
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ char *h2_name;
|
|
+ void *h2;
|
|
+ int major, minor;
|
|
+
|
|
+ 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;
|
|
+ }
|
|
+
|
|
+ ;
|
|
+ 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; }
|
|
+ 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; }
|
|
+ # 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_DLOPEN_LIBRPM=false
|
|
+ fi
|
|
+ fi
|
|
+
|
|
+ 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
|
|
+
|
|
+ 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
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+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
|
|
+
|
|
+ ;;
|
|
+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
|
|
+
|
|
+
|
|
+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
|
|
+
|
|
|
|
|
|
subdirs="$subdirs testsuite"
|
|
diff --git a/gdb/configure.ac b/gdb/configure.ac
|
|
--- a/gdb/configure.ac
|
|
+++ b/gdb/configure.ac
|
|
@@ -153,6 +153,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.
|
|
+# --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').
|
|
+
|
|
+AC_ARG_WITH([rpm],
|
|
+ [AS_HELP_STRING([--with-rpm],
|
|
+ [query rpm database for missing debuginfos (yes/no, def. auto=librpm.so)])], [], [with_rpm="auto"])
|
|
+
|
|
+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"'"'
|
|
+
|
|
+ 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;
|
|
+
|
|
+ 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);
|
|
+
|
|
+ /* Try to find the specific librpm version only for "librpm.so" as we do
|
|
+ not know how to assemble the version string otherwise. */
|
|
+
|
|
+ if (strcmp ("librpm.so", $LIBRPM_STRING) != 0)
|
|
+ {
|
|
+ fprintf (f, "%s\n", $LIBRPM_STRING);
|
|
+ return 0;
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ char *h2_name;
|
|
+ void *h2;
|
|
+ int major, minor;
|
|
+
|
|
+ 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
|
|
+
|
|
+ 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"
|
|
+ ])
|
|
+
|
|
+ if $HAVE_DLOPEN_LIBRPM; then
|
|
+ CHECK_LIBRPM_COMPAT
|
|
+ if ! $LIBRPM_COMPAT; then
|
|
+ HAVE_DLOPEN_LIBRPM=false
|
|
+ fi
|
|
+ fi
|
|
+
|
|
+ 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])
|
|
+
|
|
+ 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 $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)
|
|
|
|
# Check whether to support alternative target configurations
|
|
diff --git a/gdb/event-top.c b/gdb/event-top.c
|
|
--- a/gdb/event-top.c
|
|
+++ b/gdb/event-top.c
|
|
@@ -42,6 +42,7 @@
|
|
#include "gdbsupport/gdb-sigmask.h"
|
|
#include "async-event.h"
|
|
#include "bt-utils.h"
|
|
+#include "symfile.h"
|
|
|
|
/* readline include files. */
|
|
#include "readline/readline.h"
|
|
@@ -374,6 +375,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. */
|
|
@@ -800,7 +803,10 @@ command_line_handler (gdb::unique_xmalloc_ptr<char> &&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
|
|
@@ -342,6 +342,7 @@ extern void generic_load (const char *args, int from_tty);
|
|
/* 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 minidebug.c. */
|