This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH/v4 3/3] fix Bug 15180 Agent style dprintf does not respect conditions (test)


This patch doesn't has big chanage with previous version. Just update follow git upstream.

This is test for the issues.

Thanks,
Hui

2014-01-27  Hui Zhu  <hui@codesourcery.com>

	PR gdb/15180
	* gdb.base/dprintf-same-addr.c: New file.
	* gdb.base/dprintf-same-addr.exp: New file.

--- /dev/null
+++ b/gdb/testsuite/gdb.base/dprintf-same-addr.c
@@ -0,0 +1,35 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright (C) 2013 Free Software Foundation, Inc.
+   Contributed by Hui Zhu  <hui@codesourcery.com>
+
+   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/>. */
+
+#include <stdio.h>
+
+int
+main ()
+{
+  int i;
+
+  for (i=0; i < 99; i++)
+    {
+      printf("Hello\n");	/* test line  */
+
+      /* Without this line, test with fprintf will not work.  */
+      fprintf (stderr, "world\n");
+    }
+
+  return 0;
+}
--- /dev/null
+++ b/gdb/testsuite/gdb.base/dprintf-same-addr.exp
@@ -0,0 +1,82 @@
+#   Copyright (C) 2013 Free Software Foundation, Inc.
+#   Contributed by Hui Zhu  <hui@codesourcery.com>
+
+# 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/>.
+
+standard_testfile
+
+if [prepare_for_testing "failed to prepare for dprintf with non-stop" \
+    ${testfile} ${srcfile} {debug}] {
+    return -1
+}
+
+set bp_location [gdb_get_line_number "test line"]
+
+proc continue_dprintf {args} {
+    with_test_prefix $args {
+	global bp_location
+
+	gdb_test "dprintf $bp_location,\"Hello\\n\"" "Dprintf .*"
+	gdb_test_no_output {set $bpnum1=$bpnum}
+	gdb_breakpoint $bp_location
+	gdb_test_no_output {set $bpnum2=$bpnum}
+
+	gdb_test "continue" "Breakpoint \[0-9\]+, main .*" "First continue"
+
+	gdb_test_no_output "condition \$bpnum1 i>10"
+	gdb_test_no_output "condition \$bpnum2 i>15"
+
+	gdb_test "continue" "Breakpoint \[0-9\]+, main .*" "Second continue"
+
+	gdb_test "p i" "\[0-9\]+ = 16" "check i"
+    }
+}
+
+if ![runto main] {
+    return -1
+}
+gdb_test_no_output "set dprintf-style gdb" "Set dprintf style to gdb"
+continue_dprintf "gdb"
+
+if ![target_info exists gdb,noinferiorio] {
+    if ![runto main] {
+	return -1
+    }
+    gdb_test_no_output "set dprintf-style call" "Set dprintf style to call"
+    continue_dprintf "call"
+
+    if ![runto main] {
+	return -1
+    }
+ gdb_test_no_output "set dprintf-function fprintf" "set dprintf-channel stderr"
+    gdb_test_no_output "set dprintf-channel stderr" "set dprintf channel"
+    continue_dprintf "fprintf"
+} else {
+    unsupported "test dprintf-style call"
+}
+
+if ![runto main] {
+    return -1
+}
+gdb_test "dprintf main,\"Hello\\n\"" "Dprintf .*"
+set msg "Set dprintf style to agent"
+gdb_test_multiple "set dprintf-style agent" $msg {
+    -re "warning: Target cannot run dprintf commands.*\r\n$gdb_prompt $" {
+	unsupported $msg
+    }
+    -re ".*$gdb_prompt $" {
+	pass $msg
+	continue_dprintf "agent"
+    }
+}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]