Implement DAP loadedSources request

This implements the DAP loadedSources request, using gdb.execute_mi to
avoid having to write another custom Python API.
This commit is contained in:
Tom Tromey
2023-03-21 14:10:18 -06:00
parent c97d123d67
commit a0b70d996c
4 changed files with 45 additions and 0 deletions

View File

@ -29,6 +29,7 @@ from . import memory
from . import next
from . import pause
from . import scopes
from . import sources
from . import threads
from .server import Server

View File

@ -0,0 +1,40 @@
# Copyright 2023 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import gdb
from .server import request, capability
from .startup import send_gdb_with_response, in_gdb_thread
@in_gdb_thread
def _sources():
result = []
for elt in gdb.execute_mi("-file-list-exec-source-files")["files"]:
result.append(
{
"name": elt["file"],
"path": elt["fullname"],
}
)
return {
"sources": result,
}
@request("loadedSources")
@capability("supportsLoadedSourcesRequest")
def sources(**extra):
return send_gdb_with_response(_sources)