Allow gdb to find debug symbols file by build-id for PE file format also
This promotes BFD's struct elf_build_id to the generic struct bfd_build_id, populated when an ELF or PE BFD is read. gdb is updated to use that, and to use the build-id to find symbols for PE files also. There is currently no generic way to extract the build-id from an object file, perhaps an option to objdump to do this might make sense? On x86_64-pc-cygwin, gdb's sepdebug.exp changes: -# of unsupported tests 1 +# of expected passes 90 I don't seem to get consistent testsuite runs on i686-linux-gnu, but there don't appear to be any regressions. bfd/ChangeLog: 2015-06-10 Jon Turney <jon.turney@dronecode.org.uk> * elf-bfd.h : Remove struct elf_build_id. * bfd.c : Add struct bfd_build_id. * bfd-in2.h: Regenerate. * elf.c (elfobj_grok_gnu_build_id): Update to use bfd_build_id. * libpei.h: Add protoype and macros for bfd_XXi_slurp_codeview_record. * peXXigen.c (_bfd_XXi_slurp_codeview_record): Make public * peicode.h (pe_bfd_read_buildid): Add. (pe_bfd_object_p): Use pe_bfd_read_buildid(). gdb/ChangeLog: 2015-06-10 Jon Turney <jon.turney@dronecode.org.uk> * build-id.c: Don't include elf-bfd.h. (build_id_bfd_get): Use bfd_build_id. (build_id_verify): Ditto. * build-id.h: Ditto. (find_separate_debug_file_by_buildid): Ditto. * python/py-objfile.c: Don't include elf-bfd.h. (objfpy_get_build_id) Use bfd_build_id. (objfpy_build_id_matches, objfpy_lookup_objfile_by_build_id): Ditto. * coffread.c: Include build-id.h. (coff_symfile_read): Try find_separate_debug_file_by_buildid. gdb/doc/ChangeLog: 2015-06-10 Jon Turney <jon.turney@dronecode.org.uk> * gdb.texinfo (Separate Debug Files): Document that PE is also supported. gdb/testsuite/ChangeLog: 2015-06-10 Jon Turney <jon.turney@dronecode.org.uk> * gdb.base/sepdebug.exp: Add EXEEXT where needed. * lib/gdb.exp (get_build_id): Teach how to extract build-id from a PE file. * lib/future.exp (gdb_find_objdump): Add gdb_find_objdump. Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
This commit is contained in:
parent
f20c58f51f
commit
c74f7d1c6c
19 changed files with 231 additions and 66 deletions
|
@ -23,7 +23,6 @@
|
|||
#include "objfiles.h"
|
||||
#include "language.h"
|
||||
#include "build-id.h"
|
||||
#include "elf-bfd.h"
|
||||
#include "symtab.h"
|
||||
|
||||
typedef struct
|
||||
|
@ -134,7 +133,7 @@ objfpy_get_build_id (PyObject *self, void *closure)
|
|||
{
|
||||
objfile_object *obj = (objfile_object *) self;
|
||||
struct objfile *objfile = obj->objfile;
|
||||
const struct elf_build_id *build_id = NULL;
|
||||
const struct bfd_build_id *build_id = NULL;
|
||||
|
||||
OBJFPY_REQUIRE_VALID (obj);
|
||||
|
||||
|
@ -484,7 +483,7 @@ objfpy_build_id_ok (const char *string)
|
|||
It is assumed that objfpy_build_id_ok (string) returns TRUE. */
|
||||
|
||||
static int
|
||||
objfpy_build_id_matches (const struct elf_build_id *build_id,
|
||||
objfpy_build_id_matches (const struct bfd_build_id *build_id,
|
||||
const char *string)
|
||||
{
|
||||
size_t i;
|
||||
|
@ -542,7 +541,7 @@ objfpy_lookup_objfile_by_build_id (const char *build_id)
|
|||
|
||||
ALL_OBJFILES (objfile)
|
||||
{
|
||||
const struct elf_build_id *obfd_build_id;
|
||||
const struct bfd_build_id *obfd_build_id;
|
||||
|
||||
if (objfile->obfd == NULL)
|
||||
continue;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue