Don't supply DAP 'path' for non-file shared libraries

Message ID 20230725165722.1297207-1-tromey@adacore.com
State New
Headers
Series Don't supply DAP 'path' for non-file shared libraries |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 fail Testing failed
linaro-tcwg-bot/tcwg_gdb_check--master-arm success Testing passed

Commit Message

Tom Tromey July 25, 2023, 4:57 p.m. UTC
  The DAP 'module' event may include a 'path' component.  I noticed that
this is supplied even when the module in question does not come from a
file.

This patch only emits this field when the objfile corresponds to a
real file.

No test case, because I wasn't sure how to write a portable one.
However, it's clear from gdb.log on Linux:

{"type": "event", "event": "module", "body": {"reason": "new", "module": {"id": "system-supplied DSO at 0x7ffff7fc4000", "name": "system-supplied DSO at 0x7ffff7fc4000"}}, "seq": 21}

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30676
---
 gdb/python/lib/gdb/dap/modules.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Patch

diff --git a/gdb/python/lib/gdb/dap/modules.py b/gdb/python/lib/gdb/dap/modules.py
index 6ba613bcd2b..1aec1cba0ac 100644
--- a/gdb/python/lib/gdb/dap/modules.py
+++ b/gdb/python/lib/gdb/dap/modules.py
@@ -36,11 +36,13 @@  def make_module(objf):
     """Return a Module representing the objfile OBJF.
 
     The objfile must pass the 'is_module' test."""
-    return {
+    result = {
         "id": module_id(objf),
         "name": objf.username,
-        "path": objf.filename,
     }
+    if objf.is_file:
+        result["path"] = objf.filename
+    return result
 
 
 @in_gdb_thread