From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23495 invoked by alias); 5 Apr 2013 12:37:19 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 23476 invoked by uid 9674); 5 Apr 2013 12:37:18 -0000 Date: Fri, 05 Apr 2013 12:37:00 -0000 Message-ID: <20130405123718.23440.qmail@sourceware.org> From: jkratoch@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] archer-jankratochvil-man: Merge remote-tracking branch 'gdb/master' into archer-jankratochvil-man X-Git-Refname: refs/heads/archer-jankratochvil-man X-Git-Reftype: branch X-Git-Oldrev: d8bb86660fb60b11a9abd1269e94966a3d2f98f0 X-Git-Newrev: 8cc07613956e55777845c9a9f3935dafd6578f10 X-SW-Source: 2013-q2/txt/msg00006.txt.bz2 List-Id: The branch, archer-jankratochvil-man has been updated via 8cc07613956e55777845c9a9f3935dafd6578f10 (commit) via e96bd93d436e464a532a7e1161e1d201c9fc50c7 (commit) via b2851906d6c59f38b5db1ae7d721d2cbeca8d8d0 (commit) via b9de126054c8742203f08a94d43c5dc366d1602d (commit) via 2035b9113ceae4472a9940942dcf12367f1f9c2b (commit) via 43dfd31eb5b4c9478ddc1ce76df06c60251eafcc (commit) via 1f6b2f52a0c610d72b384a96f53ad4cd5d8d5268 (commit) via 509ca9a81d12cfdf95acd361483da5a77bded285 (commit) from d8bb86660fb60b11a9abd1269e94966a3d2f98f0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 8cc07613956e55777845c9a9f3935dafd6578f10 Merge: d8bb866 e96bd93 Author: Jan Kratochvil Date: Fri Apr 5 14:37:06 2013 +0200 Merge remote-tracking branch 'gdb/master' into archer-jankratochvil-man commit e96bd93d436e464a532a7e1161e1d201c9fc50c7 Author: Nick Clifton Date: Fri Apr 5 09:08:28 2013 +0000 * elflink.c (elf_link_add_object_symbols): Revert accidental commit. commit b2851906d6c59f38b5db1ae7d721d2cbeca8d8d0 Author: gdbadmin Date: Fri Apr 5 00:00:02 2013 +0000 *** empty log message *** commit b9de126054c8742203f08a94d43c5dc366d1602d Author: Alan Modra Date: Thu Apr 4 23:00:05 2013 +0000 daily update commit 2035b9113ceae4472a9940942dcf12367f1f9c2b Author: Sandra Loosemore Date: Thu Apr 4 21:01:40 2013 +0000 2013-04-04 Sandra Loosemore gdb/testsuite/ * gdb.cp/cplabel.exp: Allow empty directory in file reported for breakpoint location. commit 43dfd31eb5b4c9478ddc1ce76df06c60251eafcc Author: Sandra Loosemore Date: Thu Apr 4 20:59:11 2013 +0000 2013-04-04 Sandra Loosemore gdb/testsuite/ * gdb.linespec/linespec.exp: Make dir/file:line tests conditional for non-remote hosts only. commit 1f6b2f52a0c610d72b384a96f53ad4cd5d8d5268 Author: Pedro Alves Date: Thu Apr 4 19:22:37 2013 +0000 tracepoint->step_count fixes If a tracepoint's actions list includes a while-stepping action, and then the actions are changed to a list without any while-stepping action, the tracepoint's step_count will be left with a stale value. For example: (gdb) trace subr Tracepoint 1 at 0x4004d9: file ../../../src/gdb/testsuite//actions-changed.c, line 31. (gdb) actions Enter actions for tracepoint 1, one per line. End with a line saying just "end". >collect $reg >end (gdb) set debug remote 1 (gdb) tstart Sending packet: $QTinit#59...Packet received: OK Sending packet: $QTDP:1:00000000004004d9:E:0:0-#a3...Packet received: OK Sending packet: $QTDP:-1:00000000004004d9:R03FFFFFFFFFFFFFFFFFF#2b...Packet received: OK (gdb) tstop Sending packet: $QTStop#4b...Packet received: OK Sending packet: $QTNotes:#e8...Packet received: OK (gdb) actions Enter actions for tracepoint 1, one per line. End with a line saying just "end". >collect $reg >while-stepping 1 >collect $reg >end >end (gdb) tstart Sending packet: $QTinit#59...Packet received: OK Sending packet: $QTDP:1:00000000004004d9:E:1:0-#a4...Packet received: OK Sending packet: $QTDP:-1:00000000004004d9:R03FFFFFFFFFFFFFFFFFF-#58...Packet received: OK Sending packet: $QTDP:-1:00000000004004d9:SR03FFFFFFFFFFFFFFFFFF#7e...Packet received: OK (gdb) tstop Sending packet: $QTStop#4b...Packet received: OK Sending packet: $QTNotes:#e8...Packet received: OK (gdb) actions Enter actions for tracepoint 1, one per line. End with a line saying just "end". >collect $regs >end (gdb) tstart Sending packet: $QTinit#59...Packet received: OK Sending packet: $QTDP:1:00000000004004d9:E:1:0-#a4...Packet received: OK Sending packet: $QTDP:-1:00000000004004d9:R03FFFFFFFFFFFFFFFFFF#2b...Packet received: OK The last "$QTDP:1:00000000004004d9:E:1:0-#a4" should be "$QTDP:1:00000000004004d9:E:0:0-#a3". In pseudo-diff: -$QTDP:1:00000000004004d9:E:1:0-#a4 +$QTDP:1:00000000004004d9:E:0:0-#a3 A related issue is that the "commands" command actually supports setting commands to a range of breakpoints/tracepoints at once. But, hacking "maint info breakpoints" to print t->step_count, reveals: (gdb) trace main Tracepoint 5 at 0x45a2ab: file ../../src/gdb/gdb.c, line 29. (gdb) trace main Note: breakpoint 5 also set at pc 0x45a2ab. Tracepoint 6 at 0x45a2ab: file ../../src/gdb/gdb.c, line 29. (gdb) commands 5-6 Type commands for breakpoint(s) 5-6, one per line. End with a line saying just "end". > while-stepping 5 >end > end (gdb) maint info breakpoints 5 Num Type Disp Enb Address What 5 tracepoint keep y 0x000000000045a2ab in main at ../../src/gdb/gdb.c:29 inf 1 step_count=5 ^^^^^^^^^^^^ while-stepping 5 end not installed on target (gdb) maint info breakpoints 6 Num Type Disp Enb Address What 6 tracepoint keep y 0x000000000045a2ab in main at ../../src/gdb/gdb.c:29 inf 1 step_count=0 ^^^^^^^^^^^^ while-stepping 5 end not installed on target (gdb) that tracepoint 6 doesn't end up with the correct step_count. The issue is that here: static void do_map_commands_command (struct breakpoint *b, void *data) { struct commands_info *info = data; if (info->cmd == NULL) { struct command_line *l; if (info->control != NULL) l = copy_command_lines (info->control->body_list[0]); else { struct cleanup *old_chain; char *str; str = xstrprintf (_("Type commands for breakpoint(s) " "%s, one per line."), info->arg); old_chain = make_cleanup (xfree, str); l = read_command_lines (str, info->from_tty, 1, (is_tracepoint (b) ? check_tracepoint_command : 0), b); do_cleanups (old_chain); } info->cmd = alloc_counted_command_line (l); } validate_actionline is never called for tracepoints other than the first (the copy_command_lines path). Right below, we have: /* If a breakpoint was on the list more than once, we don't need to do anything. */ if (b->commands != info->cmd) { validate_commands_for_breakpoint (b, info->cmd->commands); incref_counted_command_line (info->cmd); decref_counted_command_line (&b->commands); b->commands = info->cmd; observer_notify_breakpoint_modified (b); } And validate_commands_for_breakpoint looks like the right place to put a call; if we reset step_count there too, we have a nice central fix for the first issue as well, because trace_actions_command calls breakpoint_set_commands that also calls validate_commands_for_breakpoint. We end up calling validate_actionline twice for the first tracepoint, since read_command_lines calls it too, through check_tracepoint_command, but that should be harmless. 2013-04-04 Pedro Alves Hui Zhu * breakpoint.c (validate_commands_for_breakpoint): If validating a tracepoint, reset its STEP_COUNT and call validate_actionline. 2013-04-04 Stan Shebs Pedro Alves * gdb.trace/Makefile.in (PROGS): Add actions-changed. * gdb.trace/actions-changed.c: New file. * gdb.trace/actions-changed.exp: New file. * lib/trace-support.exp (gdb_trace_setactions): Rename to ... (gdb_trace_setactions_command): ... this. Add "actions_command" parameter, and handle it. (gdb_trace_setactions, gdb_trace_setcommands): New procedures. commit 509ca9a81d12cfdf95acd361483da5a77bded285 Author: Alan Modra Date: Thu Apr 4 14:38:01 2013 +0000 * bfd.c (bfd_error_type, bfd_errmsgs): Add bfd_error_missing_dso. * bfd-in2.h: Regenerate. * elflink.c (elf_link_add_object_symbols): Use new error. ----------------------------------------------------------------------- Summary of changes: bfd/ChangeLog | 10 ++ bfd/bfd-in2.h | 1 + bfd/bfd.c | 2 + bfd/elflink.c | 7 +- bfd/version.h | 2 +- gdb/ChangeLog | 6 + gdb/breakpoint.c | 23 +++- gdb/testsuite/ChangeLog | 21 ++++ gdb/testsuite/gdb.cp/cplabel.exp | 2 +- gdb/testsuite/gdb.linespec/linespec.exp | 20 ++- gdb/testsuite/gdb.trace/Makefile.in | 6 +- gdb/testsuite/gdb.trace/actions-changed.c | 66 ++++++++++ gdb/testsuite/gdb.trace/actions-changed.exp | 174 +++++++++++++++++++++++++++ gdb/testsuite/lib/trace-support.exp | 24 +++- gdb/version.in | 2 +- 15 files changed, 338 insertions(+), 28 deletions(-) create mode 100644 gdb/testsuite/gdb.trace/actions-changed.c create mode 100644 gdb/testsuite/gdb.trace/actions-changed.exp First 500 lines of diff: diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c2a14b0..806aa48 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,13 @@ +2013-04-05 Nick Clifton + + * elflink.c (elf_link_add_object_symbols): Revert accidental commit. + +2013-04-04 Alan Modra + + * bfd.c (bfd_error_type, bfd_errmsgs): Add bfd_error_missing_dso. + * bfd-in2.h: Regenerate. + * elflink.c (elf_link_add_object_symbols): Use new error. + 2013-04-03 Nick Clifton * elf32-v850.c (v850_elf_is_target_special_symbol): New function. diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 55ebb79..5c4e9c4 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -6111,6 +6111,7 @@ typedef enum bfd_error bfd_error_no_armap, bfd_error_no_more_archived_files, bfd_error_malformed_archive, + bfd_error_missing_dso, bfd_error_file_not_recognized, bfd_error_file_ambiguously_recognized, bfd_error_no_contents, diff --git a/bfd/bfd.c b/bfd/bfd.c index d77b90f..db4a536 100644 --- a/bfd/bfd.c +++ b/bfd/bfd.c @@ -374,6 +374,7 @@ CODE_FRAGMENT . bfd_error_no_armap, . bfd_error_no_more_archived_files, . bfd_error_malformed_archive, +. bfd_error_missing_dso, . bfd_error_file_not_recognized, . bfd_error_file_ambiguously_recognized, . bfd_error_no_contents, @@ -406,6 +407,7 @@ const char *const bfd_errmsgs[] = N_("Archive has no index; run ranlib to add one"), N_("No more archived files"), N_("Malformed archive"), + N_("DSO missing from command line"), N_("File format not recognized"), N_("File format is ambiguous"), N_("Section has no contents"), diff --git a/bfd/elflink.c b/bfd/elflink.c index 38add1a..99a1ddf 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -4437,17 +4437,12 @@ error_free_dyn: --no-add-needed is used and the reference was not a weak one. */ if (old_bfd != NULL - && h->ref_regular_nonweak && (elf_dyn_lib_class (abfd) & DYN_NO_NEEDED) != 0) { (*_bfd_error_handler) (_("%B: undefined reference to symbol '%s'"), old_bfd, name); - (*_bfd_error_handler) - (_("note: '%s' is defined in DSO %B" - " so try adding it to the linker command line"), - abfd, name); - bfd_set_error (bfd_error_invalid_operation); + bfd_set_error (bfd_error_missing_dso); goto error_free_vers; } diff --git a/bfd/version.h b/bfd/version.h index 4dad5de..51fc7f1 100644 --- a/bfd/version.h +++ b/bfd/version.h @@ -1,4 +1,4 @@ -#define BFD_VERSION_DATE 20130404 +#define BFD_VERSION_DATE 20130405 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ #define REPORT_BUGS_TO @report_bugs_to@ diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 024cd9d..30315af 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2013-04-04 Pedro Alves + Hui Zhu + + * breakpoint.c (validate_commands_for_breakpoint): If validating a + tracepoint, reset its STEP_COUNT and call validate_actionline. + 2013-04-03 Doug Evans * dwarf2read.c (read_die_and_siblings_1): Renamed from diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index ff161a0..5ba1f2f 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -1142,12 +1142,25 @@ validate_commands_for_breakpoint (struct breakpoint *b, { if (is_tracepoint (b)) { - /* We need to verify that each top-level element of commands is - valid for tracepoints, that there's at most one - while-stepping element, and that while-stepping's body has - valid tracing commands excluding nested while-stepping. */ + struct tracepoint *t = (struct tracepoint *) b; struct command_line *c; struct command_line *while_stepping = 0; + + /* Reset the while-stepping step count. The previous commands + might have included a while-stepping action, while the new + ones might not. */ + t->step_count = 0; + + /* We need to verify that each top-level element of commands is + valid for tracepoints, that there's at most one + while-stepping element, and that the while-stepping's body + has valid tracing commands excluding nested while-stepping. + We also need to validate the tracepoint action line in the + context of the tracepoint --- validate_actionline actually + has side effects, like setting the tracepoint's + while-stepping STEP_COUNT, in addition to checking if the + collect/teval actions parse and make sense in the + tracepoint's context. */ for (c = commands; c; c = c->next) { if (c->control_type == while_stepping_control) @@ -1165,6 +1178,8 @@ validate_commands_for_breakpoint (struct breakpoint *b, else while_stepping = c; } + + validate_actionline (c->line, b); } if (while_stepping) { diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index fc2e96a..e7da305 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,24 @@ +2013-04-04 Sandra Loosemore + + * gdb.cp/cplabel.exp: Allow empty directory in file reported + for breakpoint location. + +2013-04-04 Sandra Loosemore + + * gdb.linespec/linespec.exp: Make dir/file:line tests + conditional for non-remote hosts only. + +2013-04-04 Stan Shebs + Pedro Alves + + * gdb.trace/Makefile.in (PROGS): Add actions-changed. + * gdb.trace/actions-changed.c: New file. + * gdb.trace/actions-changed.exp: New file. + * lib/trace-support.exp (gdb_trace_setactions): Rename to ... + (gdb_trace_setactions_command): ... this. Add "actions_command" + parameter, and handle it. + (gdb_trace_setactions, gdb_trace_setcommands): New procedures. + 2013-04-04 Yao Qi * gdb.server/server-kill.exp: Use command 'tstatus' instead of diff --git a/gdb/testsuite/gdb.cp/cplabel.exp b/gdb/testsuite/gdb.cp/cplabel.exp index 1bfe61b..d3a6118 100644 --- a/gdb/testsuite/gdb.cp/cplabel.exp +++ b/gdb/testsuite/gdb.cp/cplabel.exp @@ -35,6 +35,6 @@ foreach m $methods { foreach l $labels { set line [gdb_get_line_number "$m:$l"] gdb_test "break foo::$m:$l" \ - "Breakpoint $decimal at $hex: file .*/$srcfile, line $line\." + "Breakpoint $decimal at $hex: file .*$srcfile, line $line\." } } diff --git a/gdb/testsuite/gdb.linespec/linespec.exp b/gdb/testsuite/gdb.linespec/linespec.exp index 0b70346..741ada0 100644 --- a/gdb/testsuite/gdb.linespec/linespec.exp +++ b/gdb/testsuite/gdb.linespec/linespec.exp @@ -43,13 +43,19 @@ if {$l1 != $l2} { error "somebody incompatibly modified the source files needed by linespec.exp" } -gdb_test "break one/thefile.cc:$l1" \ - "Breakpoint $decimal at $hex: file .*thefile.cc, line $l1." \ - "single-location break using dir/file:line" - -gdb_test "clear one/thefile.cc:$l1" \ - "Deleted breakpoint $decimal *" \ - "clear breakpoint using dir/file:line" +# Copying files to a remote host loses the directory prefix during +# compilation. +if { [is_remote host] } { + untested "breakpoints using dir/file:line" +} else { + gdb_test "break one/thefile.cc:$l1" \ + "Breakpoint $decimal at $hex: file .*thefile.cc, line $l1." \ + "single-location break using dir/file:line" + + gdb_test "clear one/thefile.cc:$l1" \ + "Deleted breakpoint $decimal *" \ + "clear breakpoint using dir/file:line" +} gdb_test "break thefile.cc:$l1" \ "Breakpoint $decimal at $hex: thefile.cc:$l1. \[(\]2 locations\[)\]" \ diff --git a/gdb/testsuite/gdb.trace/Makefile.in b/gdb/testsuite/gdb.trace/Makefile.in index 8a7d523..2e23223 100644 --- a/gdb/testsuite/gdb.trace/Makefile.in +++ b/gdb/testsuite/gdb.trace/Makefile.in @@ -3,9 +3,9 @@ srcdir = @srcdir@ .PHONY: all clean mostlyclean distclean realclean -PROGS = ax backtrace deltrace disconnected-tracing infotrace packetlen \ - passc-dyn passcount report save-trace tfile tfind tracecmd tsv \ - unavailable while-dyn while-stepping +PROGS = actions-changed ax backtrace deltrace disconnected-tracing \ + infotrace packetlen passc-dyn passcount report save-trace tfile \ + tfind tracecmd tsv unavailable while-dyn while-stepping all info install-info dvi install uninstall installcheck check: @echo "Nothing to be done for $@..." diff --git a/gdb/testsuite/gdb.trace/actions-changed.c b/gdb/testsuite/gdb.trace/actions-changed.c new file mode 100644 index 0000000..bac24a7 --- /dev/null +++ b/gdb/testsuite/gdb.trace/actions-changed.c @@ -0,0 +1,66 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2013 Free Software Foundation, Inc. + + 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 . */ + +int +end (int i) +{ +} + +int +subr2 (int parm) +{ + int keeping, busy; + + keeping = parm + parm; + busy = keeping * keeping; + + return busy; +} + +int +subr (int parm) +{ + int keeping, busy; + + keeping = parm + parm; + busy = keeping * keeping; + + return busy; +} + +main() +{ + subr (1); + end (1); + + subr (2); + end (2); + + subr (3); + end (3); + + subr (4); + end (4); + + subr (5); + subr2 (5); + end (5); + + subr (6); + subr2 (6); + end (6); +} diff --git a/gdb/testsuite/gdb.trace/actions-changed.exp b/gdb/testsuite/gdb.trace/actions-changed.exp new file mode 100644 index 0000000..e850da2 --- /dev/null +++ b/gdb/testsuite/gdb.trace/actions-changed.exp @@ -0,0 +1,174 @@ +# Copyright 2013 Free Software Foundation, Inc. + +# 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 . + +load_lib trace-support.exp + +standard_testfile + +if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} { + return -1 +} + +proc test_actions_changed { } { + gdb_breakpoint "end" + + gdb_test "trace subr" "Tracepoint .*" \ + "tracepoint at subr" + + # The first set of tests are regression tests for a GDB bug where + # the while-stepping count of a tracepoint would be left stale if + # the tracepoint's actions were redefined, and the new action list + # had no while-stepping action. + + # First pass, define simple action. + with_test_prefix "1" { + gdb_trace_setactions "define simple action" \ + "" \ + "collect parm" "^$" + + gdb_test_no_output "tstart" + + gdb_test "continue" ".*Breakpoint \[0-9\]+, end \\(i=1\\) .*" \ + "advance through tracing" + + gdb_test "tstatus" ".*Collected 1 trace frame.*" \ + "collected 1 trace frame" + + gdb_test_no_output "tstop" + } + + # Redefine action, run second trace. + with_test_prefix "2" { + gdb_trace_setactions "redefine simple action" \ + "" \ + "collect keeping, busy" "^$" + + gdb_test_no_output "tstart" + + gdb_test "continue" ".*Breakpoint \[0-9\]+, end \\(i=2\\) .*" \ + "advance through tracing" + + gdb_test "tstatus" ".*Collected 1 trace frame.*" \ + "collected 1 trace frame" + + gdb_test_no_output "tstop" + } + + # Redefine to stepping action, run third trace. + with_test_prefix "3" { + gdb_trace_setactions "redefine to stepping action" \ + "" \ + "collect parm" "^$" \ + "while-stepping 5" "^$" \ + "collect parm" "^$" \ + "end" "^$" + + gdb_test_no_output "tstart" + + gdb_test "continue" ".*Breakpoint \[0-9\]+, end \\(i=3\\) .*" \ + "advance through tracing" + + gdb_test "tstatus" ".*Collected 6 trace frames.*" \ + "collected 6 trace frames" + + gdb_test_no_output "tstop" + } + + # Redefine to non-stepping, run fourth trace. + with_test_prefix "4" { + gdb_trace_setactions "redefine to non-stepping action" \ + "" \ + "collect parm" "^$" + + gdb_test_no_output "tstart" + + gdb_test "continue" ".*Breakpoint \[0-9\]+, end \\(i=4\\) .*" \ + "advance through tracing" + + gdb_test "tstatus" ".*Collected 1 trace frame.*" \ + "collected 1 trace frame" + + gdb_test_no_output "tstop" + } + + # The following tests are related to the above, but use two + # tracepoints. They are regression tests for a GDB bug where only + # the first tracepoint would end up with the step count set. + + # Store the first tracepoint's number. + gdb_test_no_output "set \$prev_tpnum=\$tpnum" "store previous \$tpnum" + + # And here's the second tracepoint. + gdb_test "trace subr2" "Tracepoint .*" "tracepoint at subr2" + + # Set a stepping action in both tracepoints, with the "commands" + # command. + with_test_prefix "5" { + gdb_trace_setcommands \ + "redefine 2 tracepoints to stepping action, using commands" \ + "\$prev_tpnum-\$tpnum" \ + "collect parm" "^$" \ + "while-stepping 5" "^$" \ + "collect parm" "^$" \ + "end" "^$" + + gdb_test_no_output "tstart" + + gdb_test "continue" ".*Breakpoint \[0-9\]+, end \\(i=5\\) .*" \ + "advance through tracing" + + gdb_test "tstatus" ".*Collected 12 trace frames.*" \ + "collected 12 trace frames" + + gdb_test_no_output "tstop" + } + + # Redefine the actions of both tracepoints to non-stepping, also + # using the "commands" command. + with_test_prefix "6" { + gdb_trace_setcommands \ + "redefine 2 tracepoints to non-stepping action, using commands" \ + "\$prev_tpnum-\$tpnum" \ + "collect parm" "^$" + + gdb_test_no_output "tstart" + + gdb_test "continue" ".*Breakpoint \[0-9\]+, end \\(i=6\\) .*" \ + "advance through tracing" + + gdb_test "tstatus" ".*Collected 2 trace frame.*" \ + "collected 2 trace frames" + + gdb_test_no_output "tstop" + } +} + +# Check whether the target supports tracepoints. + +clean_restart $testfile + +if ![runto_main] { + fail "Can't run to main to check for trace support" + return -1 +} + +if ![gdb_target_supports_trace] { + unsupported "Current target does not support trace" + return -1; +} + +test_actions_changed + +return 0 diff --git a/gdb/testsuite/lib/trace-support.exp b/gdb/testsuite/lib/trace-support.exp index 10482b8..2601ad8 100644 --- a/gdb/testsuite/lib/trace-support.exp +++ b/gdb/testsuite/lib/trace-support.exp @@ -86,23 +86,23 @@ proc gdb_delete_tracepoints {} { } } -# -# Procedure: gdb_trace_setactions # Define actions for a tracepoint. # Arguments: +# actions_command -- the command used to create the actions. +# either "actions" or "commands". # testname -- identifying string for pass/fail output -# tracepoint -- to which tracepoint do these actions apply? (optional) +# tracepoint -- to which tracepoint(s) do these actions apply? (optional) # args -- list of actions to be defined. # Returns: hooks/post-receive -- Repository for Project Archer.