diff options
author | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2022-11-09 17:46:21 +0100 |
---|---|---|
committer | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2022-11-09 17:46:21 +0100 |
commit | 8263b346fa07e3f679b05a8b369d491af51e6de8 (patch) | |
tree | dfff8b66f8274737d3b94d82ad0fe44100ade66a | |
parent | 97e20099d3b02baafe244e975aebe09020d2ab34 (diff) | |
download | gdb-8263b346fa07e3f679b05a8b369d491af51e6de8.zip gdb-8263b346fa07e3f679b05a8b369d491af51e6de8.tar.gz gdb-8263b346fa07e3f679b05a8b369d491af51e6de8.tar.bz2 |
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.
-rw-r--r-- | gdbserver/linux-low.cc | 6 | ||||
-rw-r--r-- | gdbserver/linux-low.h | 2 | ||||
-rw-r--r-- | gdbserver/server.cc | 3 | ||||
-rw-r--r-- | gdbserver/target.cc | 6 | ||||
-rw-r--r-- | gdbserver/target.h | 3 |
5 files changed, 19 insertions, 1 deletions
diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc index 1676328..0cbfeb9 100644 --- a/gdbserver/linux-low.cc +++ b/gdbserver/linux-low.cc @@ -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) diff --git a/gdbserver/linux-low.h b/gdbserver/linux-low.h index 79be31b..1594f06 100644 --- a/gdbserver/linux-low.h +++ b/gdbserver/linux-low.h @@ -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; diff --git a/gdbserver/server.cc b/gdbserver/server.cc index 366a843..aaef38e 100644 --- a/gdbserver/server.cc +++ b/gdbserver/server.cc @@ -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+"); diff --git a/gdbserver/target.cc b/gdbserver/target.cc index adcfe6e..c06a676 100644 --- a/gdbserver/target.cc +++ b/gdbserver/target.cc @@ -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) diff --git a/gdbserver/target.h b/gdbserver/target.h index 6c536a3..18ab969 100644 --- a/gdbserver/target.h +++ b/gdbserver/target.h @@ -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, |