]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/python/lib/gdb/dap/memory.py
Add type-checking to DAP requests
[thirdparty/binutils-gdb.git] / gdb / python / lib / gdb / dap / memory.py
CommitLineData
d466f749
TT
1# Copyright 2023 Free Software Foundation, Inc.
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16import base64
17import gdb
18
19from .server import request, capability
20from .startup import send_gdb_with_response, in_gdb_thread
21
22
23@in_gdb_thread
24def _read_memory(addr, count):
25 buf = gdb.selected_inferior().read_memory(addr, count)
26 return base64.b64encode(buf).decode("ASCII")
27
28
29@request("readMemory")
30@capability("supportsReadMemoryRequest")
51058658 31def read_memory(*, memoryReference: str, offset: int = 0, count: int, **extra):
d466f749
TT
32 addr = int(memoryReference, 0) + offset
33 buf = send_gdb_with_response(lambda: _read_memory(addr, count))
34 return {
35 "address": hex(addr),
36 "data": buf,
37 }
38
39
40@in_gdb_thread
41def _write_memory(addr, contents):
42 buf = base64.b64decode(contents)
43 gdb.selected_inferior().write_memory(addr, buf)
44
45
46@request("writeMemory")
47@capability("supportsWriteMemoryRequest")
51058658 48def write_memory(*, memoryReference: str, offset: int = 0, data: str, **extra):
d466f749
TT
49 addr = int(memoryReference, 0) + offset
50 send_gdb_with_response(lambda: _write_memory(addr, data))
51 return {}