gdb/dap: only include sourceReference if file path does not exist
authorGregory Anders <greg@gpanders.com>
Fri, 1 Sep 2023 21:02:20 +0000 (16:02 -0500)
committerTom Tromey <tromey@adacore.com>
Wed, 20 Sep 2023 16:59:47 +0000 (10:59 -0600)
commit0b7de6d3ee07653e97e65a2968742c93b7102f62
tree4f90cf6e3dfa02f9bd013e86db73b02eb5a7c0df
parent61830fcb31d9b66c7af76eefc152b66a170fb49c
gdb/dap: only include sourceReference if file path does not exist

According to the DAP specification if the "sourceReference" field is
included in a Source object, then the DAP client _must_ make a "source"
request to the debugger to retrieve file contents, even if the Source
object also includes path information.

If the Source's path field is a valid path that the DAP client is able
to read from the filesystem, having to make another request to the
debugger to get the file contents is wasteful and leads to incorrect
results (DAP clients will try to get the contents from the server and
display those contents as a file with the name in "source.path", but
this will conflict with the _acutal_ existing file at "source.path").

Instead, only set "sourceReference" if the source file path does not
exist.

Approved-By: Tom Tromey <tom@tromey.com>
gdb/python/lib/gdb/dap/sources.py
gdb/testsuite/gdb.dap/sources.exp