diff options
-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, |