Skip to content

Commit

Permalink
kgdb: enable arch to support XML packet.
Browse files Browse the repository at this point in the history
The XML packet could be supported by required architecture if the
architecture defines CONFIG_HAVE_ARCH_KGDB_QXFER_PKT and implement its own
kgdb_arch_handle_qxfer_pkt(). Except for the kgdb_arch_handle_qxfer_pkt(),
the architecture also needs to record the feature supported by gdb stub
into the kgdb_arch_gdb_stub_feature, and these features will be reported
to host gdb when gdb stub receives the qSupported packet.

Signed-off-by: Vincent Chen <[email protected]>
Acked-by: Daniel Thompson <[email protected]>
Signed-off-by: Palmer Dabbelt <[email protected]>
  • Loading branch information
VincentZWC authored and palmer-dabbelt committed Jul 10, 2020
1 parent dcb7fd8 commit 8c080d3
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 0 deletions.
11 changes: 11 additions & 0 deletions include/linux/kgdb.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,17 @@ kgdb_arch_handle_exception(int vector, int signo, int err_code,
char *remcom_out_buffer,
struct pt_regs *regs);

/**
* kgdb_arch_handle_qxfer_pkt - Handle architecture specific GDB XML
* packets.
* @remcom_in_buffer: The buffer of the packet we have read.
* @remcom_out_buffer: The buffer of %BUFMAX bytes to write a packet into.
*/

extern void
kgdb_arch_handle_qxfer_pkt(char *remcom_in_buffer,
char *remcom_out_buffer);

/**
* kgdb_call_nmi_hook - Call kgdb_nmicallback() on the current CPU
* @ignored: This parameter is only here to match the prototype.
Expand Down
13 changes: 13 additions & 0 deletions kernel/debug/gdbstub.c
Original file line number Diff line number Diff line change
Expand Up @@ -792,6 +792,19 @@ static void gdb_cmd_query(struct kgdb_state *ks)
}
break;
#endif
#ifdef CONFIG_HAVE_ARCH_KGDB_QXFER_PKT
case 'S':
if (!strncmp(remcom_in_buffer, "qSupported:", 11))
strcpy(remcom_out_buffer, kgdb_arch_gdb_stub_feature);
break;
case 'X':
if (!strncmp(remcom_in_buffer, "qXfer:", 6))
kgdb_arch_handle_qxfer_pkt(remcom_in_buffer,
remcom_out_buffer);
break;
#endif
default:
break;
}
}

Expand Down
5 changes: 5 additions & 0 deletions lib/Kconfig.kgdb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
config HAVE_ARCH_KGDB
bool

# set if architecture has the its kgdb_arch_handle_qxfer_pkt
# function to enable gdb stub to address XML packet sent from GDB.
config HAVE_ARCH_KGDB_QXFER_PKT
bool

menuconfig KGDB
bool "KGDB: kernel debugger"
depends on HAVE_ARCH_KGDB
Expand Down

0 comments on commit 8c080d3

Please sign in to comment.