gdbserver: do not report btrace support if target does not announce it

Gdbserver unconditionally reports support for btrace packets.  Do not
report the support, if the underlying target does not say it supports
it.  Otherwise GDB would query the server with btrace-related packets
unnecessarily.
This commit is contained in:
Tankut Baris Aktemur 2022-11-09 17:46:21 +01:00
parent 97e20099d3
commit 8263b346fa
5 changed files with 19 additions and 1 deletions

View File

@ -6712,6 +6712,12 @@ linux_process_target::qxfer_libraries_svr4 (const char *annex,
#ifdef HAVE_LINUX_BTRACE
bool
linux_process_target::supports_btrace ()
{
return true;
}
btrace_target_info *
linux_process_target::enable_btrace (thread_info *tp,
const btrace_config *conf)

View File

@ -275,6 +275,8 @@ public:
bool supports_agent () override;
#ifdef HAVE_LINUX_BTRACE
bool supports_btrace () override;
btrace_target_info *enable_btrace (thread_info *tp,
const btrace_config *conf) override;

View File

@ -2475,7 +2475,8 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
if (target_supports_agent ())
strcat (own_buf, ";QAgent+");
supported_btrace_packets (own_buf);
if (the_target->supports_btrace ())
supported_btrace_packets (own_buf);
if (target_supports_stopped_by_sw_breakpoint ())
strcat (own_buf, ";swbreak+");

View File

@ -694,6 +694,12 @@ process_stratum_target::supports_agent ()
return false;
}
bool
process_stratum_target::supports_btrace ()
{
return false;
}
btrace_target_info *
process_stratum_target::enable_btrace (thread_info *tp,
const btrace_config *conf)

View File

@ -388,6 +388,9 @@ public:
/* Return true if target supports debugging agent. */
virtual bool supports_agent ();
/* Return true if target supports btrace. */
virtual bool supports_btrace ();
/* Enable branch tracing for TP based on CONF and allocate a branch trace
target information struct for reading and for disabling branch trace. */
virtual btrace_target_info *enable_btrace (thread_info *tp,