Message ID | 20240216130817.369377-8-iii@linux.ibm.com |
---|---|
State | New |
Headers | show |
Series | gdbstub: Implement follow-fork-mode child | expand |
On 2/16/24 03:05, Ilya Leoshkevich wrote: > The upcoming follow-fork-mode child support requires advertising the > fork-events feature, which is user-specific. Introduce a user-specific > hook for this. > > Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> > --- > gdbstub/gdbstub.c | 12 +++++++++--- > gdbstub/internals.h | 1 + > gdbstub/user.c | 4 ++++ > 3 files changed, 14 insertions(+), 3 deletions(-) > > diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c > index 7e73e916bdc..43d79dfdd59 100644 > --- a/gdbstub/gdbstub.c > +++ b/gdbstub/gdbstub.c > @@ -1599,6 +1599,7 @@ static void handle_query_thread_extra(GArray *params, void *user_ctx) > > static void handle_query_supported(GArray *params, void *user_ctx) > { > + const char *gdb_supported; > CPUClass *cc; > > g_string_printf(gdbserver_state.str_buf, "PacketSize=%x", MAX_PACKET_LENGTH); > @@ -1622,9 +1623,14 @@ static void handle_query_supported(GArray *params, void *user_ctx) > g_string_append(gdbserver_state.str_buf, ";qXfer:exec-file:read+"); > #endif > > - if (params->len && > - strstr(get_param(params, 0)->data, "multiprocess+")) { > - gdbserver_state.multiprocess = true; > + if (params->len) { > + gdb_supported = get_param(params, 0)->data; Declare here. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c index 7e73e916bdc..43d79dfdd59 100644 --- a/gdbstub/gdbstub.c +++ b/gdbstub/gdbstub.c @@ -1599,6 +1599,7 @@ static void handle_query_thread_extra(GArray *params, void *user_ctx) static void handle_query_supported(GArray *params, void *user_ctx) { + const char *gdb_supported; CPUClass *cc; g_string_printf(gdbserver_state.str_buf, "PacketSize=%x", MAX_PACKET_LENGTH); @@ -1622,9 +1623,14 @@ static void handle_query_supported(GArray *params, void *user_ctx) g_string_append(gdbserver_state.str_buf, ";qXfer:exec-file:read+"); #endif - if (params->len && - strstr(get_param(params, 0)->data, "multiprocess+")) { - gdbserver_state.multiprocess = true; + if (params->len) { + gdb_supported = get_param(params, 0)->data; + if (strstr(gdb_supported, "multiprocess+")) { + gdbserver_state.multiprocess = true; + } +#if defined(CONFIG_USER_ONLY) + gdb_handle_query_supported_user(gdb_supported); +#endif } g_string_append(gdbserver_state.str_buf, ";vContSupported+;multiprocess+"); diff --git a/gdbstub/internals.h b/gdbstub/internals.h index 56b7c13b750..e6063835b1f 100644 --- a/gdbstub/internals.h +++ b/gdbstub/internals.h @@ -196,6 +196,7 @@ void gdb_handle_v_file_pread(GArray *params, void *user_ctx); /* user */ void gdb_handle_v_file_readlink(GArray *params, void *user_ctx); /* user */ void gdb_handle_query_xfer_exec_file(GArray *params, void *user_ctx); /* user */ void gdb_handle_set_catch_syscalls(GArray *params, void *user_ctx); /* user */ +void gdb_handle_query_supported_user(const char *gdb_supported); /* user */ void gdb_handle_query_attached(GArray *params, void *user_ctx); /* both */ diff --git a/gdbstub/user.c b/gdbstub/user.c index 6ac9b684427..d8db5bd3949 100644 --- a/gdbstub/user.c +++ b/gdbstub/user.c @@ -382,6 +382,10 @@ void gdbserver_fork_end(pid_t pid) disable_gdbstub(); } +void gdb_handle_query_supported_user(const char *gdb_supported) +{ +} + /* * Execution state helpers */
The upcoming follow-fork-mode child support requires advertising the fork-events feature, which is user-specific. Introduce a user-specific hook for this. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> --- gdbstub/gdbstub.c | 12 +++++++++--- gdbstub/internals.h | 1 + gdbstub/user.c | 4 ++++ 3 files changed, 14 insertions(+), 3 deletions(-)