diff options
author | Markus Metzger <markus.t.metzger@intel.com> | 2013-11-28 16:39:12 +0100 |
---|---|---|
committer | Markus Metzger <markus.t.metzger@intel.com> | 2015-02-09 09:42:28 +0100 |
commit | d33501a51f46193387ff2d101752a9a878202f82 (patch) | |
tree | fbe786f422bb7045cc2c626314076e41ad3a346b /gdb/testsuite/gdb.btrace | |
parent | f4abbc168227003a4836dd1a5dd558f40be96372 (diff) | |
download | gdb-d33501a51f46193387ff2d101752a9a878202f82.zip gdb-d33501a51f46193387ff2d101752a9a878202f82.tar.gz gdb-d33501a51f46193387ff2d101752a9a878202f82.tar.bz2 |
record-btrace: add bts buffer size configuration option
Allow the size of the branch trace ring buffer to be defined by the
user. The specified buffer size will be used when BTS tracing is
enabled for new threads.
The obtained buffer size may differ from the requested size. The
actual buffer size for the current thread is shown in the "info record"
command.
Bigger buffers mean longer traces, but also longer processing time.
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
* btrace.c (parse_xml_btrace_conf_bts): Add size.
(btrace_conf_bts_attributes): New.
(btrace_conf_children): Add attributes.
* common/btrace-common.h (btrace_config_bts): New.
(btrace_config)<bts>: New.
(btrace_config): Update comment.
* nat/linux-btrace.c (linux_enable_btrace, linux_enable_bts):
Use config.
* features/btrace-conf.dtd: Increment version. Add size
attribute to bts element.
* record-btrace.c (set_record_btrace_bts_cmdlist,
show_record_btrace_bts_cmdlist): New.
(record_btrace_adjust_size, record_btrace_print_bts_conf,
record_btrace_print_conf, cmd_set_record_btrace_bts,
cmd_show_record_btrace_bts): New.
(record_btrace_info): Call record_btrace_print_conf.
(_initialize_record_btrace): Add commands.
* remote.c: Add PACKET_Qbtrace_conf_bts_size enum.
(remote_protocol_features): Add Qbtrace-conf:bts:size packet.
(btrace_sync_conf): Synchronize bts size.
(_initialize_remote): Add Qbtrace-conf:bts:size packet.
* NEWS: Announce new commands and new packets.
doc/
* gdb.texinfo (Branch Trace Configuration Format): Add size.
(Process Record and Replay): Describe new set|show commands.
(General Query Packets): Describe Qbtrace-conf:bts:size packet.
testsuite/
* gdb.btrace/buffer-size: New.
gdbserver/
* linux-low.c (linux_low_btrace_conf): Print size.
* server.c (handle_btrace_conf_general_set): New.
(hanle_general_set): Call handle_btrace_conf_general_set.
(handle_query): Report Qbtrace-conf:bts:size as supported.
Diffstat (limited to 'gdb/testsuite/gdb.btrace')
-rw-r--r-- | gdb/testsuite/gdb.btrace/buffer-size.exp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.btrace/buffer-size.exp b/gdb/testsuite/gdb.btrace/buffer-size.exp new file mode 100644 index 0000000..0381cc2 --- /dev/null +++ b/gdb/testsuite/gdb.btrace/buffer-size.exp @@ -0,0 +1,57 @@ +# This testcase is part of GDB, the GNU debugger. +# +# Copyright 2013-2015 Free Software Foundation, Inc. +# +# Contributed by Intel Corp. <markus.t.metzger@intel.com> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# check for btrace support +if { [skip_btrace_tests] } { return -1 } + +# start inferior +standard_testfile record_goto.c +if [prepare_for_testing $testfile.exp $testfile $srcfile] { + return -1 +} + +if ![runto_main] { + return -1 +} + +gdb_test_no_output "set record btrace bts buffer-size 1" +gdb_test "show record btrace bts buffer-size" "The record/replay bts buffer size is 1\.\r" "bts buffer size before recording" + +gdb_test_no_output "record btrace bts" +gdb_test "show record btrace bts buffer-size" "The record/replay bts buffer size is 1\.\r" "bts buffer size while recording" +gdb_test "info record" [join [list \ + "Active record target: record-btrace" \ + "Recording format: Branch Trace Store\." \ + "Buffer size: 4kB\." \ + "Recorded 0 instructions in 0 functions for \[^\\\r\\\n\]*" \ + ] "\r\n"] "info record with small bts buffer" +gdb_test "record stop" ".*" "stop recording with small bts buffer" + +gdb_test_no_output "set record btrace bts buffer-size 0" +gdb_test "show record btrace bts buffer-size" "The record/replay bts buffer size is unlimited\.\r" "unlimited bts buffer size before recording" + +gdb_test_no_output "record btrace bts" +gdb_test "show record btrace bts buffer-size" "The record/replay bts buffer size is unlimited\.\r" "unlimited bts buffer size while recording" +gdb_test "info record" [join [list \ + "Active record target: record-btrace" \ + "Recording format: Branch Trace Store\." \ + "Buffer size: .*\." \ + "Recorded 0 instructions in 0 functions for \[^\\\r\\\n\]*" \ + ] "\r\n"] "info record with unlimited bts buffer" +gdb_test "record stop" ".*" "stop recording with unlimited bts buffer" |