diff options
author | Aaron Merey <amerey@redhat.com> | 2020-02-27 19:07:01 -0500 |
---|---|---|
committer | Aaron Merey <amerey@redhat.com> | 2020-02-27 19:07:01 -0500 |
commit | e5da11393a16416afc0c0a1da9914b6424f37fa8 (patch) | |
tree | e6d5efb5e3b9b92982b7b15e77bfe36bf8749b95 /gdb | |
parent | a1f2ad114c9927d5e457d6eb6bb8ed5120b6fec8 (diff) | |
download | fsf-binutils-gdb-e5da11393a16416afc0c0a1da9914b6424f37fa8.zip fsf-binutils-gdb-e5da11393a16416afc0c0a1da9914b6424f37fa8.tar.gz fsf-binutils-gdb-e5da11393a16416afc0c0a1da9914b6424f37fa8.tar.bz2 |
gdb: Check for nullptr when computing srcpath
This fixes a regression caused by commit 0d79cdc494d5:
$ make check TESTS="gdb.dwarf2/dw2-ranges-base.exp"
[...]
ERROR: GDB process no longer exists
This error is caused by an abort during the computation of srcpath
when SYMTAB_DIRNAME (s) == NULL.
Computing srcpath only when SYMTAB_DIRNAME (s) is not NULL fixes this
error. Also change the condition for calling debuginfod_source_query
to include whether srcpath could be computed.
gdb/ChangeLog:
2020-02-27 Aaron Merey <amerey@redhat.com>
* source.c (open_source_file): Check for nullptr when computing
srcpath.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/source.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d99c178..ff2172c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-02-27 Aaron Merey <amerey@redhat.com> + + * source.c (open_source_file): Check for nullptr when computing + srcpath. + 2020-02-27 Tom Tromey <tromey@adacore.com> * dwarf2/read.c (struct field_info) <nfields>: Now a method, not a diff --git a/gdb/source.c b/gdb/source.c index 051caf5..50de939 100644 --- a/gdb/source.c +++ b/gdb/source.c @@ -1160,7 +1160,7 @@ open_source_file (struct symtab *s) std::string srcpath; if (IS_ABSOLUTE_PATH (s->filename)) srcpath = s->filename; - else + else if (SYMTAB_DIRNAME (s) != nullptr) { srcpath = SYMTAB_DIRNAME (s); srcpath += SLASH_STRING; @@ -1170,7 +1170,7 @@ open_source_file (struct symtab *s) const struct bfd_build_id *build_id = build_id_bfd_get (ofp->obfd); /* Query debuginfod for the source file. */ - if (build_id != nullptr) + if (build_id != nullptr && !srcpath.empty ()) fd = debuginfod_source_query (build_id->data, build_id->size, srcpath.c_str (), |