diff options
author | Markus Metzger <markus.t.metzger@intel.com> | 2013-11-28 15:44:13 +0100 |
---|---|---|
committer | Markus Metzger <markus.t.metzger@intel.com> | 2015-02-09 09:38:55 +0100 |
commit | f4abbc168227003a4836dd1a5dd558f40be96372 (patch) | |
tree | f35162a46e74f2305cedf76f187f6f61d1e1e257 /gdb/testsuite/gdb.btrace | |
parent | aadf7753fd4cc3d9eb1cd0c089fd7a483b58f59e (diff) | |
download | gdb-f4abbc168227003a4836dd1a5dd558f40be96372.zip gdb-f4abbc168227003a4836dd1a5dd558f40be96372.tar.gz gdb-f4abbc168227003a4836dd1a5dd558f40be96372.tar.bz2 |
record btrace: add configuration struct
Add a struct to describe the branch trace configuration and use it for
enabling branch tracing.
The user will be able to set configuration fields for each tracing format
to be used for new threads.
The actual configuration that is active for a given thread will be shown
in the "info record" command.
At the moment, the configuration struct only contains a format field
that is set to the only available format.
The format is the only configuration option that can not be set via set
commands. It is given as argument to the "record btrace" command when
starting recording.
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
* Makefile.in (XMLFILES): Add btrace-conf.dtd.
* x86-linux-nat.c (x86_linux_enable_btrace): Update parameters.
(x86_linux_btrace_conf): New.
(x86_linux_create_target): Initialize to_btrace_conf.
* nat/linux-btrace.c (linux_enable_btrace): Update parameters.
Check format. Split into this and ...
(linux_enable_bts): ... this.
(linux_btrace_conf): New.
(perf_event_skip_record): Renamed into ...
(perf_event_skip_bts_record): ... this. Updated users.
(linux_disable_btrace): Split into this and ...
(linux_disable_bts): ... this.
(linux_read_btrace): Check format.
* nat/linux-btrace.h (linux_enable_btrace): Update parameters.
(linux_btrace_conf): New.
(btrace_target_info)<ptid>: Moved.
(btrace_target_info)<conf>: New.
(btrace_target_info): Split into this and ...
(btrace_tinfo_bts): ... this. Updated users.
* btrace.c (btrace_enable): Update parameters.
(btrace_conf, parse_xml_btrace_conf_bts, parse_xml_btrace_conf)
(btrace_conf_children, btrace_conf_attributes)
(btrace_conf_elements): New.
* btrace.h (btrace_enable): Update parameters.
(btrace_conf, parse_xml_btrace_conf): New.
* common/btrace-common.h (btrace_config): New.
* feature/btrace-conf.dtd: New.
* record-btrace.c (record_btrace_conf): New.
(record_btrace_cmdlist): New.
(record_btrace_enable_warn, record_btrace_open): Pass
&record_btrace_conf.
(record_btrace_info): Print recording format.
(cmd_record_btrace_bts_start): New.
(cmd_record_btrace_start): Call cmd_record_btrace_bts_start.
(_initialize_record_btrace): Add "record btrace bts" subcommand.
Add "record bts" alias command.
* remote.c (remote_state)<btrace_config>: New.
(remote_btrace_reset, PACKET_qXfer_btrace_conf): New.
(remote_protocol_features): Add qXfer:btrace-conf:read.
(remote_open_1): Call remote_btrace_reset.
(remote_xfer_partial): Handle TARGET_OBJECT_BTRACE_CONF.
(btrace_target_info)<conf>: New.
(btrace_sync_conf, btrace_read_config): New.
(remote_enable_btrace): Update parameters. Call btrace_sync_conf and
btrace_read_conf.
(remote_btrace_conf): New.
(init_remote_ops): Initialize to_btrace_conf.
(_initialize_remote): Add qXfer:btrace-conf packet.
* target.c (target_enable_btrace): Update parameters.
(target_btrace_conf): New.
* target.h (target_enable_btrace): Update parameters.
(target_btrace_conf): New.
(target_object)<TARGET_OBJECT_BTRACE_CONF>: New.
(target_ops)<to_enable_btrace>: Update parameters and comment.
(target_ops)<to_btrace_conf>: New.
* target-delegates: Regenerate.
* target-debug.h (target_debug_print_const_struct_btrace_config_p)
(target_debug_print_const_struct_btrace_target_info_p): New.
NEWS: Announce new command and new packet.
doc/
* gdb.texinfo (Process Record and Replay): Describe the "record
btrace bts" command.
(General Query Packets): Describe qXfer:btrace-conf:read packet.
(Branch Trace Configuration Format): New.
gdbserver/
* linux-low.c (linux_low_enable_btrace): Update parameters.
(linux_low_btrace_conf): New.
(linux_target_ops)<to_btrace_conf>: Initialize.
* server.c (current_btrace_conf): New.
(handle_btrace_enable): Rename to ...
(handle_btrace_enable_bts): ... this. Pass ¤t_btrace_conf
to target_enable_btrace. Update comment. Update users.
(handle_qxfer_btrace_conf): New.
(qxfer_packets): Add btrace-conf entry.
(handle_query): Report qXfer:btrace-conf:read as supported packet.
* target.h (target_ops)<enable_btrace>: Update parameters and comment.
(target_ops)<read_btrace_conf>: New.
(target_enable_btrace): Update parameters.
(target_read_btrace_conf): New.
testsuite/
* gdb.btrace/delta.exp: Update "info record" output.
* gdb.btrace/enable.exp: Update "info record" output.
* gdb.btrace/finish.exp: Update "info record" output.
* gdb.btrace/instruction_history.exp: Update "info record" output.
* gdb.btrace/next.exp: Update "info record" output.
* gdb.btrace/nexti.exp: Update "info record" output.
* gdb.btrace/step.exp: Update "info record" output.
* gdb.btrace/stepi.exp: Update "info record" output.
* gdb.btrace/nohist.exp: Update "info record" output.
Diffstat (limited to 'gdb/testsuite/gdb.btrace')
-rw-r--r-- | gdb/testsuite/gdb.btrace/delta.exp | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.btrace/enable.exp | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.btrace/finish.exp | 1 | ||||
-rw-r--r-- | gdb/testsuite/gdb.btrace/instruction_history.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.btrace/next.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.btrace/nexti.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.btrace/nohist.exp | 1 | ||||
-rw-r--r-- | gdb/testsuite/gdb.btrace/step.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.btrace/stepi.exp | 2 |
9 files changed, 18 insertions, 2 deletions
diff --git a/gdb/testsuite/gdb.btrace/delta.exp b/gdb/testsuite/gdb.btrace/delta.exp index 480fd1f..59959bc 100644 --- a/gdb/testsuite/gdb.btrace/delta.exp +++ b/gdb/testsuite/gdb.btrace/delta.exp @@ -39,6 +39,7 @@ gdb_test_no_output "record btrace" with_test_prefix "no trace" { gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 0 instructions in 0 functions for .*" \ ] "\r\n"] gdb_test "record instruction-history" "No trace\." @@ -51,6 +52,7 @@ gdb_test "stepi" proc check_trace {} { gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 1 instructions in 1 functions for .*" \ ] "\r\n"] gdb_test "record instruction-history /f 1" \ @@ -71,6 +73,7 @@ with_test_prefix "twice" { gdb_test "reverse-stepi" gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 1 instructions in 1 functions for .*" \ "Replay in progress\. At instruction 1\." \ ] "\r\n"] "reverse-stepi" @@ -79,5 +82,6 @@ gdb_test "info record" [join [list \ gdb_test "stepi" gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 1 instructions in 1 functions for .*" \ ] "\r\n"] "and back" diff --git a/gdb/testsuite/gdb.btrace/enable.exp b/gdb/testsuite/gdb.btrace/enable.exp index 79799b6..1122884 100644 --- a/gdb/testsuite/gdb.btrace/enable.exp +++ b/gdb/testsuite/gdb.btrace/enable.exp @@ -56,7 +56,9 @@ gdb_test "record btrace" "The process is already being recorded\\. Use \"record gdb_test "record full" "The process is already being recorded\\. Use \"record stop\" to stop recording first\\." "record full cannot be enabled" # no trace recorded yet -gdb_test "info record" "Active record target: record-btrace\r\nRecorded 0 instructions in 0 functions for thread 1.*\\." "info record without trace" +gdb_test "info record" "Active record target: record-btrace\r +.*\r +Recorded 0 instructions in 0 functions for thread 1.*\\." "info record without trace" # stop btrace record gdb_test "record stop" "Process record is stopped and all execution logs are deleted\\." "record stop" diff --git a/gdb/testsuite/gdb.btrace/finish.exp b/gdb/testsuite/gdb.btrace/finish.exp index 918232f..3857c10 100644 --- a/gdb/testsuite/gdb.btrace/finish.exp +++ b/gdb/testsuite/gdb.btrace/finish.exp @@ -37,6 +37,7 @@ gdb_test "next" proc check_replay_at { insn } { gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 40 instructions in 16 functions for .*" \ "Replay in progress\. At instruction $insn\." \ ] "\r\n"] diff --git a/gdb/testsuite/gdb.btrace/instruction_history.exp b/gdb/testsuite/gdb.btrace/instruction_history.exp index 6c0b9d9..63d902b 100644 --- a/gdb/testsuite/gdb.btrace/instruction_history.exp +++ b/gdb/testsuite/gdb.btrace/instruction_history.exp @@ -50,7 +50,7 @@ gdb_continue_to_breakpoint "cont to $bp_location" ".*$srcfile2:$bp_location.*" set traced {} set testname "determine number of recorded instructions" gdb_test_multiple "info record" $testname { - -re "Active record target: record-btrace\r\nRecorded \(\[0-9\]*\) instructions in \(\[0-9\]*\) functions for thread 1 .*\\.\r\n$gdb_prompt $" { + -re "Active record target: record-btrace\r\n.*\r\nRecorded \(\[0-9\]*\) instructions in \(\[0-9\]*\) functions for thread 1 .*\\.\r\n$gdb_prompt $" { set traced $expect_out(1,string) pass $testname } diff --git a/gdb/testsuite/gdb.btrace/next.exp b/gdb/testsuite/gdb.btrace/next.exp index d48c092..88bd8af 100644 --- a/gdb/testsuite/gdb.btrace/next.exp +++ b/gdb/testsuite/gdb.btrace/next.exp @@ -37,6 +37,7 @@ gdb_test "next" proc check_replay_at { insn } { gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 40 instructions in 16 functions for .*" \ "Replay in progress\. At instruction $insn\." \ ] "\r\n"] @@ -55,6 +56,7 @@ with_test_prefix "reverse-next - 2" { check_replay_at 1 } gdb_test "next" ".*main\.3.*" gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 40 instructions in 16 functions for \[^\\\r\\\n\]*" \ ] "\r\n"] "next back" diff --git a/gdb/testsuite/gdb.btrace/nexti.exp b/gdb/testsuite/gdb.btrace/nexti.exp index e68be1d..76ca0a6 100644 --- a/gdb/testsuite/gdb.btrace/nexti.exp +++ b/gdb/testsuite/gdb.btrace/nexti.exp @@ -37,6 +37,7 @@ gdb_test "next" proc check_replay_at { insn } { gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 40 instructions in 16 functions for .*" \ "Replay in progress\. At instruction $insn\." \ ] "\r\n"] @@ -55,6 +56,7 @@ with_test_prefix "reverse-nexti - 1" { check_replay_at 1 } gdb_test "nexti" ".*main\.3.*" "next, 1.5" gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 40 instructions in 16 functions for \[^\\\r\\\n\]*" \ ] "\r\n"] "nexti back" diff --git a/gdb/testsuite/gdb.btrace/nohist.exp b/gdb/testsuite/gdb.btrace/nohist.exp index 0377053..f53870b 100644 --- a/gdb/testsuite/gdb.btrace/nohist.exp +++ b/gdb/testsuite/gdb.btrace/nohist.exp @@ -33,6 +33,7 @@ if ![runto_main] { proc check_not_replaying {} { gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 0 instructions in 0 functions for \[^\\\r\\\n\]*" \ ] "\r\n"] } diff --git a/gdb/testsuite/gdb.btrace/step.exp b/gdb/testsuite/gdb.btrace/step.exp index 0f2fe5b..e3febe1 100644 --- a/gdb/testsuite/gdb.btrace/step.exp +++ b/gdb/testsuite/gdb.btrace/step.exp @@ -37,6 +37,7 @@ gdb_test "next" proc check_replay_at { insn } { gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 40 instructions in 16 functions for .*" \ "Replay in progress\. At instruction $insn\." \ ] "\r\n"] @@ -85,5 +86,6 @@ with_test_prefix "step to 39" { check_replay_at 39 } gdb_test "step" ".*main\.3.*" gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 40 instructions in 16 functions for \[^\\\r\\\n\]*" \ ] "\r\n"] "step to live" diff --git a/gdb/testsuite/gdb.btrace/stepi.exp b/gdb/testsuite/gdb.btrace/stepi.exp index 585be21..0276f72 100644 --- a/gdb/testsuite/gdb.btrace/stepi.exp +++ b/gdb/testsuite/gdb.btrace/stepi.exp @@ -35,6 +35,7 @@ if ![runto_main] { proc check_replay_at { insn } { gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 40 instructions in 16 functions for .*" \ "Replay in progress\. At instruction $insn\." \ ] "\r\n"] @@ -59,6 +60,7 @@ with_test_prefix "stepi to 40" { check_replay_at 40 } gdb_test "stepi" ".*main\.3.*" gdb_test "info record" [join [list \ "Active record target: record-btrace" \ + "Recording format: .*" \ "Recorded 40 instructions in 16 functions for \[^\\\r\\\n\]*" \ ] "\r\n"] "stepi to live" |