X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fbuild-id.h;h=82af5d5d2bea5d76f553d266352daa9a9cb59c36;hb=aa1f7fb133a5a4f95af8286f58b689d6ae131488;hp=f77dda289264bece79f90f7edf2716822e6b9956;hpb=32d0add0a654c1204ab71dc8a55d9374538c4b33;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/build-id.h b/gdb/build-id.h index f77dda2892..82af5d5d2b 100644 --- a/gdb/build-id.h +++ b/gdb/build-id.h @@ -1,6 +1,6 @@ /* build-id-related functions. - Copyright (C) 1991-2015 Free Software Foundation, Inc. + Copyright (C) 1991-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -20,9 +20,12 @@ #ifndef BUILD_ID_H #define BUILD_ID_H +#include "gdb_bfd.h" +#include "gdbsupport/rsp-low.h" + /* Locate NT_GNU_BUILD_ID from ABFD and return its content. */ -extern const struct elf_build_id *build_id_bfd_get (bfd *abfd); +extern const struct bfd_build_id *build_id_bfd_get (bfd *abfd); /* Return true if ABFD has NT_GNU_BUILD_ID matching the CHECK value. Otherwise, issue a warning and return false. */ @@ -31,18 +34,34 @@ 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 bfd *build_id_to_debug_bfd (size_t build_id_len, - const bfd_byte *build_id); +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 a malloc'd - file name for the separate debug file. The caller must free this. - Otherwise, returns NULL. */ + associated with OBJFILE's BFD. If successful, returns the file name for the + separate debug file, otherwise, return an empty string. */ + +extern std::string find_separate_debug_file_by_buildid + (struct objfile *objfile); + +/* Return an hex-string representation of BUILD_ID. */ + +static inline std::string +build_id_to_string (const bfd_build_id *build_id) +{ + gdb_assert (build_id != NULL); -extern char *find_separate_debug_file_by_buildid (struct objfile *objfile); + return bin2hex (build_id->data, build_id->size); +} #endif /* BUILD_ID_H */