summaryrefslogtreecommitdiff
path: root/gdb/build-id.h
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2019-12-07 09:35:03 -0800
committerKeith Seitz <keiths@redhat.com>2019-12-07 12:05:41 -0800
commitaa2d5a4229eb541406d3b91a384ad6a62caf7760 (patch)
treecb77da7a06472447d1d9174c9fdc31f30311c305 /gdb/build-id.h
parent5fa370e437f39bf73a133cc84c4e6329943522bf (diff)
downloadbinutils-gdb-aa2d5a4229eb541406d3b91a384ad6a62caf7760.tar.gz
Core file build-id support
This patch uses new BFD support for detecting build-ids in core files. After this patch, it is possible to run gdb with only the core file, and gdb will automatically load the executable and debug info [example from tests]: $ gdb -nx -q (gdb) core-file corefile-buildid.core [New LWP 29471] Reading symbols from gdb.base/corefile-buildid/debugdir-exec/.build-id/36/fe5722c5a7ca3ac746a84e223c6a2a69193a24... Core was generated by `outputs/gdb.base/coref'. Program terminated with signal SIGABRT, Aborted. (gdb) This work is based on functionality available in Fedora originally written by Jan Kratochvil. Regression tested on buildbot. gdb/ChangeLog: 2019-12-07 Keith Seitz <keiths@redhat.com> * build-id.c (build_id_bfd_get): Permit bfd_core, too. (build_id_to_debug_bfd): Make static, rewriting to use build_id_to_bfd_suffix. (build_id_to_bfd_suffix): Copy of build_id_to_debug_bfd, adding `suffix' parameter. Append SUFFIX to file names when searching for matching files. (build_id_to_debug_bfd): Use build_id_to_bfd_suffix. (build_id_to_exec_bfd): Likewise. * build-id.h (build_id_to_debug_bfd): Clarify that function searches for BFD of debug info file. (build_id_to_exec_bfd): Declare. * corelow.c: Include build-id.h. (locate_exec_from_corefile_build_id): New function. (core_target_open): If no executable BFD is found, search for a core file BFD using build-id. gdb/testsuite/ChangeLog: 2019-12-07 Keith Seitz <keiths@redhat.com> * gdb.base/corefile-buildid-shlib-shr.c: New file. * gdb.base/corefile-buildid-shlib.c: New file. * gdb.base/corefile-buildid.c: New file. * gdb.base/corefile-buildid.exp: New file. Change-Id: I15e9e8e58f10c68b5cae55e2eba58df1e8aef529
Diffstat (limited to 'gdb/build-id.h')
-rw-r--r--gdb/build-id.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/gdb/build-id.h b/gdb/build-id.h
index 2835a760fae..d251bc1e5d4 100644
--- a/gdb/build-id.h
+++ b/gdb/build-id.h
@@ -34,13 +34,19 @@ extern int build_id_verify (bfd *abfd,
size_t check_len, const bfd_byte *check);
-/* Find and open a BFD given a build-id. If no BFD can be found,
- return NULL. The returned reference to the BFD must be released by
- the caller. */
+/* Find and open a BFD for a debuginfo file given a build-id. If no BFD
+ can be found, return NULL. */
extern gdb_bfd_ref_ptr build_id_to_debug_bfd (size_t build_id_len,
const bfd_byte *build_id);
+/* Find and open a BFD for an executable file given a build-id. If no BFD
+ can be found, return NULL. The returned reference to the BFD must be
+ released by the caller. */
+
+extern gdb_bfd_ref_ptr build_id_to_exec_bfd (size_t build_id_len,
+ const bfd_byte *build_id);
+
/* Find the separate debug file for OBJFILE, by using the build-id
associated with OBJFILE's BFD. If successful, returns the file name for the
separate debug file, otherwise, return an empty string. */