summaryrefslogtreecommitdiff
path: root/gdb/elfread.c
diff options
context:
space:
mode:
authorAaron Merey <amerey@redhat.com>2022-08-30 20:18:11 -0400
committerAaron Merey <amerey@redhat.com>2022-08-30 20:20:28 -0400
commit803584b96d97e1f6ea50b0a0064d2a03ab0baa60 (patch)
treea6f13695e3196fa6fbb69560271ba8b7e0b5bed6 /gdb/elfread.c
parent649cd1d8df4d927b21b8178dcad1041ad674d672 (diff)
downloadbinutils-gdb-803584b96d97e1f6ea50b0a0064d2a03ab0baa60.tar.gz
gdb/elfread.c: Use bfd filename instead of objfile->original_name
The call to debuginfod_debuginfo_query in elf_symfile_read is given objfile->original_name as the filename to print when downloading the objfile's debuginfo. In some cases original_name is prefixed with gdb's working directory even though the objfile is not located in the working directory. This causes debuginfod to display the wrong path of the objfile during a download. Fix this by using the objfile's bfd filename instead.
Diffstat (limited to 'gdb/elfread.c')
-rw-r--r--gdb/elfread.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 08db208ebbb..13dbaf0227a 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -1279,13 +1279,14 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
has_dwarf2 = false;
const struct bfd_build_id *build_id
= build_id_bfd_get (objfile->obfd.get ());
+ const char *filename = bfd_get_filename (objfile->obfd.get ());
if (build_id != nullptr)
{
gdb::unique_xmalloc_ptr<char> symfile_path;
scoped_fd fd (debuginfod_debuginfo_query (build_id->data,
build_id->size,
- objfile->original_name,
+ filename,
&symfile_path));
if (fd.get () >= 0)
@@ -1295,7 +1296,7 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
if (debug_bfd == nullptr)
warning (_("File \"%s\" from debuginfod cannot be opened as bfd"),
- objfile->original_name);
+ filename);
else if (build_id_verify (debug_bfd.get (), build_id->size, build_id->data))
{
symbol_file_add_separate (debug_bfd, symfile_path.get (),