diff options
author | Mitchell Horne <mhorne@FreeBSD.org> | 2020-12-23 18:36:08 +0000 |
---|---|---|
committer | Mitchell Horne <mhorne@FreeBSD.org> | 2020-12-23 18:36:08 +0000 |
commit | fd29833d9a7d8355ce21743ed8c706b72ba03363 (patch) | |
tree | e2ef644e22c5f8590c083b03cf2bbbe6fb126999 /sys/gdb | |
parent | c4df8cbfde53c376d93f439eac3f45a7b4fc705e (diff) | |
download | src-fd29833d9a7d8355ce21743ed8c706b72ba03363.tar.gz src-fd29833d9a7d8355ce21743ed8c706b72ba03363.zip |
gdb(4): handle single register read packets
We support bulk reads of the register set, but not reading specific
registers via the 'p' packet. This is useful at least for the 'call'
command in gdb.
Reviewed by: cem
MFC after: 1 week
Sponsored by: NetApp, Inc.
Sponsored by: Klara, Inc.
NetApp PR: 44
Differential Revision: https://reviews.freebsd.org/D27644
Diffstat (limited to 'sys/gdb')
-rw-r--r-- | sys/gdb/gdb_main.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/gdb/gdb_main.c b/sys/gdb/gdb_main.c index 70ffe0719c45..588a97c56a40 100644 --- a/sys/gdb/gdb_main.c +++ b/sys/gdb/gdb_main.c @@ -755,6 +755,17 @@ gdb_trap(int type, int code) gdb_tx_ok(); break; } + case 'p': { /* Read register. */ + uintmax_t reg; + if (gdb_rx_varhex(®)) { + gdb_tx_err(EINVAL); + break; + } + gdb_tx_begin(0); + gdb_tx_reg(reg); + gdb_tx_end(); + break; + } case 'P': { /* Write register. */ char *val; uintmax_t reg; |