+2020-09-16 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
+
+ * breakpoint.c (commands_command_1): Make a copy of the 'arg'
+ argument.
+
2020-09-16 Andrew Burgess <andrew.burgess@embecosm.com>
* ada-lang.c (ada_language_data): Delete.
if (arg == NULL || !*arg)
{
+ /* Argument not explicitly given. Synthesize it. */
if (breakpoint_count - prev_breakpoint_count > 1)
new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
breakpoint_count);
else if (breakpoint_count > 0)
new_arg = string_printf ("%d", breakpoint_count);
- arg = new_arg.c_str ();
}
+ else
+ {
+ /* Create a copy of ARG. This is needed because the "commands"
+ command may be coming from a script. In that case, the read
+ line buffer is going to be overwritten in the lambda of
+ 'map_breakpoint_numbers' below when reading the next line
+ before we are are done parsing the breakpoint numbers. */
+ new_arg = arg;
+ }
+ arg = new_arg.c_str ();
map_breakpoint_numbers
(arg, [&] (breakpoint *b)
+2020-09-16 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
+
+ * gdb.base/bp-cmds-sourced-script.c: New file.
+ * gdb.base/bp-cmds-sourced-script.exp: New test.
+ * gdb.base/bp-cmds-sourced-script.gdb: New file.
+
2020-09-16 Tom de Vries <tdevries@suse.de>
* lib/gdbserver-support.exp (gdbserver_exit): Make sure we
--- /dev/null
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2020 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/>. */
+
+int
+main ()
+{
+ return 0;
+}
--- /dev/null
+# Copyright 2020 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 breakpoint commands entered in a GDB script work as
+# expected when the commands are defined for multiple breakpoints.
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} {
+ return -1
+}
+
+set script_file ${srcdir}/${subdir}/$testfile.gdb
+
+gdb_test "source $script_file" \
+ "Breakpoint 1\[^\r\n\]*\r\nBreakpoint 2\[^\r\n\]*" \
+ "source the script"
+
+gdb_run_cmd
+
+gdb_test_multiple "" "commands executed twice" {
+ -re "\\$${decimal} = 100123\r\n\\$${decimal} = 100123\r\n$gdb_prompt $" {
+ pass $gdb_test_name
+ }
+}
+
+gdb_continue_to_end
--- /dev/null
+# Copyright 2020 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/>. */
+
+break main
+break main
+commands 1 2
+ print 100123
+end