diff options
-rw-r--r-- | gdb/gdbserver/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/gdbserver/tracepoint.c | 7 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/Makefile.in | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/no-attach-trace.c | 26 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/no-attach-trace.exp | 53 |
6 files changed, 98 insertions, 2 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 25f3adf..4badd9e 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,8 @@ +2015-02-10 Antoine Tremblay <antoine.tremblay@ericsson.com> + + PR breakpoints/15956 + * tracepoint.c (cmd_qtinit): Add check for current_thread. + 2015-02-09 Markus Metzger <markus.t.metzger@intel.com> * linux-low.c (linux_low_btrace_conf): Print size. diff --git a/gdb/gdbserver/tracepoint.c b/gdb/gdbserver/tracepoint.c index 82d6ce5..2382a11 100644 --- a/gdb/gdbserver/tracepoint.c +++ b/gdb/gdbserver/tracepoint.c @@ -2377,6 +2377,13 @@ cmd_qtinit (char *packet) { struct trace_state_variable *tsv, *prev, *next; + /* Can't do this command without a pid attached. */ + if (current_thread == NULL) + { + write_enn (packet); + return; + } + /* Make sure we don't try to read from a trace frame. */ current_traceframe = -1; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 4fe771e..c1d76d6 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-02-10 Antoine Tremblay <antoine.tremblay@ericsson.com> + + * gdb.trace/no-attach-trace.c: New file. + * gdb.trace/no-attach-trace.exp: New file. + 2015-02-09 Mark Wielaard <mjw@redhat.com> * gdb.dwarf2/atomic.c: New file. diff --git a/gdb/testsuite/gdb.trace/Makefile.in b/gdb/testsuite/gdb.trace/Makefile.in index 2e23223..514beab 100644 --- a/gdb/testsuite/gdb.trace/Makefile.in +++ b/gdb/testsuite/gdb.trace/Makefile.in @@ -4,8 +4,8 @@ srcdir = @srcdir@ .PHONY: all clean mostlyclean distclean realclean 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 + infotrace no-attach-trace 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/no-attach-trace.c b/gdb/testsuite/gdb.trace/no-attach-trace.c new file mode 100644 index 0000000..9b4ada8 --- /dev/null +++ b/gdb/testsuite/gdb.trace/no-attach-trace.c @@ -0,0 +1,26 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2015 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 <http://www.gnu.org/licenses/>. */ + +/* This program is intended to be a simple dummy program for gdb to read. */ + +#include <unistd.h> + +int +main (void) +{ + return 0; +} diff --git a/gdb/testsuite/gdb.trace/no-attach-trace.exp b/gdb/testsuite/gdb.trace/no-attach-trace.exp new file mode 100644 index 0000000..96135cb --- /dev/null +++ b/gdb/testsuite/gdb.trace/no-attach-trace.exp @@ -0,0 +1,53 @@ +# This testcase is part of GDB, the GNU debugger. + +# Copyright 2015 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 <http://www.gnu.org/licenses/>. + +# Test that trying to trace without a program attached fails properly. + +load_lib trace-support.exp + +standard_testfile + +if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} { + return -1 +} + +if ![runto_main] { + fail "Can't run to main to check for trace support" + return -1 +} + +if { ![gdb_target_supports_trace] } then { + unsupported "Current target does not support trace" + return 1 + +} + +# Clean test state so that we have no process attached. +clean_restart $testfile + +gdb_test "trace main" \ + "Tracepoint \[0-9\] at.* file .*$srcfile, line.*" \ + "set tracepoint on main" + +gdb_test "tstart" "Target returns error code.*\." + +with_test_prefix "after tstart" { + if ![runto_main] { + fail "Can't run to main, target may have died unexpectedly" + return -1 + } +} |