Don't supply DAP 'path' for non-file shared libraries
authorTom Tromey <tromey@adacore.com>
Tue, 25 Jul 2023 16:55:14 +0000 (10:55 -0600)
committerTom Tromey <tromey@adacore.com>
Tue, 1 Aug 2023 19:06:53 +0000 (13:06 -0600)
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

index 6ba613bcd2b22549eab37947370dc1372faec2b7..1aec1cba0acfafab96da9b0305efaf889e76477c 100644 (file)
@@ -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