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) |
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 480fd1f478..59959bcd4a 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 79799b642d..1122884ced 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 918232f6eb..3857c100b7 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 6c0b9d9f4b..63d902b6d1 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 d48c092612..88bd8afa58 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 e68be1d300..76ca0a61c1 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 03770532d8..f53870bc94 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 0f2fe5bd3a..e3febe1cc5 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 585be212ac..0276f722b3 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" |