* gdb.cp/annota2.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/annota3.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/anon-union.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/cplusfuncs.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/demangle.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/formatted-ref.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/local.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/method.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/misc.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/namespace.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/ovldbreak.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/pr-1023.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/ref-types.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/templates.exp: Replace uses of send_gdb / gdb_expect.
* gdb.cp/userdef.exp: Replace uses of send_gdb / gdb_expect.
+2010-06-01 Michael Snyder <msnyder@vmware.com>
+
+ * gdb.cp/annota2.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/annota3.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/anon-union.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/cplusfuncs.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/demangle.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/formatted-ref.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/local.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/method.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/misc.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/namespace.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/ovldbreak.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/pr-1023.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/ref-types.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/templates.exp: Replace uses of send_gdb / gdb_expect.
+ * gdb.cp/userdef.exp: Replace uses of send_gdb / gdb_expect.
+
2010-06-01 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/commands.exp (begin commands on watch): Remove excessive
# The commands we test here produce many lines of output; disable "press
# <return> to continue" prompts.
-send_gdb "set height 0\n"
-gdb_expect -re "$gdb_prompt $"
+gdb_test_no_output "set height 0"
#
# break at main
timeout { fail "annotation set at level 2 (timeout)" }
}
-send_gdb "run\n"
- gdb_expect {
- -re "$main_line.*$gdb_prompt$" { pass "run until main breakpoint" }
- -re ".*$gdb_prompt$" { fail "run until main breakpoint" }
- timeout { fail "run until main breakpoint (timeout)" }
- }
+gdb_test_multiple "run" "run until main breakpoint" {
+ -re "$main_line.*$gdb_prompt$" {
+ pass "run until main breakpoint"
+ }
+}
#
# print class 'a' with public fields.
# annotate-field-value
# annotate-field-end
#
-send_gdb "print a\n"
-gdb_expect {
- -re "\r\n\032\032post-prompt\r\n\r\n\032\032value-history-begin 1 -\r\n.*= \r\n\032\032value-history-value\r\n\\{\r\n\032\032field-begin -\r\nx\r\n\032\032field-name-end\r\n = \r\n\032\032field-value\r\n1\r\n\032\032field-end\r\n, \r\n\032\032field-begin -\r\ny\r\n\032\032field-name-end\r\n = \r\n\032\032field-value\r\n2\r\n\032\032field-end\r\n\\}\r\n\r\n\032\032value-history-end\r\n$gdb_prompt$" \
- { pass "print class" }
- -re ".*$gdb_prompt$" { fail "print class" }
- timeout { fail "print class (timeout)" }
+gdb_test_multiple "print a" "print class" {
+ -re "\r\n\032\032post-prompt\r\n\r\n\032\032value-history-begin 1 -\r\n.*= \r\n\032\032value-history-value\r\n\\{\r\n\032\032field-begin -\r\nx\r\n\032\032field-name-end\r\n = \r\n\032\032field-value\r\n1\r\n\032\032field-end\r\n, \r\n\032\032field-begin -\r\ny\r\n\032\032field-name-end\r\n = \r\n\032\032field-value\r\n2\r\n\032\032field-end\r\n\\}\r\n\r\n\032\032value-history-end\r\n$gdb_prompt$" {
+ pass "print class"
+ }
}
#
# annotate-exited
# `a.x is 1' is asynchronous regarding to `frames-invalid'.
#
-send_gdb "continue\n"
-gdb_expect {
- -re "\r\n\032\032post-prompt\r\nContinuing.\r\n\r\n\032\032starting\(\r\n\r\n\032\032frames-invalid\)*\r\na.x is 1\r\n\(\r\n\032\032frames-invalid\r\n\)*\r\n\032\032exited 0\r\n\r\nProgram exited normally.\r\n\r\n\032\032stopped\r\n$gdb_prompt$" \
- { pass "continue until exit" }
- -re ".*$gdb_prompt$" { fail "continue to exit" }
- timeout { fail "continue to exit (timeout)" }
+gdb_test_multiple "continue" "continue until exit" {
+ -re "\r\n\032\032post-prompt\r\nContinuing.\r\n\r\n\032\032starting\(\r\n\r\n\032\032frames-invalid\)*\r\na.x is 1\r\n\(\r\n\032\032frames-invalid\r\n\)*\r\n\032\032exited 0\r\n\r\nProgram exited normally.\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
+ pass "continue until exit"
+ }
}
#
#
# break at first line of main.
#
-send_gdb "break 22\n"
-gdb_expect {
- -re "\r\n\032\032post-prompt\r\n\r\n\032\032breakpoints-invalid\r\nBreakpoint.*at $hex: file.*$srcfile, line.*\r\n$gdb_prompt$" \
- { pass "breakpoint at main" }
- -re ".*$gdb_prompt$" { fail "break at main" }
- timeout { fail "break at main (timeout)" }
+gdb_test_multiple "break 22" "break at main" {
+ -re "\r\n\032\032post-prompt\r\n\r\n\032\032breakpoints-invalid\r\nBreakpoint.*at $hex: file.*$srcfile, line.*\r\n$gdb_prompt$" {
+ pass "breakpoint at main"
+ }
}
#
# run program up to breakpoint.
#
-
-send_gdb "run\n"
- gdb_expect {
- -re "$main_line.*$gdb_prompt$" { pass "run until main breakpoint" }
- -re ".*$gdb_prompt$" { fail "run until main breakpoint" }
- timeout { fail "run until main breakpoint (timeout)" }
- }
+gdb_test_multiple "run" "run until main breakpoint" {
+ -re "$main_line.*$gdb_prompt$" {
+ pass "run until main breakpoint"
+ }
+}
#
# set up a watch point on a.x
#
-send_gdb "watch a.x\n"
-gdb_expect {
- -re "\r\n\032\032post-prompt\r\n\r\n\032\032breakpoints-invalid\r\n.*atchpoint 3: a.x\r\n$gdb_prompt$" \
- { pass "set watch on a.x" }
- -re ".*$gdb_prompt$" { fail "set watch on a.x" }
- timeout { fail "set watch on a.x (timeout)" }
+gdb_test_multiple "watch a.x" "set watch on a.x" {
+ -re "\r\n\032\032post-prompt\r\n\r\n\032\032breakpoints-invalid\r\n.*atchpoint 3: a.x\r\n$gdb_prompt$" {
+ pass "set watch on a.x"
+ }
}
#
# do a next, so that the watchpoint triggers. This will test:
# annotate-watchpoint
#
-send_gdb "next\n"
-gdb_expect {
- -re "\r\n\032\032post-prompt\r\n\r\n(\032\032breakpoints-invalid\r\n\r\n)*\032\032starting\r\n\r\n(\032\032frames-invalid\r\n\r\n)*\032\032watchpoint 3\r\n.*atchpoint 3: a.x\r\n\r\nOld value = 0\r\nNew value = 1\r\n\r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nmain\r\n\032\032frame-args\r\n \\(\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*$srcfile\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n$decimal\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source .*$srcfile.*beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n.*$gdb_prompt$" \
- { pass "watch triggered on a.x" }
- -re "\r\n\032\032post-prompt\r\n\r\n(\032\032breakpoints-invalid\r\n\r\n)*\032\032starting\r\n\r\n(\032\032frames-invalid\r\n\r\n)*\032\032source .*$srcfile.*beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" \
- { kfail "gdb/38" "watch triggered on a.x" }
- -re ".*$gdb_prompt$" { fail "watch triggered on a.x" }
- timeout { fail "watch triggered on a.x (timeout)" }
+gdb_test_multiple "next" "watch triggered on a.x" {
+ -re "\r\n\032\032post-prompt\r\n\r\n(\032\032breakpoints-invalid\r\n\r\n)*\032\032starting\r\n\r\n(\032\032frames-invalid\r\n\r\n)*\032\032watchpoint 3\r\n.*atchpoint 3: a.x\r\n\r\nOld value = 0\r\nNew value = 1\r\n\r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nmain\r\n\032\032frame-args\r\n \\(\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*$srcfile\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n$decimal\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source .*$srcfile.*beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n.*$gdb_prompt$" {
+ pass "watch triggered on a.x"
+ }
+ -re "\r\n\032\032post-prompt\r\n\r\n(\032\032breakpoints-invalid\r\n\r\n)*\032\032starting\r\n\r\n(\032\032frames-invalid\r\n\r\n)*\032\032source .*$srcfile.*beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
+ kfail "gdb/38" "watch triggered on a.x"
+ }
}
# The commands we test here produce many lines of output; disable "press
# <return> to continue" prompts.
-send_gdb "set height 0\n"
-gdb_expect -re "$gdb_prompt $"
+gdb_test_no_output "set height 0"
#
# break at main
# do a next, so that the watchpoint triggers. This will test:
# annotate-watchpoint
#
-send_gdb "next\n"
-gdb_expect {
+gdb_test_multiple "next" "watch triggered on a.x" {
-re "\r\n\032\032post-prompt\r\n\r\n\032\032starting\r\n\r\n\032\032watchpoint 3\r\n.*atchpoint 3: a.x\r\n\r\nOld value = 0\r\nNew value = 1\r\n\r\n(\032\032frame-begin 0 0x\[0-9a-z\]+\r\n|)main \\(\\) at .*$srcfile:$decimal\r\n\r\n\032\032source .*$srcfile.*beg:$hex\r\n\r\n\032\032stopped\r\n.*$gdb_prompt$" {
pass "watch triggered on a.x"
}
-re "\r\n\032\032post-prompt\r\n\r\n\032\032starting\r\n\r\n\032\032source .*$srcfile.*beg:$hex\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
kfail "gdb/38" "watch triggered on a.x"
}
- -re ".*$gdb_prompt$" {
- fail "watch triggered on a.x"
- }
- timeout {
- fail "watch triggered on a.x (timeout)"
- }
}
#
continue
}
-send_gdb "set width 0\n"
-gdb_expect -re "$gdb_prompt $"
+gdb_test_no_output "set width 0"
#send_gdb "ptype foo\n"
#gdb_expect {
# NOTE: Add -- ptype foo.x, etc. when things are working
#Initialize foo
-send_gdb "next\n"
-gdb_expect {
- -re "40\[ \t\]*foo.paper = 33;\r\n$gdb_prompt $" {
- pass "next 1"
- }
- -re ".*$gdb_prompt $" { fail "next 1" }
- timeout { fail "(timeout) next 1" }
-}
+gdb_test "next" "40\[ \t\]*foo.paper = 33;" "next 1"
# Print out the big anon union.
-send_gdb "print foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 0, x = \{rock = 0, rock2 = 0\}, \{qux = 0, mux = 0\}, boulder = 0\}, \{paper = 0, cloth = 0\}, num2 = \{two = 0, three = 0\}\}\r\n$gdb_prompt $" {
- pass "print foo 1"
- }
- -re ".*$gdb_prompt $" { fail "print foo 1" }
- timeout { fail "(timeout) print foo 1" }
-}
+gdb_test "print foo" \
+ "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 0, x = \{rock = 0, rock2 = 0\}, \{qux = 0, mux = 0\}, boulder = 0\}, \{paper = 0, cloth = 0\}, num2 = \{two = 0, three = 0\}\}" \
+ "print foo 1"
# Step over assignment to member
-send_gdb "next\n"
-gdb_expect {
- -re "41\[ \t\]*foo.pebble = 44;\r\n$gdb_prompt $" {
- pass "next 1"
- }
- -re ".*$gdb_prompt $" { fail "next 1" }
- timeout { fail "(timeout) next 1" }
-}
+gdb_test "next" "41\[ \t\]*foo.pebble = 44;" "next 2"
# Now print out anon union again
-send_gdb "print foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 0, x = \{rock = 0, rock2 = 0\}, \{qux = 0, mux = 0\}, boulder = 0\}, \{paper = 33, cloth = 33\}, num2 = \{two = 0, three = 0\}\}\r\n$gdb_prompt $" {
- pass "print foo 2"
- }
- -re ".*$gdb_prompt $" { fail "print foo 2" }
- timeout { fail "(timeout) print foo 2" }
-}
+gdb_test "print foo" \
+ "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 0, x = \{rock = 0, rock2 = 0\}, \{qux = 0, mux = 0\}, boulder = 0\}, \{paper = 33, cloth = 33\}, num2 = \{two = 0, three = 0\}\}" \
+ "print foo 2"
# Modify the member just set
-send_gdb "set var foo.cloth = 35\n"
-gdb_expect {
- -re "\r\n$gdb_prompt $" {
- pass "set var foo.cloth"
- }
- timeout { fail "(timeout) set var foo.cloth" }
-}
+gdb_test_no_output "set var foo.cloth = 35" "set var foo.cloth"
# Now print out anon union again to see if the right member was set
-send_gdb "print foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 0, x = \{rock = 0, rock2 = 0\}, \{qux = 0, mux = 0\}, boulder = 0\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}\r\n$gdb_prompt $" {
- pass "print foo 3"
- }
- -re ".*$gdb_prompt $" { fail "print foo 3" }
- timeout { fail "(timeout) print foo 3" }
-}
-
+gdb_test "print foo" \
+ "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 0, x = \{rock = 0, rock2 = 0\}, \{qux = 0, mux = 0\}, boulder = 0\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}" \
+ "print foo 3"
# Step over next assignment to member
-send_gdb "next\n"
-gdb_expect {
- -re "42\[ \t\]*foo.mux = 55;\r\n$gdb_prompt $" {
- pass "next 2"
- }
- -re ".*$gdb_prompt $" { fail "next 2" }
- timeout { fail "(timeout) next 2" }
-}
+gdb_test "next" "42\[ \t\]*foo.mux = 55;" "next 3"
# Now print out anon union again
-send_gdb "print foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 44, x = \{rock = 44, rock2 = 0\}, \{qux = 44, mux = 44\}, boulder = 44\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}\r\n$gdb_prompt $" {
- pass "print foo 4"
- }
- -re ".*$gdb_prompt $" { fail "print foo 4" }
- timeout { fail "(timeout) print foo 4" }
-}
+gdb_test "print foo" \
+ "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 44, x = \{rock = 44, rock2 = 0\}, \{qux = 44, mux = 44\}, boulder = 44\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}" \
+ "print foo 4"
# Modify the member just set
-send_gdb "set var foo.pebble = 45\n"
-gdb_expect {
- -re "\r\n$gdb_prompt $" {
- pass "set var foo.pebble"
- }
- timeout { fail "(timeout) set var foo.pebble" }
-}
+gdb_test_no_output "set var foo.pebble = 45" "set var foo.pebble"
# Now print out anon union again to see if the right member was set
-send_gdb "print foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 45, x = \{rock = 45, rock2 = 0\}, \{qux = 45, mux = 45\}, boulder = 45\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}\r\n$gdb_prompt $" {
- pass "print foo 5"
- }
- -re ".*$gdb_prompt $" { fail "print foo 5" }
- timeout { fail "(timeout) print foo 5" }
-}
+gdb_test "print foo" \
+ "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 45, x = \{rock = 45, rock2 = 0\}, \{qux = 45, mux = 45\}, boulder = 45\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}" \
+ "print foo 5"
# Modify another member at a different level
-send_gdb "set var foo.qux = 46\n"
-gdb_expect {
- -re "\r\n$gdb_prompt $" {
- pass "set var foo.qux"
- }
- timeout { fail "(timeout) set var foo.qux" }
-}
+gdb_test_no_output "set var foo.qux = 46" "set var foo.qux"
# Now print out anon union again to see if the right member was set
-send_gdb "print foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 46, x = \{rock = 46, rock2 = 0\}, \{qux = 46, mux = 46\}, boulder = 46\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}\r\n$gdb_prompt $" {
- pass "print foo 6"
- }
- -re ".*$gdb_prompt $" { fail "print foo 6" }
- timeout { fail "(timeout) print foo 6" }
-}
+gdb_test "print foo" \
+ "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 46, x = \{rock = 46, rock2 = 0\}, \{qux = 46, mux = 46\}, boulder = 46\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}" \
+ "print foo 6"
# Modify the member at another level, but not the first one in the union
-send_gdb "set var foo.mux = 47\n"
-gdb_expect {
- -re "\r\n$gdb_prompt $" {
- pass "set var foo.mux"
- }
- timeout { fail "(timeout) set var foo.mux" }
-}
+gdb_test_no_output "set var foo.mux = 47" "set var foo.mux"
# Now print out anon union again to see if things worked
-send_gdb "print foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 47, x = \{rock = 47, rock2 = 0\}, \{qux = 47, mux = 47\}, boulder = 47\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}\r\n$gdb_prompt $" {
- pass "print foo 7"
- }
- -re ".*$gdb_prompt $" { fail "print foo 7" }
- timeout { fail "(timeout) print foo 7" }
-}
+gdb_test "print foo" \
+ "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 47, x = \{rock = 47, rock2 = 0\}, \{qux = 47, mux = 47\}, boulder = 47\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}" \
+ "print foo 7"
# Modify a member of a struct in an anon union
-send_gdb "set var foo.x.rock = 48\n"
-gdb_expect {
- -re "\r\n$gdb_prompt $" {
- pass "set var foo.x.rock"
- }
- timeout { fail "(timeout) set var foo.x.rock" }
-}
+gdb_test_no_output "set var foo.x.rock = 48" "set var foo.x.rock"
# Now print out anon union again to see if things worked
-send_gdb "print foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 48, x = \{rock = 48, rock2 = 0\}, \{qux = 48, mux = 48\}, boulder = 48\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}\r\n$gdb_prompt $" {
- pass "print foo 8"
- }
- -re ".*$gdb_prompt $" { fail "print foo 8" }
- timeout { fail "(timeout) print foo 8" }
-}
+gdb_test "print foo" \
+ "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 48, x = \{rock = 48, rock2 = 0\}, \{qux = 48, mux = 48\}, boulder = 48\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}" \
+ "print foo 8"
# Modify a member of a struct in an anon union, but something
# that doesn't alias to some other union member
-send_gdb "set var foo.x.rock2 = 49\n"
-gdb_expect {
- -re "\r\n$gdb_prompt $" {
- pass "set var foo.x.rock2"
- }
- timeout { fail "(timeout) set var foo.x.rock2" }
-}
+gdb_test_no_output "set var foo.x.rock2 = 49" "set var foo.x.rock2"
# Now print out anon union again to see if things worked
-send_gdb "print foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 48, x = \{rock = 48, rock2 = 49\}, \{qux = 48, mux = 48\}, boulder = 48\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}\r\n$gdb_prompt $" {
- pass "print foo 9"
- }
- -re ".*$gdb_prompt $" { fail "print foo 9" }
- timeout { fail "(timeout) print foo 9" }
-}
-
+gdb_test "print foo" \
+ "\\$\[0-9\]* = \{num1 = \{zero = 0, one = 0\}, \{pebble = 48, x = \{rock = 48, rock2 = 49\}, \{qux = 48, mux = 48\}, boulder = 48\}, \{paper = 35, cloth = 35\}, num2 = \{two = 0, three = 0\}\}" \
+ "print foo 9"
# Step over next four assignments
-send_gdb "next 4\n"
-gdb_expect {
- -re "53\[ \t\]*w = 45;\r\n$gdb_prompt $" {
- pass "next 3"
- }
- -re ".*$gdb_prompt $" { fail "next 3" }
- timeout { fail "(timeout) next 3" }
-}
+gdb_test "next 4" "53\[ \t\]*w = 45;" "next 4"
# Tests for anon unions that are not members of a class or struct
-send_gdb "print w\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 0\r\n$gdb_prompt $" {
- pass "print w 1"
- }
- -re ".*$gdb_prompt $" { fail "print w 1" }
- timeout { fail "(timeout) print w 1" }
-}
+gdb_test "print w" "\\$\[0-9\]* = 0" "print w 1"
-send_gdb "print z\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 0\r\n$gdb_prompt $" {
- pass "print z 1"
- }
- -re ".*$gdb_prompt $" { fail "print z 1" }
- timeout { fail "(timeout) print z 1" }
-}
+gdb_test "print z" "\\$\[0-9\]* = 0" "print z 1"
# Step over next assignment to w
-send_gdb "next\n"
-gdb_expect {
- -re "55\[ \t\]*int j = 0;\r\n$gdb_prompt $" {
- pass "next 4"
- }
- -re ".*$gdb_prompt $" { fail "next 4" }
- timeout { fail "(timeout) next 4" }
-}
+gdb_test "next" "55\[ \t\]*int j = 0;" "next 5"
# See if the change in value is noticed
-send_gdb "print w\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 45\r\n$gdb_prompt $" {
- pass "print w 2"
- }
- -re ".*$gdb_prompt $" { fail "print w 2" }
- timeout { fail "(timeout) print w 2" }
-}
+gdb_test "print w" "\\$\[0-9\]* = 45" "print w 2"
# See if z shows the same value
-send_gdb "print z\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 45\r\n$gdb_prompt $" {
- pass "print z 2"
- }
- -re ".*$gdb_prompt $" { fail "print z 2" }
- timeout { fail "(timeout) print z 2" }
-}
+gdb_test "print z" "\\$\[0-9\]* = 45" pass "print z 2"
# Set the anon union member
-send_gdb "set var z = 27\n"
-gdb_expect {
- -re "\r\n$gdb_prompt $" {
- pass "set var z"
- }
- timeout { fail "(timeout) set var z" }
-}
+gdb_test_no_output "set var z = 27" "set var z"
# See if the change in value is noticed
-send_gdb "print w\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 27\r\n$gdb_prompt $" {
- pass "print w 3"
- }
- -re ".*$gdb_prompt $" { fail "print w 3" }
- timeout { fail "(timeout) print w 3" }
-}
+gdb_test "print w" "\\$\[0-9\]* = 27" "print w 3"
# See if z shows the same value
-send_gdb "print z\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 27\r\n$gdb_prompt $" {
- pass "print z 3"
- }
- -re ".*$gdb_prompt $" { fail "print z 3" }
- timeout { fail "(timeout) print z 3" }
-}
+gdb_test "print z" "\\$\[0-9\]* = 27" "print z 3"
global dm_type_unsigned_long
global dm_type_typedef
- send_gdb "print &foo::operator,(foo&)\n"
- gdb_expect {
- -re ".*foo::operator, \\(.*foo.*&.*\\).*\r\n$gdb_prompt $" {
- # v2 demangler
- set dm_operator_comma ", "
- pass "detect dm_operator_comma"
+ gdb_test_multiple "print &foo::operator,(foo&)" \
+ "detect dm_operator_comma" {
+ -re ".*foo::operator, \\(.*foo.*&.*\\).*\r\n$gdb_prompt $" {
+ # v2 demangler
+ set dm_operator_comma ", "
+ pass "detect dm_operator_comma"
+ }
+ -re ".*foo::operator,\\(.*foo.*&.*\\).*\r\n$gdb_prompt $" {
+ # v3 demangler
+ pass "detect dm_operator_comma"
+ }
+ }
+
+ gdb_test_multiple "print &foo::operator char*($dm_type_void)" \
+ "detect dm_operator_char_star" {
+ -re ".*foo::operator char \\*\\(void\\).*\r\n$gdb_prompt $" {
+ # v2 demangler or GDB type printer
+ set dm_operator_char_star "char *"
+ set dm_operator_char_star_quoted "char \\*"
+ pass "detect dm_operator_char_star"
+ }
+ -re ".*foo::operator char\\*\\(\\).*\r\n$gdb_prompt $" {
+ # v3 demangler
+ pass "detect dm_operator_char_star"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_char_star" \
+ "detect dm_type_char_star" {
+ -re ".*dm_type_char_star\\(char \\*\\).*\r\n$gdb_prompt $" {
+ # v2 demangler
+ set dm_type_char_star "char *"
+ set dm_type_char_star_quoted "char \\*"
+ pass "detect dm_type_char_star"
+ }
+ -re ".*dm_type_char_star\\(char\\*\\).*\r\n$gdb_prompt $" {
+ # v3 demangler
+ pass "detect dm_type_char_star"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_foo_ref" \
+ "detect dm_type_foo_ref" {
+ -re ".*dm_type_foo_ref\\(foo &\\).*\r\n$gdb_prompt $" {
+ # v2 demangler
+ set dm_type_foo_ref "foo &"
+ pass "detect dm_type_foo_ref"
+ }
+ -re ".*dm_type_foo_ref\\(foo&\\).*\r\n$gdb_prompt $" {
+ # v3 demangler
+ pass "detect dm_type_foo_ref"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_int_star" \
+ "detect dm_type_int_star" {
+ -re ".*dm_type_int_star\\(int \\*\\).*\r\n$gdb_prompt $" {
+ # v2 demangler
+ set dm_type_int_star "int *"
+ pass "detect dm_type_int_star"
+ }
+ -re ".*dm_type_int_star\\(int\\*\\).*\r\n$gdb_prompt $" {
+ # v3 demangler
+ pass "detect dm_type_int_star"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_long_star" \
+ "detect dm_type_long_star" {
+ -re ".*dm_type_long_star\\(long \\*\\).*\r\n$gdb_prompt $" {
+ # v2 demangler
+ set dm_type_long_star "long *"
+ pass "detect dm_type_long_star"
+ }
+ -re ".*dm_type_long_star\\(long\\*\\).*\r\n$gdb_prompt $" {
+ # v3 demangler
+ pass "detect dm_type_long_star"
+ }
+ -re ".*dm_type_long_star\\(long int \\*\\).*\r\n$gdb_prompt $" {
+ # GCC v3 and GDB's type printer
+ set dm_type_long_star "long int *"
+ pass "detect dm_type_long_star"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_unsigned_int" \
+ "detect dm_type_unsigned_int" {
+ -re ".*dm_type_unsigned_int\\(unsigned int\\).*\r\n$gdb_prompt $" {
+ # v2 demangler
+ set dm_type_unsigned_int "unsigned int"
+ pass "detect dm_type_unsigned_int"
+ }
+ -re ".*dm_type_unsigned_int\\(unsigned\\).*\r\n$gdb_prompt $" {
+ # v3 demangler
+ pass "detect dm_type_unsigned_int"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_void" \
+ "detect dm_type_void" {
+ -re ".*dm_type_void\\(void\\).*\r\n$gdb_prompt $" {
+ # v2 demangler
+ set dm_type_void "void"
+ pass "detect dm_type_void"
+ }
+ -re ".*dm_type_void\\(\\).*\r\n$gdb_prompt $" {
+ # v3 demangler
+ pass "detect dm_type_void"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_void_star" \
+ "detect dm_type_void_star" {
+ -re ".*dm_type_void_star\\(void \\*\\).*\r\n$gdb_prompt $" {
+ # v2 demangler
+ set dm_type_void_star "void *"
+ pass "detect dm_type_void_star"
+ }
+ -re ".*dm_type_void_star\\(void\\*\\).*\r\n$gdb_prompt $" {
+ # v3 demangler
+ pass "detect dm_type_void_star"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_short" \
+ "detect dm_type_short" {
+ -re ".*dm_type_short\\(short\\).*\r\n$gdb_prompt $" {
+ # v2 and v3 demanglers
+ pass "detect dm_type_short"
+ }
+ -re ".*dm_type_short\\(short int\\).*\r\n$gdb_prompt $" {
+ # GDB type printer
+ set dm_type_short "short int"
+ pass "detect dm_type_short"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_unsigned_short" \
+ "detect dm_type_unsigned_short" {
+ -re ".*dm_type_unsigned_short\\(unsigned short\\).*\r\n$gdb_prompt $" {
+ # v2 and v3 demanglers
+ pass "detect dm_type_unsigned_short"
+ }
+ -re ".*dm_type_unsigned_short\\(short unsigned int\\).*\r\n$gdb_prompt $" {
+ # GDB type printer
+ set dm_type_unsigned_short "short unsigned int"
+ pass "detect dm_type_unsigned_short"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_long" \
+ "detect dm_type_long" {
+ -re ".*dm_type_long\\(long\\).*\r\n$gdb_prompt $" {
+ # v2 and v3 demanglers
+ pass "detect dm_type_long"
+ }
+ -re ".*dm_type_long\\(long int\\).*\r\n$gdb_prompt $" {
+ # GDB type printer
+ set dm_type_long "long int"
+ pass "detect dm_type_long"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_unsigned_long" \
+ "detect dm_type_unsigned_long" {
+ -re ".*dm_type_unsigned_long\\(unsigned long\\).*\r\n$gdb_prompt $" {
+ # v2 and v3 demanglers
+ pass "detect dm_type_unsigned_long"
+ }
+ -re ".*dm_type_unsigned_long\\(long unsigned int\\).*\r\n$gdb_prompt $" {
+ # GDB type printer
+ set dm_type_unsigned_long "long unsigned int"
+ pass "detect dm_type_unsigned_long"
+ }
+ }
+
+ gdb_test_multiple "print &dm_type_typedef" \
+ "detect dm_type_typedef" {
+ -re ".*dm_type_typedef\\(int\\).*\r\n$gdb_prompt $" {
+ # v2 and v3 demanglers
+ pass "detect dm_type_typedef"
+ }
+ -re ".*dm_type_typedef\\(myint\\).*\r\n$gdb_prompt $" {
+ # GDB type printer
+ set dm_type_typedef 1
+ pass "detect dm_type_typedef"
+ }
}
- -re ".*foo::operator,\\(.*foo.*&.*\\).*\r\n$gdb_prompt $" {
- # v3 demangler
- pass "detect dm_operator_comma"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_operator_comma"
- }
- timeout {
- fail "detect dm_operator_comma"
- }
- }
-
- send_gdb "print &foo::operator char*($dm_type_void)\n"
- gdb_expect {
- -re ".*foo::operator char \\*\\(void\\).*\r\n$gdb_prompt $" {
- # v2 demangler or GDB type printer
- set dm_operator_char_star "char *"
- set dm_operator_char_star_quoted "char \\*"
- pass "detect dm_operator_char_star"
- }
- -re ".*foo::operator char\\*\\(\\).*\r\n$gdb_prompt $" {
- # v3 demangler
- pass "detect dm_operator_char_star"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_operator_char_star"
- }
- timeout {
- fail "detect dm_operator_char_star"
- }
- }
-
- send_gdb "print &dm_type_char_star\n"
- gdb_expect {
- -re ".*dm_type_char_star\\(char \\*\\).*\r\n$gdb_prompt $" {
- # v2 demangler
- set dm_type_char_star "char *"
- set dm_type_char_star_quoted "char \\*"
- pass "detect dm_type_char_star"
- }
- -re ".*dm_type_char_star\\(char\\*\\).*\r\n$gdb_prompt $" {
- # v3 demangler
- pass "detect dm_type_char_star"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_char_star"
- }
- timeout {
- fail "detect dm_type_char_star (timeout)"
- }
- }
-
- send_gdb "print &dm_type_foo_ref\n"
- gdb_expect {
- -re ".*dm_type_foo_ref\\(foo &\\).*\r\n$gdb_prompt $" {
- # v2 demangler
- set dm_type_foo_ref "foo &"
- pass "detect dm_type_foo_ref"
- }
- -re ".*dm_type_foo_ref\\(foo&\\).*\r\n$gdb_prompt $" {
- # v3 demangler
- pass "detect dm_type_foo_ref"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_foo_ref"
- }
- timeout {
- fail "detect dm_type_foo_ref (timeout)"
- }
- }
-
- send_gdb "print &dm_type_int_star\n"
- gdb_expect {
- -re ".*dm_type_int_star\\(int \\*\\).*\r\n$gdb_prompt $" {
- # v2 demangler
- set dm_type_int_star "int *"
- pass "detect dm_type_int_star"
- }
- -re ".*dm_type_int_star\\(int\\*\\).*\r\n$gdb_prompt $" {
- # v3 demangler
- pass "detect dm_type_int_star"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_int_star"
- }
- timeout {
- fail "detect dm_type_int_star (timeout)"
- }
- }
-
- send_gdb "print &dm_type_long_star\n"
- gdb_expect {
- -re ".*dm_type_long_star\\(long \\*\\).*\r\n$gdb_prompt $" {
- # v2 demangler
- set dm_type_long_star "long *"
- pass "detect dm_type_long_star"
- }
- -re ".*dm_type_long_star\\(long\\*\\).*\r\n$gdb_prompt $" {
- # v3 demangler
- pass "detect dm_type_long_star"
- }
- -re ".*dm_type_long_star\\(long int \\*\\).*\r\n$gdb_prompt $" {
- # GCC v3 and GDB's type printer
- set dm_type_long_star "long int *"
- pass "detect dm_type_long_star"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_long_star"
- }
- timeout {
- fail "detect dm_type_long_star (timeout)"
- }
- }
-
- send_gdb "print &dm_type_unsigned_int\n"
- gdb_expect {
- -re ".*dm_type_unsigned_int\\(unsigned int\\).*\r\n$gdb_prompt $" {
- # v2 demangler
- set dm_type_unsigned_int "unsigned int"
- pass "detect dm_type_unsigned_int"
- }
- -re ".*dm_type_unsigned_int\\(unsigned\\).*\r\n$gdb_prompt $" {
- # v3 demangler
- pass "detect dm_type_unsigned_int"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_unsigned_int"
- }
- timeout {
- fail "detect dm_unsigned int (timeout)"
- }
- }
-
- send_gdb "print &dm_type_void\n"
- gdb_expect {
- -re ".*dm_type_void\\(void\\).*\r\n$gdb_prompt $" {
- # v2 demangler
- set dm_type_void "void"
- pass "detect dm_type_void"
- }
- -re ".*dm_type_void\\(\\).*\r\n$gdb_prompt $" {
- # v3 demangler
- pass "detect dm_type_void"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_void"
- }
- timeout {
- fail "detect dm_type_void (timeout)"
- }
- }
-
- send_gdb "print &dm_type_void_star\n"
- gdb_expect {
- -re ".*dm_type_void_star\\(void \\*\\).*\r\n$gdb_prompt $" {
- # v2 demangler
- set dm_type_void_star "void *"
- pass "detect dm_type_void_star"
- }
- -re ".*dm_type_void_star\\(void\\*\\).*\r\n$gdb_prompt $" {
- # v3 demangler
- pass "detect dm_type_void_star"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_void_star"
- }
- timeout {
- fail "detect dm_type_void_star (timeout)"
- }
- }
-
- send_gdb "print &dm_type_short\n"
- gdb_expect {
- -re ".*dm_type_short\\(short\\).*\r\n$gdb_prompt $" {
- # v2 and v3 demanglers
- pass "detect dm_type_short"
- }
- -re ".*dm_type_short\\(short int\\).*\r\n$gdb_prompt $" {
- # GDB type printer
- set dm_type_short "short int"
- pass "detect dm_type_short"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_short"
- }
- timeout {
- fail "detect dm_type_short (timeout)"
- }
- }
-
- send_gdb "print &dm_type_unsigned_short\n"
- gdb_expect {
- -re ".*dm_type_unsigned_short\\(unsigned short\\).*\r\n$gdb_prompt $" {
- # v2 and v3 demanglers
- pass "detect dm_type_unsigned_short"
- }
- -re ".*dm_type_unsigned_short\\(short unsigned int\\).*\r\n$gdb_prompt $" {
- # GDB type printer
- set dm_type_unsigned_short "short unsigned int"
- pass "detect dm_type_unsigned_short"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_unsigned_short"
- }
- timeout {
- fail "detect dm_type_unsigned_short (timeout)"
- }
- }
-
- send_gdb "print &dm_type_long\n"
- gdb_expect {
- -re ".*dm_type_long\\(long\\).*\r\n$gdb_prompt $" {
- # v2 and v3 demanglers
- pass "detect dm_type_long"
- }
- -re ".*dm_type_long\\(long int\\).*\r\n$gdb_prompt $" {
- # GDB type printer
- set dm_type_long "long int"
- pass "detect dm_type_long"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_long"
- }
- timeout {
- fail "detect dm_type_long (timeout)"
- }
- }
-
- send_gdb "print &dm_type_unsigned_long\n"
- gdb_expect {
- -re ".*dm_type_unsigned_long\\(unsigned long\\).*\r\n$gdb_prompt $" {
- # v2 and v3 demanglers
- pass "detect dm_type_unsigned_long"
- }
- -re ".*dm_type_unsigned_long\\(long unsigned int\\).*\r\n$gdb_prompt $" {
- # GDB type printer
- set dm_type_unsigned_long "long unsigned int"
- pass "detect dm_type_unsigned_long"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_unsigned_long"
- }
- timeout {
- fail "detect dm_type_unsigned_long (timeout)"
- }
- }
-
- send_gdb "print &dm_type_typedef\n"
- gdb_expect {
- -re ".*dm_type_typedef\\(int\\).*\r\n$gdb_prompt $" {
- # v2 and v3 demanglers
- pass "detect dm_type_typedef"
- }
- -re ".*dm_type_typedef\\(myint\\).*\r\n$gdb_prompt $" {
- # GDB type printer
- set dm_type_typedef 1
- pass "detect dm_type_typedef"
- }
- -re ".*$gdb_prompt $" {
- fail "detect dm_type_typedef"
- }
- timeout {
- fail "detect dm_type_typedef (timeout)"
- }
- }
}
#
proc info_func_regexp { name demangled } {
global gdb_prompt
- send_gdb "info function $name\n"
regsub {\\\(void\\\)} $demangled {\(\)} demangled
- gdb_expect {
- -re ".*File .*:\r\n(class |)$demangled\r\n.*$gdb_prompt $" {
- pass "info function for \"$name\""
- }
- -re ".*$gdb_prompt $" {
- fail "info function for \"$name\""
- }
- timeout {
- fail "info function for \"$name\" (timeout)"
- }
- }
+
+ gdb_test "info function $name" \
+ "File .*:\r\n(class|)${demangled}.*" \
+ "info function for \"$name\""
}
#
set good_pattern [string_to_regexp $good]
- send_gdb "print &$name\n"
- gdb_expect {
- -re ".* = .* $hex <$good_pattern>\r\n$gdb_prompt $" {
- pass "print &$name"
- }
- -re ".*$gdb_prompt $" {
- fail "print &$name"
- }
- timeout {
- fail "print &$name (timeout)"
- }
- }
+ gdb_test "print &$name" \
+ ".* = .* $hex <$good_pattern>"
}
# NOTE: carlton/2003-01-16: hairyfunc5-6 fail on GCC 3.x (for at least
set good_pattern [string_to_regexp $good]
set bad_pattern [string_to_regexp $bad]
- send_gdb "print &$name\n"
- gdb_expect {
+ gdb_test_multiple "print &$name" "print &$name" {
-re ".* = .* $hex <$good_pattern>\r\n$gdb_prompt $" {
pass "print &$name"
}
-re ".* = .* $hex <$bad_pattern>\r\n$gdb_prompt $" {
kfail $bugid "print &$name"
}
- -re ".*$gdb_prompt $" {
- fail "print &$name"
- }
- timeout {
- fail "print &$name (timeout)"
- }
}
}
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
- send_gdb "set language c++\n"
- gdb_expect -re "$gdb_prompt $"
- send_gdb "set width 0\n"
- gdb_expect -re "$gdb_prompt $"
+ gdb_test_no_output "set language c++"
+ gdb_test_no_output "set width 0"
runto_main
global gdb_prompt
global current_demangling_style
- send_gdb "set demangle-style $style\n"
- gdb_expect {
- -re "set demangle-style $style\[\r\n\]+$gdb_prompt $" {
- pass "$style: set demangle-style"
+ gdb_test_multiple "set demangle-style $style" \
+ "$style: set demangle-style" {
+ -re "set demangle-style $style\[\r\n\]+$gdb_prompt $" {
+ pass "$style: set demangle-style"
+ }
+ -re ".*$gdb_prompt $" {
+ fail "$style: set demangle-style"
+ error "set_demangling_style: set style"
+ }
+ timeout {
+ fail "$style: set demangle-style (timeout)"
+ error "set_demangling_style: set style"
+ }
}
- -re ".*$gdb_prompt $" {
- fail "$style: set demangle-style"
- error "set_demangling_style: set style"
- }
- timeout {
- fail "$style: set demangle-style (timeout)"
- error "set_demangling_style: set style"
- }
- }
- send_gdb "show demangle-style\n"
- gdb_expect {
- -re "The current C\[+\]+ demangling style is \"$style\".\r\n$gdb_prompt $" {
- pass "$style: check demangling style"
- }
- -re ".*$gdb_prompt $" {
- fail "$style: check demangling style"
- error "set_demangling_style: check style"
- }
- timeout {
- fail "$style: check demangling style (timeout)"
- error "set_demangling_style: check style"
+ gdb_test_multiple "show demangle-style" \
+ "$style: check demangling style" {
+ -re "The current C\[+\]+ demangling style is \"$style\".\r\n$gdb_prompt $" {
+ pass "$style: check demangling style"
+ }
+ -re ".*$gdb_prompt $" {
+ fail "$style: check demangling style"
+ error "set_demangling_style: check style"
+ }
+ timeout {
+ fail "$style: check demangling style (timeout)"
+ error "set_demangling_style: check style"
+ }
}
- }
set current_demangling_style $style
}
## 1999-04-19: "Fix from Dale Hawkins". Shouldn't segfault.
# Accept even a dubious demangling; the string is ambiguous.
- send_gdb "maintenance demangle __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator\n"
- gdb_expect {
+
+ gdb_test_multiple "maintenance demangle __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator" "gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator" {
-re "virtual function thunk \\(delta:-64\\) for CosNaming::_proxy_NamingContext::_0RL__list\\(unsigned long, _CORBA_Unbounded_Sequence<CosNaming::Binding> \\*\\&, CosNaming::BindingIterator \\*\\&\\)\r\n$gdb_prompt $" {
- pass "gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator"
+ pass "gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator"
}
-re ".*Can't demangle \"__thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator\"\r\n$gdb_prompt $" {
- pass "gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator"
- }
- -re ".*$gdb_prompt $" {
- fail "gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator"
- }
- timeout {
- fail "gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator (timeout)"
+ pass "gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator"
}
}
}
gdb_exit
gdb_start
- send_gdb "set language c++\n"
- gdb_expect -re "$gdb_prompt $"
- send_gdb "set width 0\n"
- gdb_expect -re "$gdb_prompt $"
+ gdb_test_no_output "set language c++"
+ gdb_test_no_output "set width 0"
# Using catch_demangling_errors this way ensures that, if one of
# the functions raises a Tcl error, then it'll get reported, and
global expect_out
global gdb_prompt
- send_gdb "print &$var\n"
- gdb_expect {
+ gdb_test_multiple "print &$var" "find address of $var" {
-re "\\$\[0-9\]+ = \\(.*\\) (0x\[0-9a-f\]+).*$gdb_prompt $" {
return $expect_out(1,string)
}
return ""
}
}
+ return ""
}
proc test_p_x { var type val addr } {
# Make sure that `Local' isn't in scope here; it's local to foobar.
# setup_kfail "gdb/825"
-send_gdb "ptype Local\n"
+
set eol "\[\t \]*\[\r\n\]+\[\t \]*"
-gdb_expect {
+gdb_test_multiple "ptype Local" "Local out of scope" {
-re "No symbol \"Local\" in current context.*${gdb_prompt} $" {
pass "Local out of scope"
}
# gcc 3.X abi-2 -gstabs+
kfail gdb/825 "Local out of scope"
}
- -re ".*${gdb_prompt} $" {
- fail "Local out of scope"
- }
- timeout {
- fail "Local out of scope (timeout)"
- }
}
#
# chastain 2004-01-02
-send_gdb "ptype InnerLocal\n"
-gdb_expect {
- -re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]*int il_foo\\((unsigned char const|const unsigned char) *&\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal (pattern 1)" }
- -re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]*InnerLocal *& operator *=\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((void|)\\);\[\r\n\t \]*int il_foo\\(unsigned char const *&\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal (pattern 2)" }
- -re "type = class InnerLocal \{\r\n\[\t \]*public:\r\n\[\t \]*char ilc;\r\n\[\t \]*int \\*ip;\r\n\[\t \]*InnerLocal::NestedInnerLocal nest1;\r\n\r\n\[\t \]*.int il_foo\\(unsigned char const &\\);\r\n\[\t \]*\}\[\t \]*\\(Local at.*local\\.cc:36\\).*$gdb_prompt $" { pass "ptype InnerLocal (old HP aCC)" }
- -re "type = class InnerLocal \{\r\n\[\t \]*public:\r\n\[\t \]*char ilc;\r\n\[\t \]*int \\*ip;\r\n\[\t \]*class InnerLocal4::NestedInnerLocal nest1;\r\n\r\n\[\t \]*int il_foo\\(unsigned char const &\\);\r\n\[\t \]*\\(Local at.*local\.cc:\[0-9\]+\\)\r\n\}.*$gdb_prompt $" { pass "ptype InnerLocal (old HP aCC)" }
- -re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]* int il_foo\\(unsigned char const *&\\);\[\r\n\t \]*InnerLocal *& operator *=\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((void|)\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal (pattern 5)" }
- -re ".*$gdb_prompt $" { fail "ptype InnerLocal" }
- timeout { fail "(timeout) ptype InnerLocal" }
+gdb_test_multiple "ptype InnerLocal" "ptype InnerLocal" {
+ -re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]*int il_foo\\((unsigned char const|const unsigned char) *&\\);\[\r\n\t \]*\}.*$gdb_prompt $" {
+ pass "ptype InnerLocal (pattern 1)"
+ }
+ -re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]*InnerLocal *& operator *=\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((void|)\\);\[\r\n\t \]*int il_foo\\(unsigned char const *&\\);\[\r\n\t \]*\}.*$gdb_prompt $" {
+ pass "ptype InnerLocal (pattern 2)"
+ }
+ -re "type = class InnerLocal \{\r\n\[\t \]*public:\r\n\[\t \]*char ilc;\r\n\[\t \]*int \\*ip;\r\n\[\t \]*InnerLocal::NestedInnerLocal nest1;\r\n\r\n\[\t \]*.int il_foo\\(unsigned char const &\\);\r\n\[\t \]*\}\[\t \]*\\(Local at.*local\\.cc:36\\).*$gdb_prompt $" {
+ pass "ptype InnerLocal (old HP aCC)"
+ }
+ -re "type = class InnerLocal \{\r\n\[\t \]*public:\r\n\[\t \]*char ilc;\r\n\[\t \]*int \\*ip;\r\n\[\t \]*class InnerLocal4::NestedInnerLocal nest1;\r\n\r\n\[\t \]*int il_foo\\(unsigned char const &\\);\r\n\[\t \]*\\(Local at.*local\.cc:\[0-9\]+\\)\r\n\}.*$gdb_prompt $" {
+ pass "ptype InnerLocal (old HP aCC)"
+ }
+ -re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]* int il_foo\\(unsigned char const *&\\);\[\r\n\t \]*InnerLocal *& operator *=\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((void|)\\);\[\r\n\t \]*\}.*$gdb_prompt $" {
+ pass "ptype InnerLocal (pattern 5)"
+ }
}
#---
# class support, but once we fix PR gdb/482, we should delete this
# test.
-send_gdb "ptype NestedInnerLocal\n"
-gdb_expect {
- -re "type = class NestedInnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*int nil;\[\r\n\t \]*int nil_foo\\(int\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype NestedInnerLocal" }
- -re "type = class NestedInnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*int nil;\[\r\n\t \]*NestedInnerLocal *& *operator *= *\\((main${sep}::|)InnerLocal::NestedInnerLocal const *&\\);\[\r\n\t \]*NestedInnerLocal\\((main${sep}::|)InnerLocal::NestedInnerLocal const *&\\);\[\r\n\t \]*NestedInnerLocal\\((void|)\\);\[\r\n\t \]*int nil_foo\\(int\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype NestedInnerLocal" }
- -re "No symbol \"NestedInnerLocal\" in current context\.\r\n$gdb_prompt $" {
- pass "ptype NestedInnerLocal"
- }
- -re ".*$gdb_prompt $" { fail "ptype NestedInnerLocal" }
- timeout { fail "(timeout) ptype NestedInnerLocal" }
+gdb_test_multiple "ptype NestedInnerLocal" "ptype NestedInnerLocal" {
+ -re "type = class NestedInnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*int nil;\[\r\n\t \]*int nil_foo\\(int\\);\[\r\n\t \]*\}.*$gdb_prompt $" {
+ pass "ptype NestedInnerLocal"
+ }
+ -re "type = class NestedInnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*int nil;\[\r\n\t \]*NestedInnerLocal *& *operator *= *\\((main${sep}::|)InnerLocal::NestedInnerLocal const *&\\);\[\r\n\t \]*NestedInnerLocal\\((main${sep}::|)InnerLocal::NestedInnerLocal const *&\\);\[\r\n\t \]*NestedInnerLocal\\((void|)\\);\[\r\n\t \]*int nil_foo\\(int\\);\[\r\n\t \]*\}.*$gdb_prompt $" {
+ pass "ptype NestedInnerLocal"
+ }
+ -re "No symbol \"NestedInnerLocal\" in current context\.\r\n$gdb_prompt $" {
+ pass "ptype NestedInnerLocal"
+ }
}
set re_class "((struct|class) InnerLocal::NestedInnerLocal \{${ws}public:|struct InnerLocal::NestedInnerLocal \{)"
get_debug_format
-send_gdb "print this\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\(const (class |)A *\\* *(const|)\\) $hex\r\n$gdb_prompt $" {
- pass "print this in A::bar"
- }
- -re "\\$\[0-9\]* = \\((class |)A *\\* *(const|)\\) $hex\r\n$gdb_prompt $" {
- # gcc versions up to 3.0.4 with -gstabs+ do not emit "const" indicators,
- # so the output is "A *". It should be "const A *" or "const A * const".
- setup_xfail_format "stabs"
- fail "print this in A::bar (missing const)"
- }
- -re "\\$\[0-9\]* = \\(const (class |)\{\\.\\.\\.\} *\\* *(const|)\\) $hex\r\n$gdb_prompt $" {
- # gcc versions gcc-3_1-branch%20020404 and HEAD%20020404 with -gstabs+
- # produce good stabs, but gdb prints "const class {...} *" const.
- # This is PR gdb/277.
- # setup_kfail "gdb/277"
- fail "print this in A::bar (gdb/277)"
- }
- -re ".*$gdb_prompt $" { fail "print this in A::bar" }
- timeout { fail "(timeout) print this in A::bar" }
+gdb_test_multiple "print this" "print this in A::bar" {
+ -re "\\$\[0-9\]* = \\(const (class |)A *\\* *(const|)\\) $hex\r\n$gdb_prompt $" {
+ pass "print this in A::bar"
+ }
+ -re "\\$\[0-9\]* = \\((class |)A *\\* *(const|)\\) $hex\r\n$gdb_prompt $" {
+ # gcc versions up to 3.0.4 with -gstabs+ do not emit "const"
+ # indicators, so the output is "A *". It should be "const A
+ # *" or "const A * const".
+ setup_xfail_format "stabs"
+ fail "print this in A::bar (missing const)"
+ }
+ -re "\\$\[0-9\]* = \\(const (class |)\{\\.\\.\\.\} *\\* *(const|)\\) $hex\r\n$gdb_prompt $" {
+ # gcc versions gcc-3_1-branch%20020404 and HEAD%20020404 with -gstabs+
+ # produce good stabs, but gdb prints "const class {...} *" const.
+ # This is PR gdb/277.
+ # setup_kfail "gdb/277"
+ fail "print this in A::bar (gdb/277)"
+ }
}
# Check again with funk::getFunky (this is the original test case
# Check ptype of class -- should show const/volatile methods
-send_gdb "ptype A\n"
-gdb_expect {
- -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) (const volatile|volatile const);\r\n\}\r\n$gdb_prompt $" {
- pass "ptype A"
- }
- -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*A & operator=\\(A const ?&\\);\r\n\[ \]*A\\(A const ?&\\);\r\n\[ \]*A\\((void|)\\);\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) (const volatile|volatile const);\r\n\}\r\n$gdb_prompt $" {
- pass "ptype A"
- }
- -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) (const volatile|volatile const);\r\n\[ \]*A & operator=\\(A const ?&\\);\r\n\[ \]*A\\(A const ?&\\);\r\n\[ \]*A\\((void|)\\);\r\n\}\r\n$gdb_prompt $" {
- pass "ptype A"
- }
- -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\);\r\n\[ \]*int qux\\(int, float\\) const;\r\n\}\r\n$gdb_prompt $" {
- pass "ptype A (HP aCC bug -- volatile not indicated)"
- }
- -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) const volatile;\r\n\}\r\n$gdb_prompt $" {
- pass "ptype A"
- }
- -re ".*$gdb_prompt $" { fail "ptype A" }
- timeout { fail "(timeout) ptype A" }
+gdb_test_multiple "ptype A" "ptype A" {
+ -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) (const volatile|volatile const);\r\n\}\r\n$gdb_prompt $" {
+ pass "ptype A"
+ }
+ -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*A & operator=\\(A const ?&\\);\r\n\[ \]*A\\(A const ?&\\);\r\n\[ \]*A\\((void|)\\);\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) (const volatile|volatile const);\r\n\}\r\n$gdb_prompt $" {
+ pass "ptype A"
+ }
+ -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) (const volatile|volatile const);\r\n\[ \]*A & operator=\\(A const ?&\\);\r\n\[ \]*A\\(A const ?&\\);\r\n\[ \]*A\\((void|)\\);\r\n\}\r\n$gdb_prompt $" {
+ pass "ptype A"
+ }
+ -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\);\r\n\[ \]*int qux\\(int, float\\) const;\r\n\}\r\n$gdb_prompt $" {
+ pass "ptype A (HP aCC bug -- volatile not indicated)"
+ }
+ -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) const volatile;\r\n\}\r\n$gdb_prompt $" {
+ pass "ptype A"
+ }
}
-send_gdb "cont\n"
-gdb_expect {
+gdb_test_multiple "cont" "finish program" {
-re "Continuing.\r\n\r\nProgram exited normally.*$gdb_prompt $" {
pass "finish program"
}
-re "Continuing.* EXIT code 0.*Program exited normally.*$gdb_prompt $" {
pass "finish program (exit wrapper)"
}
- -re ".*$gdb_prompt $" { fail "finish program" }
- default:{ fail "finish program (timeout)" }
}
# See what language gdb thinks main() is, prior to reading full symbols.
# I think this fails for COFF targets.
- send_gdb "show language\n"
- gdb_expect {
- -re ".* source language is \"auto; currently c\[+\]+\".*$gdb_prompt $" {
- pass "deduced language is C++, before full symbols"
- }
- -re ".*$gdb_prompt $" {
- fail "source language not correct for C++ (psymtabs only)"
- return
- }
- timeout {
- fail "can't show language (timeout)"
- return
- }
- }
+ gdb_test "show language" \
+ "source language is \"auto; currently c\[+\]+\".*" \
+ "deduced language is C++, before full symbols"
runto_main
# See if our idea of the language has changed.
- send_gdb "show language\n"
- gdb_expect {
- -re ".* source language is \"auto; currently c\[+\]+\".*$gdb_prompt $" {
- pass "deduced language is C++, after full symbols"
- }
- -re ".*$gdb_prompt $" {
- fail "source language not correct for C++ (full symbols)"
- return
- }
- timeout {
- fail "can't show language (timeout)"
- return
- }
- }
+ gdb_test "show language" \
+ "source language is \"auto; currently c\[+\]+\".*" \
+ "deduced language is C++, after full symbols"
}
proc test_expr { args } {
# I'm including versions both with and without quotes; for tests that
# shouldn't work with quotes, I'm only including one version.
-send_gdb "print 'AAA::c'\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 0 '\\\\(0|000)'\r\n$gdb_prompt $" { pass "print 'AAA::c'" }
- -re ".*$gdb_prompt $" { fail "print 'AAA::c'" }
- timeout { fail "(timeout) print 'AAA::c'" }
-}
+gdb_test "print 'AAA::c'" \
+ "\\$\[0-9\]* = 0 '\\\\(0|000)'" \
+ "print 'AAA::c'"
-send_gdb "print AAA::c\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 0 '\\\\(0|000)'\r\n$gdb_prompt $" { pass "print AAA::c" }
- -re ".*$gdb_prompt $" { fail "print AAA::c" }
- timeout { fail "(timeout) print AAA::c" }
-}
+gdb_test "print AAA::c" \
+ "\\$\[0-9\]* = 0 '\\\\(0|000)'" \
+ "print AAA::c"
# An object declared using "using".
-send_gdb "print ina\n"
-gdb_expect {
- -re "\\$\[0-9\]+ = {xx = 33}.*$gdb_prompt $" {
- pass "print ina"
- }
- -re ".*$gdb_prompt $" { fail "print ina" }
- timeout { fail "(timeout) print ina" }
-}
+gdb_test "print ina" "\\$\[0-9\]+ = {xx = 33}"
-send_gdb "ptype ina\n"
-gdb_expect {
- -re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*.*int fum\\(int\\);\r\n\}\r\n$gdb_prompt $" {
- pass "ptype ina"
- }
- -re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*int fum\\(int\\);\r\n.*\}\r\n$gdb_prompt $" {
- pass "ptype ina"
- }
- -re ".*$gdb_prompt $" { fail "ptype ina" }
- timeout { fail "(timeout) ptype ina" }
+gdb_test_multiple "ptype ina" "ptype ina" {
+ -re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*.*int fum\\(int\\);\r\n\}\r\n$gdb_prompt $" {
+ pass "ptype ina"
+ }
+ -re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*int fum\\(int\\);\r\n.*\}\r\n$gdb_prompt $" {
+ pass "ptype ina"
+ }
}
# Check all functions are known to GDB
setup_xfail hppa*-*-*11* CLLbs14869
-send_gdb "info func xyzq\n"
-gdb_expect {
- -re "All functions.*File.*namespace.cc:\r\nint AAA::A_xyzq\\(int\\);\r\nint BBB::B_xyzq\\(int\\);\r\nchar AAA::xyzq\\(char\\);\r\nchar BBB::xyzq\\(char\\);\r\nchar BBB::CCC::xyzq\\(char\\);\r\nchar BBB::Class::xyzq\\(char\\);\r\n$gdb_prompt $" {
- pass "info func xyzq"
- }
- -re "All functions.*File.*namespace.cc:\r\nint AAA::A_xyzq\\(int\\);\r\nchar AAA::xyzq\\(char\\);\r\nint BBB::B_xyzq\\(int\\);\r\nchar BBB::CCC::xyzq\\(char\\);\r\nchar BBB::Class::xyzq\\(char\\);\r\nchar BBB::xyzq\\(char\\);\r\n$gdb_prompt $" {
- pass "info func xyzq"
- }
- -re ".*$gdb_prompt $" { fail "info func xyzq" }
- timeout { fail "(timeout) info func xyzq" }
+gdb_test_multiple "info func xyzq" "info func xyzq" {
+ -re "All functions.*File.*namespace.cc:\r\nint AAA::A_xyzq\\(int\\);\r\nint BBB::B_xyzq\\(int\\);\r\nchar AAA::xyzq\\(char\\);\r\nchar BBB::xyzq\\(char\\);\r\nchar BBB::CCC::xyzq\\(char\\);\r\nchar BBB::Class::xyzq\\(char\\);\r\n$gdb_prompt $" {
+ pass "info func xyzq"
+ }
+ -re "All functions.*File.*namespace.cc:\r\nint AAA::A_xyzq\\(int\\);\r\nchar AAA::xyzq\\(char\\);\r\nint BBB::B_xyzq\\(int\\);\r\nchar BBB::CCC::xyzq\\(char\\);\r\nchar BBB::Class::xyzq\\(char\\);\r\nchar BBB::xyzq\\(char\\);\r\n$gdb_prompt $" {
+ pass "info func xyzq"
+ }
}
# Call a function in a namespace
-send_gdb "print 'AAA::xyzq'('x')\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 97 'a'\r\n$gdb_prompt $" {
- pass "print 'AAA::xyzq'('x')"
- }
- -re ".*$gdb_prompt $" { fail "print 'AAA::xyzq'('x')" }
- timeout { fail "(timeout) print 'AAA::xyzq'('x')" }
-}
-
-send_gdb "print AAA::xyzq('x')\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 97 'a'\r\n$gdb_prompt $" {
- pass "print AAA::xyzq('x')"
- }
- -re ".*$gdb_prompt $" { fail "print AAA::xyzq('x')" }
- timeout { fail "(timeout) print AAA::xyzq('x')" }
-}
+gdb_test "print 'AAA::xyzq'('x')" \
+ "\\$\[0-9\]* = 97 'a'" \
+ "print 'AAA::xyzq'('x')"
+
+gdb_test "print AAA::xyzq('x')" \
+ "\\$\[0-9\]* = 97 'a'" \
+ "print AAA::xyzq('x')"
# Break on a function in a namespace
# Call a function in a nested namespace
-send_gdb "print 'BBB::CCC::xyzq'('x')\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 122 'z'\r\n$gdb_prompt $" {
- pass "print 'BBB::CCC::xyzq'('x')"
- }
- -re ".*$gdb_prompt $" { fail "print 'BBB::CCC::xyzq'('x')" }
- timeout { fail "(timeout) print 'BBB::CCC::xyzq'('x')" }
-}
-
-send_gdb "print BBB::CCC::xyzq('x')\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 122 'z'\r\n$gdb_prompt $" {
- pass "print BBB::CCC::xyzq('x')"
- }
- -re ".*$gdb_prompt $" { fail "print BBB::CCC::xyzq('x')" }
- timeout { fail "(timeout) print BBB::CCC::xyzq('x')" }
-}
+gdb_test "print 'BBB::CCC::xyzq'('x')" \
+ "\\$\[0-9\]* = 122 'z'" \
+ "print 'BBB::CCC::xyzq'('x')"
+
+gdb_test "print BBB::CCC::xyzq('x')" \
+ "\\$\[0-9\]* = 122 'z'" \
+ "print BBB::CCC::xyzq('x')"
# Break on a function in a nested namespace
# Print address of a function in a class in a namespace
-send_gdb "print 'BBB::Class::xyzq'\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{char \\((BBB::|)Class \\*( const|), (char|int)\\)\} $hex <BBB::Class::xyzq\\(char\\)>\r\n$gdb_prompt $" {
- pass "print 'BBB::Class::xyzq'"
- }
- -re ".*$gdb_prompt $" { fail "print 'BBB::Class::xyzq'" }
- timeout { fail "(timeout) print 'BBB::Class::xyzq'" }
-}
+gdb_test "print 'BBB::Class::xyzq'" \
+ "\\$\[0-9\]* = \{char \\((BBB::|)Class \\*( const|), (char|int)\\)\} $hex <BBB::Class::xyzq\\(char\\)>" \
+ "print 'BBB::Class::xyzq'"
-send_gdb "print BBB::Class::xyzq\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{char \\((BBB::|)Class \\*( const|), (char|int)\\)\} $hex <BBB::Class::xyzq\\(char\\)>\r\n$gdb_prompt $" {
- pass "print BBB::Class::xyzq"
- }
- -re ".*$gdb_prompt $" { fail "print BBB::Class::xyzq" }
- timeout { fail "(timeout) print BBB::Class::xyzq" }
-}
+gdb_test "print BBB::Class::xyzq" \
+ "\\$\[0-9\]* = \{char \\((BBB::|)Class \\*( const|), (char|int)\\)\} $hex <BBB::Class::xyzq\\(char\\)>" \
+ "print BBB::Class::xyzq"
# Break on a function in a class in a namespace
proc take_gdb_out_of_choice_menu {} {
global gdb_prompt
- send_gdb " \n"
- gdb_expect {
+ gdb_test_multiple " " " " {
-re ".*$gdb_prompt $" {
}
timeout {
continue
}
-send_gdb "break myClass::performBlocking\n"
-gdb_expect {
+gdb_test_multiple "break myClass::performBlocking" "break myClass::performBlocking" {
-re "Breakpoint $decimal at $hex: file .*$srcfile, line 12.*$gdb_prompt $" {
pass "break myClass::performBlocking"
}
# -- chastain 2003-02-03
kfail "gdb/1023" "break myClass::performBlocking"
}
- -re ".*$gdb_prompt $" {
- fail "break myClass::performBlocking"
- }
- timeout {
- fail "break myClass::performBlocking (timeout)"
- }
}
gdb_test \
}
+gdb_test "print s" ".\[0-9\]* = -1" "print value of s"
+gdb_test "ptype s" "type = short"
-send_gdb "print s\n"
-gdb_expect {
- -re ".\[0-9\]* = -1.*$gdb_prompt $" {
- pass "print value of s"
- }
- -re ".*$gdb_prompt $" { fail "print value of s" }
- timeout { fail "(timeout) print value of s" }
- }
-
-
-send_gdb "ptype s\n"
-gdb_expect {
- -re "type = short.*$gdb_prompt $" { pass "ptype s" }
- -re ".*$gdb_prompt $" { fail "ptype s" }
- timeout { fail "(timeout) ptype s" }
-}
-
-
-send_gdb "print *ps\n"
-gdb_expect {
- -re ".\[0-9\]* = -1.*$gdb_prompt $" {
- pass "print value of ps"
- }
- -re ".*$gdb_prompt $" { fail "print value of ps" }
- timeout { fail "(timeout) print value of ps" }
- }
-
-
-send_gdb "ptype ps\n"
-gdb_expect {
- -re "type = short \*.*$gdb_prompt $" { pass "ptype ps" }
- -re ".*$gdb_prompt $" { fail "ptype ps" }
- timeout { fail "(timeout) ptype ps" }
-}
+gdb_test "print *ps" ".\[0-9\]* = -1" "print value of ps"
+gdb_test "ptype ps" "type = short \\*"
-send_gdb "print as\[0\]\n"
-gdb_expect {
- -re ".\[0-9\]* = 0.*$gdb_prompt $" {
- pass "print value of as\[0\]"
- }
- -re ".*$gdb_prompt $" { fail "print value of as\[0\]" }
- timeout { fail "(timeout) print value of as\[0\]" }
- }
-
-
-send_gdb "ptype as\n"
-gdb_expect {
+gdb_test "print as\[0\]" ".\[0-9\]* = 0" "print value of as\[0\]"
+gdb_test_multiple "ptype as" "ptype as" {
-re "type = short \\\[4\\\].*$gdb_prompt $" { pass "ptype as" }
-re "type = short int \\\[4\\\].*$gdb_prompt $" { pass "ptype as" }
- -re ".*$gdb_prompt $" { fail "ptype as" }
- timeout { fail "(timeout) ptype as" }
}
-send_gdb "print as\[1\]\n"
-gdb_expect {
- -re ".\[0-9\]* = 1.*$gdb_prompt $" {
- pass "print value of as\[1\]"
- }
- -re ".*$gdb_prompt $" { fail "print value of as\[1\]" }
- timeout { fail "(timeout) print value of as\[1\]" }
- }
-
-send_gdb "print as\[2\]\n"
-gdb_expect {
- -re ".\[0-9\]* = 2.*$gdb_prompt $" {
- pass "print value of as\[2\]"
- }
- -re ".*$gdb_prompt $" { fail "print value of as\[2\]" }
- timeout { fail "(timeout) print value of as\[2\]" }
- }
-
-send_gdb "print as\[3\]\n"
-gdb_expect {
- -re ".\[0-9\]* = 3.*$gdb_prompt $" {
- pass "print value of as\[3\]"
- }
- -re ".*$gdb_prompt $" { fail "print value of as\[3\]" }
- timeout { fail "(timeout) print value of as\[3\]" }
- }
-
-send_gdb "print rs\n"
-gdb_expect {
+gdb_test "print as\[1\]" ".\[0-9\]* = 1" "print value of as\[1\]"
+gdb_test "print as\[2\]" ".\[0-9\]* = 2" "print value of as\[2\]"
+gdb_test "print as\[3\]" ".\[0-9\]* = 3" "print value of as\[3\]"
+
+gdb_test_multiple "print rs" "print value of rs" {
-re ".\[0-9\]* = \\(short &\\) @$hex: -1.*$gdb_prompt $" {
pass "print value of rs"
}
-re ".\[0-9\]* = \\(short int &\\) @$hex: -1.*$gdb_prompt $" {
pass "print value of rs"
}
- -re ".*$gdb_prompt $" { fail "print value of rs" }
- timeout { fail "(timeout) print value of rs" }
eof { fail "print rs ($GDB dumped core) (FIXME)" ; gdb_start_again ; }
+}
- }
-
-send_gdb "ptype rs\n"
-gdb_expect {
+gdb_test_multiple "ptype rs" "ptype rs" {
-re "type = short &.*$gdb_prompt $" { pass "ptype rs" }
-re "type = short int &.*$gdb_prompt $" { pass "ptype rs" }
- -re ".*$gdb_prompt $" { fail "ptype rs" }
- timeout { fail "(timeout) ptype rs" }
}
-
-send_gdb "print *rps\n"
-gdb_expect {
- -re ".\[0-9\]* = -1.*$gdb_prompt $" {
- pass "print value of *rps"
- }
- -re ".*$gdb_prompt $" { fail "print value of *rps" }
- timeout { fail "(timeout) print value of *rps" }
- }
+gdb_test "print *rps" ".\[0-9\]* = -1" "print value of *rps"
# GDB had a bug about dereferencing a pointer type
# that would lead to wrong results
gdb_test "x /hd rps" "$hex:\[ \t\]*-1" "examine value at rps"
-send_gdb "ptype rps\n"
-gdb_expect {
+gdb_test_multiple "ptype rps" "ptype rps" {
-re "type = short \\*&.*$gdb_prompt $" { pass "ptype rps" }
-re "type = short int \\*&.*$gdb_prompt $" { pass "ptype rps" }
- -re ".*$gdb_prompt $" { fail "ptype rps" }
- timeout { fail "(timeout) ptype rps" }
}
+gdb_test "print ras\[0\]" ".\[0-9\]* = 0" "print value of ras\[0\]"
-send_gdb "print ras\[0\]\n"
-gdb_expect {
- -re ".\[0-9\]* = 0.*$gdb_prompt $" {
- pass "print value of ras\[0\]"
- }
- -re ".*$gdb_prompt $" { fail "print value of ras\[0\]" }
- timeout { fail "(timeout) print value of ras\[0\]" }
- }
-
-
-send_gdb "ptype ras\n"
-gdb_expect {
+gdb_test_multiple "ptype ras" "ptype ras" {
-re "type = short \\\(&\\\)\\\[4\\\].*$gdb_prompt $" { pass "ptype ras" }
-re "type = short int \\\(&\\\)\\\[4\\\].*$gdb_prompt $" { pass "ptype ras" }
- -re ".*$gdb_prompt $" { fail "ptype ras" }
- timeout { fail "(timeout) ptype ras" }
}
-send_gdb "print ras\[1\]\n"
-gdb_expect {
- -re ".\[0-9\]* = 1.*$gdb_prompt $" {
- pass "print value of ras\[1\]"
- }
- -re ".*$gdb_prompt $" { fail "print value of ras\[1\]" }
- timeout { fail "(timeout) print value of ras\[1\]" }
- }
-
-send_gdb "print ras\[2\]\n"
-gdb_expect {
- -re ".\[0-9\]* = 2.*$gdb_prompt $" {
- pass "print value of ras\[2\]"
- }
- -re ".*$gdb_prompt $" { fail "print value of ras\[2\]" }
- timeout { fail "(timeout) print value of ras\[2\]" }
- }
-
-send_gdb "print ras\[3\]\n"
-gdb_expect {
- -re ".\[0-9\]* = 3.*$gdb_prompt $" {
- pass "print value of ras\[3\]"
- }
- -re ".*$gdb_prompt $" { fail "print value of ras\[3\]" }
- timeout { fail "(timeout) print value of ras\[3\]" }
- }
+gdb_test "print ras\[1\]" ".\[0-9\]* = 1" "print value of ras\[1\]"
+gdb_test "print ras\[2\]" ".\[0-9\]* = 2" "print value of ras\[2\]"
+gdb_test "print ras\[3\]" ".\[0-9\]* = 3" "print value of ras\[3\]"
if ![runto 'f'] then {
gdb_test "up" ".main2.*" "up from f"
-send_gdb "print C\n"
-gdb_expect {
- -re ".\[0-9\]* = 65 \'A\'.*$gdb_prompt $" {
- pass "print value of C"
- }
- -re ".*$gdb_prompt $" { fail "print value of C" }
- timeout { fail "(timeout) print value of C" }
- }
-
-
-send_gdb "ptype C\n"
-gdb_expect {
- -re "type = char.*$gdb_prompt $" { pass "ptype C" }
- -re ".*$gdb_prompt $" { fail "ptype C" }
- timeout { fail "(timeout) ptype C" }
-}
-
-
-send_gdb "print UC\n"
-gdb_expect {
- -re ".\[0-9\]* = 21 '\.025'\.*$gdb_prompt $" {
- pass "print value of UC"
- }
- -re ".*$gdb_prompt $" { fail "print value of UC" }
- timeout { fail "(timeout) print value of UC" }
- }
+gdb_test "print C" ".\[0-9\]* = 65 \'A\'" "print value of C"
+gdb_test "ptype C" "type = char"
+gdb_test "print UC" ".\[0-9\]* = 21 '\.025'" "print value of UC"
+gdb_test "ptype UC" "type = unsigned char"
-send_gdb "ptype UC\n"
-gdb_expect {
- -re "type = unsigned char.*$gdb_prompt $" { pass "ptype UC" }
- -re ".*$gdb_prompt $" { fail "ptype UC" }
- timeout { fail "(timeout) ptype UC" }
-}
-
-
-send_gdb "print S\n"
-gdb_expect {
- -re ".\[0-9\]* = -14.*$gdb_prompt $" {
- pass "print value of S"
- }
- -re ".*$gdb_prompt $" { fail "print value of S" }
- timeout { fail "(timeout) print value of S" }
- }
-
-
-send_gdb "ptype S\n"
-gdb_expect {
- -re "type = short.*$gdb_prompt $" { pass "ptype S" }
- -re ".*$gdb_prompt $" { fail "ptype S" }
- timeout { fail "(timeout) ptype S" }
-}
+gdb_test "print S" ".\[0-9\]* = -14" "print value of S"
+gdb_test "ptype S" "type = short.*"
-
-send_gdb "print US\n"
-gdb_expect {
- -re ".\[0-9\]* = 7.*$gdb_prompt $" {
- pass "print value of US"
- }
- -re ".*$gdb_prompt $" { fail "print value of US" }
- timeout { fail "(timeout) print value of US" }
- }
-
-
-send_gdb "ptype US\n"
-gdb_expect {
+gdb_test "print US" ".\[0-9\]* = 7" "print value of US"
+gdb_test_multiple "ptype US" "ptype US" {
-re "type = unsigned short.*$gdb_prompt $" { pass "ptype US" }
-re "type = short unsigned.*$gdb_prompt $" { pass "ptype US" }
- -re ".*$gdb_prompt $" { fail "ptype US" }
- timeout { fail "(timeout) ptype US" }
-}
-
-
-send_gdb "print I\n"
-gdb_expect {
- -re ".\[0-9\]* = 102.*$gdb_prompt $" {
- pass "print value of I"
- }
- -re ".*$gdb_prompt $" { fail "print value of I" }
- timeout { fail "(timeout) print value of I" }
- }
-
-
-send_gdb "ptype I\n"
-gdb_expect {
- -re "type = int.*$gdb_prompt $" { pass "ptype I" }
- -re ".*$gdb_prompt $" { fail "ptype I" }
- timeout { fail "(timeout) ptype I" }
-}
-
-
-send_gdb "print UI\n"
-gdb_expect {
- -re ".\[0-9\]* = 1002.*$gdb_prompt $" {
- pass "print value of UI"
- }
- -re ".*$gdb_prompt $" { fail "print value of UI" }
- timeout { fail "(timeout) print value of UI" }
- }
-
-
-send_gdb "ptype UI\n"
-gdb_expect {
- -re "type = unsigned int.*$gdb_prompt $" { pass "ptype UI" }
- -re ".*$gdb_prompt $" { fail "ptype UI" }
- timeout { fail "(timeout) ptype UI" }
}
+gdb_test "print I" ".\[0-9\]* = 102" "print value of I"
+gdb_test "ptype I" "type = int"
-send_gdb "print L\n"
-gdb_expect {
- -re ".\[0-9\]* = -234.*$gdb_prompt $" {
- pass "print value of L"
- }
- -re ".*$gdb_prompt $" { fail "print value of L" }
- timeout { fail "(timeout) print value of L" }
- }
-
-
-send_gdb "ptype L\n"
-gdb_expect {
- -re "type = long.*$gdb_prompt $" { pass "ptype L" }
- -re ".*$gdb_prompt $" { fail "ptype L" }
- timeout { fail "(timeout) ptype L" }
-}
+gdb_test "print UI" ".\[0-9\]* = 1002" "print value of UI"
+gdb_test "ptype UI" "type = unsigned int"
+gdb_test "print L" ".\[0-9\]* = -234" "print value of L"
+gdb_test "ptype L" "type = long.*"
-send_gdb "print UL\n"
-gdb_expect {
- -re ".\[0-9\]* = 234.*$gdb_prompt $" {
- pass "print value of UL"
- }
- -re ".*$gdb_prompt $" { fail "print value of UL" }
- timeout { fail "(timeout) print value of UL" }
- }
-
-
-send_gdb "ptype UL\n"
-gdb_expect {
+gdb_test "print UL" ".\[0-9\]* = 234" "print value of UL"
+gdb_test_multiple "ptype UL" "ptype UL" {
-re "type = unsigned long.*$gdb_prompt $" { pass "ptype UL" }
-re "type = long unsigned.*$gdb_prompt $" { pass "ptype UL" }
- -re ".*$gdb_prompt $" { fail "ptype UL" }
- timeout { fail "(timeout) ptype UL" }
}
+gdb_test "print F" ".\[0-9\]* = 1.2\[0-9\]*e\\+0?10.*" \
+ "print value of F"
-send_gdb "print F\n"
-gdb_expect {
- -re ".\[0-9\]* = 1.2\[0-9\]*e\\+0?10.*$gdb_prompt $" {
- pass "print value of F"
- }
- -re ".*$gdb_prompt $" { fail "print value of F" }
- timeout { fail "(timeout) print value of F" }
- }
-
+gdb_test "ptype F" "type = float.*"
+gdb_test "print D" ".\[0-9\]* = -1.375e-123.*" \
+ "print value of D"
-send_gdb "ptype F\n"
-gdb_expect {
- -re "type = float.*$gdb_prompt $" { pass "ptype F" }
- -re ".*$gdb_prompt $" { fail "ptype F" }
- timeout { fail "(timeout) ptype F" }
-}
-
-
-send_gdb "print D\n"
-gdb_expect {
- -re ".\[0-9\]* = -1.375e-123.*$gdb_prompt $" {
- pass "print value of D"
- }
- -re ".*$gdb_prompt $" { fail "print value of D" }
- timeout { fail "(timeout) print value of D" }
- }
-
-
-send_gdb "ptype D\n"
-gdb_expect {
- -re "type = double.*$gdb_prompt $" { pass "ptype D" }
- -re ".*$gdb_prompt $" { fail "ptype D" }
- timeout { fail "(timeout) ptype D" }
-}
-
+gdb_test "ptype D" "type = double.*"
#
# test reference types
#
+gdb_test "ptype rC" "type = char &"
+gdb_test "ptype rUC" "type = unsigned char &"
-
-send_gdb "ptype rC\n"
-gdb_expect {
- -re "type = char &.*$gdb_prompt $" { pass "ptype rC" }
- -re ".*$gdb_prompt $" { fail "ptype rC" }
- timeout { fail "(timeout) ptype rC" }
-}
-
-
-
-
-send_gdb "ptype rUC\n"
-gdb_expect {
- -re "type = unsigned char &.*$gdb_prompt $" { pass "ptype rUC" }
- -re ".*$gdb_prompt $" { fail "ptype rUC" }
- timeout { fail "(timeout) ptype rUC" }
-}
-
-
-
-send_gdb "ptype rS\n"
-gdb_expect {
+gdb_test_multiple "ptype rS" "ptype rS" {
-re "type = short &.*$gdb_prompt $" { pass "ptype rS" }
-re "type = short int &.*$gdb_prompt $" { pass "ptype rS" }
- -re ".*$gdb_prompt $" { fail "ptype rS" }
- timeout { fail "(timeout) ptype rS" }
}
-
-
-send_gdb "ptype rUS\n"
-gdb_expect {
+gdb_test_multiple "ptype rUS" "ptype rUS" {
-re "type = unsigned short &.*$gdb_prompt $" { pass "ptype rUS" }
-re "type = short unsigned int &.*$gdb_prompt $" { pass "ptype rUS" }
- -re ".*$gdb_prompt $" { fail "ptype rUS" }
- timeout { fail "(timeout) ptype rUS" }
-}
-
-
-send_gdb "ptype rI\n"
-gdb_expect {
- -re "type = int &.*$gdb_prompt $" { pass "ptype rI" }
- -re ".*$gdb_prompt $" { fail "ptype rI" }
- timeout { fail "(timeout) ptype rI" }
-}
-
-
-
-send_gdb "ptype rUI\n"
-gdb_expect {
- -re "type = unsigned int &.*$gdb_prompt $" { pass "ptype rUI" }
- -re ".*$gdb_prompt $" { fail "ptype rUI" }
- timeout { fail "(timeout) ptype rUI" }
}
+gdb_test "ptype rI" "type = int &"
+gdb_test "ptype rUI" "type = unsigned int &"
-send_gdb "ptype rL\n"
-gdb_expect {
+gdb_test_multiple "ptype rL" "ptype rL" {
-re "type = long &.*$gdb_prompt $" { pass "ptype rL" }
-re "type = long int &.*$gdb_prompt $" { pass "ptype rL" }
- -re ".*$gdb_prompt $" { fail "ptype rL" }
- timeout { fail "(timeout) ptype rL" }
}
-
-send_gdb "ptype rUL\n"
-gdb_expect {
+gdb_test_multiple "ptype rUL" "ptype rUL" {
-re "type = unsigned long &.*$gdb_prompt $" { pass "ptype rUL" }
-re "type = long unsigned int &.*$gdb_prompt $" { pass "ptype rUL" }
- -re ".*$gdb_prompt $" { fail "ptype rUL" }
- timeout { fail "(timeout) ptype rUL" }
}
+gdb_test "ptype rF" "type = float &"
-send_gdb "ptype rF\n"
-gdb_expect {
- -re "type = float &.*$gdb_prompt $" { pass "ptype rF" }
- -re ".*$gdb_prompt $" { fail "ptype rF" }
- timeout { fail "(timeout) ptype rF" }
-}
-
+gdb_test "ptype rD" "type = double &"
-send_gdb "ptype rD\n"
-gdb_expect {
- -re "type = double &.*$gdb_prompt $" { pass "ptype rD" }
- -re ".*$gdb_prompt $" { fail "ptype rD" }
- timeout { fail "(timeout) ptype rD" }
-}
+gdb_test "print rC" ".\[0-9\]* = \\(char &\\) @$hex: 65 \'A\'" \
+ "print value of rC"
+gdb_test "print rUC" \
+ ".\[0-9\]* = \\(unsigned char &\\) @$hex: 21 \'.025\'" \
+ pass "print value of rUC"
-send_gdb "print rC\n"
-gdb_expect {
- -re ".\[0-9\]* = \\(char &\\) @$hex: 65 \'A\'.*$gdb_prompt $" {
- pass "print value of rC"
- }
- -re ".*$gdb_prompt $" { fail "print value of rC" }
- timeout { fail "(timeout) print value of rC" }
- }
-
-
-send_gdb "print rUC\n"
-gdb_expect {
- -re ".\[0-9\]* = \\(unsigned char &\\) @$hex: 21 \'.025\'.*$gdb_prompt $" {
- pass "print value of rUC"
- }
- -re ".*$gdb_prompt $" { fail "print value of rUC" }
- timeout { fail "(timeout) print value of rUC" }
- }
-
-
-send_gdb "print rS\n"
-gdb_expect {
+gdb_test_multiple "print rS" "print value of rS" {
-re ".\[0-9\]* = \\(short &\\) @$hex: -14.*$gdb_prompt $" {
pass "print value of rS"
}
-re ".\[0-9\]* = \\(short int &\\) @$hex: -14.*$gdb_prompt $" {
pass "print value of rS"
}
- -re ".*$gdb_prompt $" { fail "print value of rS" }
- timeout { fail "(timeout) print value of rS" }
- }
-
+}
-send_gdb "print rUS\n"
-gdb_expect {
+gdb_test_multiple "print rUS" "print value of rUS" {
-re ".\[0-9\]* = \\(unsigned short &\\) @$hex: 7.*$gdb_prompt $" {
pass "print value of rUS"
}
-re ".\[0-9\]* = \\(short unsigned int &\\) @$hex: 7.*$gdb_prompt $" {
pass "print value of rUS"
}
- -re ".*$gdb_prompt $" { fail "print value of rUS" }
- timeout { fail "(timeout) print value of rUS" }
- }
-
+}
-send_gdb "print rI\n"
-gdb_expect {
- -re ".\[0-9\]* = \\(int &\\) @$hex: 102.*$gdb_prompt $" {
+gdb_test "print rI" ".\[0-9\]* = \\(int &\\) @$hex: 102" \
pass "print value of rI"
- }
- -re ".*$gdb_prompt $" { fail "print value of rI" }
- timeout { fail "(timeout) print value of rI" }
- }
-
-send_gdb "print rUI\n"
-gdb_expect {
- -re ".\[0-9\]* = \\(unsigned int &\\) @$hex: 1002.*$gdb_prompt $" {
+gdb_test "print rUI\n" \
+ ".\[0-9\]* = \\(unsigned int &\\) @$hex: 1002" \
pass "print value of UI"
- }
- -re ".*$gdb_prompt $" { fail "print value of rUI" }
- timeout { fail "(timeout) print value of rUI" }
- }
-
-send_gdb "print rL\n"
-gdb_expect {
+gdb_test_multiple "print rL" "print value of rL" {
-re ".\[0-9\]* = \\(long &\\) @$hex: -234.*$gdb_prompt $" {
pass "print value of rL"
}
-re ".\[0-9\]* = \\(long int &\\) @$hex: -234.*$gdb_prompt $" {
pass "print value of rL"
}
- -re ".*$gdb_prompt $" { fail "print value of rL" }
- timeout { fail "(timeout) print value of rL" }
- }
-
-
+}
-send_gdb "print rUL\n"
-gdb_expect {
+gdb_test_multiple "print rUL" "print value of rUL" {
-re ".\[0-9\]* = \\(unsigned long &\\) @$hex: 234.*$gdb_prompt $" {
pass "print value of rUL"
}
-re ".\[0-9\]* = \\(long unsigned int &\\) @$hex: 234.*$gdb_prompt $" {
pass "print value of rUL"
}
- -re ".*$gdb_prompt $" { fail "print value of rUL" }
- timeout { fail "(timeout) print value of rUL" }
- }
-
-
-send_gdb "print rF\n"
-gdb_expect {
- -re ".\[0-9\]* = \\(float &\\) @$hex: 1.2\[0-9\]*e\\+0?10.*$gdb_prompt $" {
- pass "print value of rF"
- }
- -re ".*$gdb_prompt $" { fail "print value of rF" }
- timeout { fail "(timeout) print value of rF" }
- }
-
-
-send_gdb "print rD\n"
-gdb_expect {
- -re ".\[0-9\]* = \\(double &\\) @$hex: -1.375e-123.*$gdb_prompt $" {
- pass "print value of rD"
- }
- -re ".*$gdb_prompt $" { fail "print value of rD" }
- timeout { fail "(timeout) print value of rD" }
- }
+}
+
+gdb_test "print rF" \
+ ".\[0-9\]* = \\(float &\\) @$hex: 1.2\[0-9\]*e\\+0?10.*" \
+ "print value of rF"
+
+gdb_test "print rD" \
+ ".\[0-9\]* = \\(double &\\) @$hex: -1.375e-123.*" \
+ "print value of rD"
global gdb_prompt
global ws
- send_gdb "ptype T5<int>\n"
- gdb_expect {
+ gdb_test_multiple "ptype T5<int>" "ptype T5<int>" {
-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" {
pass "ptype T5<int>"
}
-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}\}\r\n$gdb_prompt $" {
pass "ptype T5<int>"
}
- -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}${ws}$gdb_prompt $" { pass "ptype T5<int> -- new with unsigned int" }
- -re "type = class T5<int> \\{.*public:.*static int X;.*int x;.*int val;.*T5 \\(int\\);.*T5 \\(const class T5<int> &\\);.*void ~T5 \\(int\\);.*static void \\* new \\(unsigned long\\);.*static void delete \\(void ?\\*\\);.*int value \\((void|)\\);.*\\}\r\n$gdb_prompt $" { pass "ptype T5<int> -- new with unsigned long" }
+ -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}${ws}$gdb_prompt $" {
+ pass "ptype T5<int> -- new with unsigned int"
+ }
+ -re "type = class T5<int> \\{.*public:.*static int X;.*int x;.*int val;.*T5 \\(int\\);.*T5 \\(const class T5<int> &\\);.*void ~T5 \\(int\\);.*static void \\* new \\(unsigned long\\);.*static void delete \\(void ?\\*\\);.*int value \\((void|)\\);.*\\}\r\n$gdb_prompt $" {
+ pass "ptype T5<int> -- new with unsigned long"
+ }
-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;((${ws}T5<int> & operator=\\(T5<int> const ?&\\);)|(${ws}T5\\(int\\);)|(${ws}T5\\((T5<int> const|const T5<int>) ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_prompt $" {
pass "ptype T5<int> (obsolescent gcc or gdb)"
}
# This also triggers gdb/1113...
kfail "gdb/1111" "ptype T5<int>"
}
- -re ".*$gdb_prompt $" {
- fail "ptype T5<int>"
- }
- timeout {
- fail "ptype T5<int> (timeout)"
- }
}
- send_gdb "ptype t5i\n"
- gdb_expect {
- -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5\\(int\\);${ws}T5\\(T5<int> const ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { pass "ptype T5<int> -- with several fixes from 4.17" }
- -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { pass "ptype t5i<int> -- new with unsigned int" }
- -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned long\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { pass "ptype t5i<int> -- new with unsigned long" }
+ gdb_test_multiple "ptype t5i" "ptype t5i" {
+ -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5\\(int\\);${ws}T5\\(T5<int> const ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\\}\r\n$gdb_prompt $" {
+ pass "ptype T5<int> -- with several fixes from 4.17"
+ }
+ -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" {
+ pass "ptype t5i<int> -- new with unsigned int"
+ }
+ -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned long\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" {
+ pass "ptype t5i<int> -- new with unsigned long"
+ }
-re "type = class T5<int> \{.*public:.*static int X;.*int x;.*int val;.*.*T5 \\(int\\);.*.*void ~T5 \\(int\\).*.*.*int value \\((void|)\\);.*\}.*$gdb_prompt $" {
pass "ptype t5i"
}
# This also triggers gdb/1113...
kfail "gdb/1111" "ptype T5<int>"
}
- -re ".*$gdb_prompt $" {
- fail "ptype t5i"
- }
- timeout {
- fail "ptype t5i (timeout)"
- }
}
}
}
if {!$hp_aCC_compiler} {setup_xfail hppa*-*-*}
- send_gdb "print t5i.value()\n"
- gdb_expect {
- -re ".* = 2\[\r\n\]*$gdb_prompt $" { pass "print t5i.value()" }
+ gdb_test_multiple "print t5i.value()" "print t5i.value()" {
+ -re ".* = 2\[\r\n\]*$gdb_prompt $" {
+ pass "print t5i.value()"
+ }
-re "Cannot invoke functions on this machine.*$gdb_prompt $" {
fail "print t5i.value()"
}
setup_xfail hppa*-*-* CLLbs16899
xfail "print t5i.value"
}
- -re ".*$gdb_prompt $" { fail "print t5i.value()" }
- timeout { fail "print t5i.value() (timeout)" }
}
}
# weren't breakpointing past a point where the below expressions were
# initialized in the actual source. - djb
-send_gdb "b 770\n"
-gdb_expect {
- -re ".*$gdb_prompt $"
-}
-send_gdb "c\n"
-gdb_expect {
- -re ".*$gdb_prompt $"
-}
-send_gdb "print fint\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\{x = 0, t = 0\\}\r\n$gdb_prompt $" { pass "print fint" }
- -re "$gdb_prompt $" { fail "print fint" }
- timeout { fail "(timeout) print fint" }
-}
+gdb_test "b 770" \
+ "Breakpoint .* at .*, line 770."
-send_gdb "print fvpchar\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\{x = 0, t = 0x0\\}\r\n$gdb_prompt $" { pass "print fvpchar" }
- -re "$gdb_prompt $" { fail "print fvpchar" }
- timeout { fail "(timeout) print fvpchar" }
-}
+gdb_test "c" \
+ "Continuing.*Breakpoint .*" \
+ "continue to line 770"
+
+gdb_test "print fint" \
+ "\\$\[0-9\]* = \\{x = 0, t = 0\\}"
+
+gdb_test "print fvpchar" \
+ "\\$\[0-9\]* = \\{x = 0, t = 0x0\\}"
# Template Foo<T>
# NOTE: carlton/2003-02-26: However, because of a bug in the way GDB
# handles nested types, we don't get this right in the DWARF-2 case.
-send_gdb "ptype Foo\n"
-gdb_expect {
- -re "type = template <(class |)T> (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Foo<volatile char \\*>\r\n\[ \t\]*(class |)Foo<char>\r\n\[ \t\]*(class |)Foo<int>\r\n$gdb_prompt $" { pass "ptype Foo" }
- -re "type = template <(class |)T> (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\n$gdb_prompt $" { xfail "ptype Foo" }
- -re "type = class Foo<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int foo\\(int, int\\);\r\n\\}\r\n$gdb_prompt $"
- { # GCC 3.1, DWARF-2 output.
- kfail "gdb/57" "ptype Foo" }
- -re "No symbol \"Foo\" in current context.\r\n$gdb_prompt $"
- { # GCC 2.95.3, stabs+ output.
- pass "ptype Foo" }
- -re "$gdb_prompt $" { fail "ptype Foo" }
- timeout { fail "(timeout) ptype Foo" }
+gdb_test_multiple "ptype Foo" "ptype Foo" {
+ -re "type = template <(class |)T> (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Foo<volatile char \\*>\r\n\[ \t\]*(class |)Foo<char>\r\n\[ \t\]*(class |)Foo<int>\r\n$gdb_prompt $" {
+ pass "ptype Foo"
+ }
+ -re "type = template <(class |)T> (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\n$gdb_prompt $" {
+ xfail "ptype Foo"
+ }
+ -re "type = class Foo<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int foo\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" {
+ # GCC 3.1, DWARF-2 output.
+ kfail "gdb/57" "ptype Foo"
+ }
+ -re "No symbol \"Foo\" in current context.\r\n$gdb_prompt $" {
+ # GCC 2.95.3, stabs+ output.
+ pass "ptype Foo"
+ }
}
+
# -re "type = class Foo<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int foo(int, int);\r\n\\}\r\n$gdb_prompt $"
# ptype Foo<int>
-send_gdb "ptype fint\n"
-gdb_expect {
- -re "type = (class |)Foo<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int foo\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fint" }
- -re "type = (class |)Foo<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int foo\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype fint" }
- -re "$gdb_prompt $" { fail "ptype fint" }
- timeout { fail "(timeout) ptype fint" }
+gdb_test_multiple "ptype fint" "ptype fint" {
+ -re "type = (class |)Foo<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int foo\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype fint"
+ }
+ -re "type = (class |)Foo<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int foo\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype fint"
+ }
}
# ptype Foo<char>
-send_gdb "ptype fchar\n"
-gdb_expect {
- -re "type = (class |)Foo<char> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char foo\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fchar" }
- -re "type = (class |)Foo<char> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char foo\\(int, char\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype fchar" }
- -re "$gdb_prompt $" { fail "ptype fchar" }
- timeout { fail "(timeout) ptype fchar" }
+gdb_test_multiple "ptype fchar" "ptype fchar" {
+ -re "type = (class |)Foo<char> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char foo\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype fchar"
+ }
+ -re "type = (class |)Foo<char> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char foo\\(int, char\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype fchar"
+ }
}
# ptype Foo<volatile char *>
-send_gdb "ptype fvpchar\n"
-gdb_expect {
- -re "type = (class |)Foo<volatile char ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" }
- -re "type = (class |)Foo<volatile char ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" }
- -re "type = (class |)Foo<char volatile ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" {
- kfail "gdb/1512" "ptype fvpchar"
- }
- -re "$gdb_prompt $" { fail "ptype fvpchar" }
- timeout { fail "(timeout) ptype fvpchar" }
+gdb_test_multiple "ptype fvpchar" "ptype fvpchar" {
+ -re "type = (class |)Foo<volatile char ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype fvpchar"
+ }
+ -re "type = (class |)Foo<volatile char ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype fvpchar"
+ }
+ -re "type = (class |)Foo<char volatile ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" {
+ kfail "gdb/1512" "ptype fvpchar"
+ }
}
# print a function from Foo<volatile char *>
# This test is sensitive to whitespace matching, so we'll do it twice,
# varying the spacing, because of PR gdb/33.
-send_gdb "print Foo<volatile char *>::foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\{.*char \\*\\((class |)Foo<(volatile char|char volatile) ?\\*> \\*(| const), int, .*char \\*\\)\\} $hex <Foo<.*char.*\\*>::foo\\(int, .*char.*\\*\\)>\r\n$gdb_prompt $" { pass "print Foo<volatile char *>::foo" }
- -re "No symbol \"Foo<volatile char \\*>\" in current context.\r\n$gdb_prompt $"
- {
+gdb_test_multiple "print Foo<volatile char *>::foo" "print Foo<volatile char *>::foo" {
+ -re "\\$\[0-9\]* = \\{.*char \\*\\((class |)Foo<(volatile char|char volatile) ?\\*> \\*(| const), int, .*char \\*\\)\\} $hex <Foo<.*char.*\\*>::foo\\(int, .*char.*\\*\\)>\r\n$gdb_prompt $" {
+ pass "print Foo<volatile char *>::foo"
+ }
+ -re "No symbol \"Foo<volatile char \\*>\" in current context.\r\n$gdb_prompt $" {
# This used to be a kfail gdb/33 and then kfail gdb/931.
fail "print Foo<volatile char *>::foo"
}
- -re "$gdb_prompt $" { fail "print Foo<volatile char *>::foo" }
- timeout { fail "(timeout) print Foo<volatile char *>::foo" }
}
-send_gdb "print Foo<volatile char*>::foo\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\{.*char \\*\\((class |)Foo<(volatile char|char volatile) ?\\*> \\*(| const), int, .*char \\*\\)\\} $hex <Foo<.*char.*\\*>::foo\\(int, .*char.*\\*\\)>\r\n$gdb_prompt $" { pass "print Foo<volatile char*>::foo" }
- -re "No symbol \"Foo<volatile char\\*>\" in current context.\r\n$gdb_prompt $"
- {
+gdb_test_multiple "print Foo<volatile char*>::foo" "print Foo<volatile char*>::foo" {
+ -re "\\$\[0-9\]* = \\{.*char \\*\\((class |)Foo<(volatile char|char volatile) ?\\*> \\*(| const), int, .*char \\*\\)\\} $hex <Foo<.*char.*\\*>::foo\\(int, .*char.*\\*\\)>\r\n$gdb_prompt $" {
+ pass "print Foo<volatile char*>::foo"
+ }
+ -re "No symbol \"Foo<volatile char\\*>\" in current context.\r\n$gdb_prompt $" {
# This used to be a kfail gdb/33 and then kfail gdb/931.
fail "print Foo<volatile char*>::foo"
}
- -re "$gdb_prompt $" { fail "print Foo<volatile char*>::foo" }
- timeout { fail "(timeout) print Foo<volatile char*>::foo" }
}
# Template Bar<T, int>
# same as Foo for g++
-send_gdb "ptype Bar\n"
-gdb_expect {
- -re "type = template <(class |)T, (class |)sz> (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Bar<int,(\\(int\\)|)1>\r\n\[ \t\]*(class |)Bar<int,(\\(int\\)|)33>\r\n$gdb_prompt $" { pass "ptype Bar" }
- -re "type = <(class |)T, (class |)sz> (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\n$gdb_prompt $" { xfail "ptype Bar" }
- -re "ptype Bar\r\ntype = class Bar<int, ?33> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int bar\\(int, int\\);\r\n}\r\n$gdb_prompt $"
- { # GCC 3.1, DWARF-2 output.
- kfail "gdb/57" "ptype Bar" }
- -re "No symbol \"Bar\" in current context.\r\n$gdb_prompt $"
- { # GCC 2.95.3, stabs+ output.
- pass "ptype Bar" }
- -re "$gdb_prompt $" { fail "ptype Bar" }
- timeout { fail "(timeout) ptype Bar" }
+gdb_test_multiple "ptype Bar" "ptype Bar" {
+ -re "type = template <(class |)T, (class |)sz> (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Bar<int,(\\(int\\)|)1>\r\n\[ \t\]*(class |)Bar<int,(\\(int\\)|)33>\r\n$gdb_prompt $" {
+ pass "ptype Bar"
+ }
+ -re "type = <(class |)T, (class |)sz> (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\n$gdb_prompt $" {
+ xfail "ptype Bar"
+ }
+ -re "ptype Bar\r\ntype = class Bar<int, ?33> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int bar\\(int, int\\);\r\n}\r\n$gdb_prompt $" {
+ # GCC 3.1, DWARF-2 output.
+ kfail "gdb/57" "ptype Bar"
+ }
+ -re "No symbol \"Bar\" in current context.\r\n$gdb_prompt $" {
+ # GCC 2.95.3, stabs+ output.
+ pass "ptype Bar"
+ }
}
# ptype Bar<int,33>
-send_gdb "ptype bint\n"
-gdb_expect {
- -re "type = (class |)Bar<int, ?(\\(int\\)|)33> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint" }
- -re "type = (class |)Bar<int,(\\(int\\)|)33> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int bar\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint" }
- -re "$gdb_prompt $" { fail "ptype bint" }
- timeout { fail "(timeout) ptype bint" }
+gdb_test_multiple "ptype bint" "ptype bint" {
+ -re "type = (class |)Bar<int, ?(\\(int\\)|)33> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype bint"
+ }
+ -re "type = (class |)Bar<int,(\\(int\\)|)33> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int bar\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype bint"
+ }
}
# ptype Bar<int, (4>3)>
-send_gdb "ptype bint2\n"
-gdb_expect {
- -re "type = (class |)Bar<int, ?(\\(int\\)|)1> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint2" }
- -re "type = (class |)Bar<int,(\\(int\\)|)1> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int bar\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint2" }
- -re "$gdb_prompt $" { fail "ptype bint2" }
- timeout { fail "(timeout) ptype bint2" }
+gdb_test_multiple "ptype bint2" "ptype bint2" {
+ -re "type = (class |)Bar<int, ?(\\(int\\)|)1> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype bint2"
+ }
+ -re "type = (class |)Bar<int,(\\(int\\)|)1> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int bar\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype bint2"
+ }
}
# Template Baz<T, char>
# Same as Foo, for g++
-send_gdb "ptype Baz\n"
-gdb_expect {
- -re "type = template <(class |)T, ?(class |)sz> (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Baz<char,(\\(char\\)|)97>\r\n\[ \t\]*(class |)Baz<int,(\\(char\\)|)115>\r\n$gdb_prompt $" { pass "ptype Baz" }
- -re "type = <(class |)T, ?(class |)sz> (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\n$gdb_prompt $" { xfail "ptype Baz" }
- -re "type = class Baz<int, ?'s'> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int baz\\(int, int\\);\r\n}\r\n$gdb_prompt $"
- { # GCC 3.1, DWARF-2 output.
- kfail "gdb/57" "ptype Baz" }
- -re "type = class Baz<int, ?(\\(char\\))?115> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int baz\\(int, int\\);\r\n}\r\n$gdb_prompt $"
- { # GCC 3.x, DWARF-2 output, running into gdb/57 and gdb/1512.
- kfail "gdb/57" "ptype Baz" }
- -re "No symbol \"Baz\" in current context.\r\n$gdb_prompt $"
- { # GCC 2.95.3, stabs+ output.
- pass "ptype Baz" }
- -re "$gdb_prompt $" { fail "ptype Baz" }
- timeout { fail "(timeout) ptype Baz" }
+gdb_test_multiple "ptype Baz" "ptype Baz" {
+ -re "type = template <(class |)T, ?(class |)sz> (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Baz<char,(\\(char\\)|)97>\r\n\[ \t\]*(class |)Baz<int,(\\(char\\)|)115>\r\n$gdb_prompt $" {
+ pass "ptype Baz"
+ }
+ -re "type = <(class |)T, ?(class |)sz> (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\n$gdb_prompt $" {
+ xfail "ptype Baz"
+ }
+ -re "type = class Baz<int, ?'s'> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int baz\\(int, int\\);\r\n}\r\n$gdb_prompt $" {
+ # GCC 3.1, DWARF-2 output.
+ kfail "gdb/57" "ptype Baz"
+ }
+ -re "type = class Baz<int, ?(\\(char\\))?115> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int baz\\(int, int\\);\r\n}\r\n$gdb_prompt $" {
+ # GCC 3.x, DWARF-2 output, running into gdb/57 and gdb/1512.
+ kfail "gdb/57" "ptype Baz"
+ }
+ -re "No symbol \"Baz\" in current context.\r\n$gdb_prompt $" {
+ # GCC 2.95.3, stabs+ output.
+ pass "ptype Baz"
+ }
}
# ptype Baz<int, 's'>
-send_gdb "ptype bazint\n"
-gdb_expect {
- -re "type = (class |)Baz<int, ?(\\(char\\)|)(115|\\'s\\')> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int baz\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint" }
- -re "type = (class |)Baz<int,(\\(char\\)|)(115|\\'s\\')> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int baz\\(int, int\\).*;\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint" }
- -re "$gdb_prompt $" { fail "ptype bazint" }
- timeout { fail "(timeout) ptype bazint" }
+gdb_test_multiple "ptype bazint" "ptype bazint" {
+ -re "type = (class |)Baz<int, ?(\\(char\\)|)(115|\\'s\\')> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int baz\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype bazint"
+ }
+ -re "type = (class |)Baz<int,(\\(char\\)|)(115|\\'s\\')> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int baz\\(int, int\\).*;\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype bazint"
+ }
}
# ptype Baz<char, 'a'>
-send_gdb "ptype bazint2\n"
-gdb_expect {
- -re "type = (class |)Baz<char, ?(\\(char\\)|)(97|\\'a\\')> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char baz\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint2" }
- -re "type = (class |)Baz<char,(\\(char\\)|)(97|\\'a\\')> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char baz\\(int, char\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint2" }
- -re "$gdb_prompt $" { fail "ptype bazint2" }
- timeout { fail "(timeout) ptype bazint2" }
+gdb_test_multiple "ptype bazint2" "ptype bazint2" {
+ -re "type = (class |)Baz<char, ?(\\(char\\)|)(97|\\'a\\')> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char baz\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype bazint2"
+ }
+ -re "type = (class |)Baz<char,(\\(char\\)|)(97|\\'a\\')> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char baz\\(int, char\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype bazint2"
+ }
}
# Template Qux<T, int (*f)(int) >
# Same as Foo for g++
-send_gdb "ptype Qux\n"
-gdb_expect {
- -re "type = template <(class |)T, ?(class |)sz> (class |)Qux \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Qux<int,&string>\r\n\[ \t\]*(class |)Qux<char,&string>\r\n$gdb_prompt $" { pass "ptype Qux" }
- -re ".*type = template <(class |)T.*, ?(class |)sz> (class |)Qux \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}.*$gdb_prompt $" { pass "ptype Qux" }
- -re "type = class Qux<char, ?&string> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char qux\\(int, char\\);\r\n}\r\n$gdb_prompt $"
- { # GCC 3.1, DWARF-2 output.
- kfail "gdb/57" "ptype Qux" }
- -re "type = class Qux<char, ?&\\(string\\)> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char qux\\(int, char\\);\r\n}\r\n$gdb_prompt $"
- { # GCC 3.x, DWARF-2 output; gdb/57 + gdb/1512.
- kfail "gdb/57" "ptype Qux" }
- -re "No symbol \"Qux\" in current context.\r\n$gdb_prompt $"
- { # GCC 2.95.3, stabs+ output.
- pass "ptype Qux" }
- -re "$gdb_prompt $" { fail "ptype Qux" }
- timeout { fail "(timeout) ptype Qux" }
+gdb_test_multiple "ptype Qux" "ptype Qux" {
+ -re "type = template <(class |)T, ?(class |)sz> (class |)Qux \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Qux<int,&string>\r\n\[ \t\]*(class |)Qux<char,&string>\r\n$gdb_prompt $" {
+ pass "ptype Qux"
+ }
+ -re ".*type = template <(class |)T.*, ?(class |)sz> (class |)Qux \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}.*$gdb_prompt $" {
+ pass "ptype Qux"
+ }
+ -re "type = class Qux<char, ?&string> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char qux\\(int, char\\);\r\n}\r\n$gdb_prompt $" {
+ # GCC 3.1, DWARF-2 output.
+ kfail "gdb/57" "ptype Qux"
+ }
+ -re "type = class Qux<char, ?&\\(string\\)> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char qux\\(int, char\\);\r\n}\r\n$gdb_prompt $" {
+ # GCC 3.x, DWARF-2 output; gdb/57 + gdb/1512.
+ kfail "gdb/57" "ptype Qux"
+ }
+ -re "No symbol \"Qux\" in current context.\r\n$gdb_prompt $" {
+ # GCC 2.95.3, stabs+ output.
+ pass "ptype Qux"
+ }
}
# pt Qux<int,&string>
-send_gdb "ptype quxint\n"
-gdb_expect {
- -re "type = class Qux<int, ?& ?string> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int qux\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype quxint" }
- -re "type = class Qux<int, ?& ?string> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int qux\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype quxint" }
- -re "type = class Qux<int, ?\\(char ?\\*\\)\\(& ?\\(?string\\)?\\)> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int qux\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype quxint" }
- -re "type = class Qux<int, ?& ?\\(string\\)> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int qux\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" {
- kfail "gdb/1512" "ptype quxint"
- }
- -re "$gdb_prompt $" { fail "ptype quxint" }
- timeout { fail "(timeout) ptype quxint" }
+gdb_test_multiple "ptype quxint" "ptype quxint" {
+ -re "type = class Qux<int, ?& ?string> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int qux\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype quxint"
+ }
+ -re "type = class Qux<int, ?& ?string> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int qux\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype quxint"
+ }
+ -re "type = class Qux<int, ?\\(char ?\\*\\)\\(& ?\\(?string\\)?\\)> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int qux\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype quxint"
+ }
+ -re "type = class Qux<int, ?& ?\\(string\\)> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int qux\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ kfail "gdb/1512" "ptype quxint"
+ }
}
-# pt Qux<char,0>
-
-# commented out this as quxint2 declaration was commented out in
-# templates.exp -- ovidiu
-# send_gdb "ptype quxint2\n"
-# gdb_expect {
-# -re "type = class Qux<char,&string> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char qux\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype quxint2" }
-# -re "$gdb_prompt $" { fail "ptype quxint2" }
-# timeout { fail "(timeout) ptype quxint2" }
-# }
# Template Spec<T1, T2>
# Same as Foo for g++
-send_gdb "ptype Spec\n"
-gdb_expect {
- -re "type = template <(class |)T1, (class |)T2> (class |)Spec \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Spec<int,int \\*>\r\n\[ \t\]*(class |)Spec<int,char>\r\n$gdb_prompt $" { pass "ptype Spec" }
- -re "type = <(class |)T1, (class |)T2> (class |)Spec \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\\}\r\n$gdb_prompt $" { xfail "ptype Spec" }
- -re "type = class Spec<int, ?char> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*int spec\\(char\\);\r\n}\r\n$gdb_prompt $"
- { # GCC 3.1, DWARF-2 output.
- kfail "gdb/57" "ptype Spec" }
- -re "No symbol \"Spec\" in current context.\r\n$gdb_prompt $"
- { # GCC 2.95.3, stabs+ output.
- pass "ptype Spec" }
- -re "$gdb_prompt $" { fail "ptype Spec" }
- timeout { fail "(timeout) ptype Spec" }
+gdb_test_multiple "ptype Spec" "ptype Spec" {
+ -re "type = template <(class |)T1, (class |)T2> (class |)Spec \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Spec<int,int \\*>\r\n\[ \t\]*(class |)Spec<int,char>\r\n$gdb_prompt $" {
+ pass "ptype Spec"
+ }
+ -re "type = <(class |)T1, (class |)T2> (class |)Spec \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\\}\r\n$gdb_prompt $" {
+ xfail "ptype Spec"
+ }
+ -re "type = class Spec<int, ?char> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*int spec\\(char\\);\r\n}\r\n$gdb_prompt $" {
+ # GCC 3.1, DWARF-2 output.
+ kfail "gdb/57" "ptype Spec"
+ }
+ -re "No symbol \"Spec\" in current context.\r\n$gdb_prompt $" {
+ # GCC 2.95.3, stabs+ output.
+ pass "ptype Spec"
+ }
}
# pt Spec<char,0>
-send_gdb "ptype siip\n"
-gdb_expect {
- -re "type = class Spec<int, ?int ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*.*int spec\\(int ?\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype siip" }
- -re "type = class Spec<int,int ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*int spec\\(int ?\\*\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype siip" }
- -re "$gdb_prompt $" { fail "ptype siip" }
- timeout { fail "(timeout) ptype siip" }
+gdb_test_multiple "ptype siip" "ptype siip" {
+ -re "type = class Spec<int, ?int ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*.*int spec\\(int ?\\*\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype siip"
+ }
+ -re "type = class Spec<int,int ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*int spec\\(int ?\\*\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype siip"
+ }
}
# pt Garply<int>
-send_gdb "ptype Garply<int>\n"
-gdb_expect {
- -re "type = class Garply<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int garply\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply<int>" }
- -re "type = class Garply<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int garply\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply<int>" }
- -re "$gdb_prompt $" { fail "ptype Garply<int>" }
- timeout { fail "(timeout) ptype Garply<int>" }
+gdb_test_multiple "ptype Garply<int>" "ptype Garply<int>" {
+ -re "type = class Garply<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int garply\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype Garply<int>"
+ }
+ -re "type = class Garply<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int garply\\(int, int\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype Garply<int>"
+ }
}
# ptype of nested template name
-send_gdb "ptype Garply<Garply<char> >\n"
-gdb_expect {
- -re "type = (class |)Garply<Garply<char> > \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*(class |)Garply<char> t;\r\n\r\n\[ \t\]*.*(class |)Garply<char> garply\\(int, (class |)Garply<char>\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply<Garply<char> >" }
- -re "type = (class |)Garply<Garply<char> > \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*(class |)Garply<char> t;\r\n\r\n\[ \t\]*(class |)Garply<char> garply\\(int, (class |)Garply<char>\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply<Garply<char> >" }
- -re "$gdb_prompt $" { fail "ptype Garply<Garply<char> >" }
- timeout { fail "(timeout) ptype Garply<Garply<char> >" }
+gdb_test_multiple "ptype Garply<Garply<char> >" "ptype Garply<Garply<char> >" {
+ -re "type = (class |)Garply<Garply<char> > \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*(class |)Garply<char> t;\r\n\r\n\[ \t\]*.*(class |)Garply<char> garply\\(int, (class |)Garply<char>\\);\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype Garply<Garply<char> >"
+ }
+ -re "type = (class |)Garply<Garply<char> > \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*(class |)Garply<char> t;\r\n\r\n\[ \t\]*(class |)Garply<char> garply\\(int, (class |)Garply<char>\\);.*\r\n\\}\r\n$gdb_prompt $" {
+ pass "ptype Garply<Garply<char> >"
+ }
}
# print out a function from a nested template name
-send_gdb "print Garply<Garply<char> >::garply\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\{(class |)Garply<char> \\((class |)Garply<Garply<char> > \\*(| const), int, (class |)Garply<char>\\)\\} $hex <Garply<Garply<char>\[ \t\]*>::garply\\(int, (class |)Garply<char>\\)>\r\n$gdb_prompt $" { pass "print Garply<Garply<char> >::garply" }
- -re ".*$gdb_prompt $" { fail "print Garply<Garply<char> >::garply" }
- timeout { fail "print Garply<Garply<char> >::garply (timeout)" }
-}
+gdb_test "print Garply<Garply<char> >::garply" \
+ "\\$\[0-9\]* = \\{(class |)Garply<char> \\((class |)Garply<Garply<char> > \\*(| const), int, (class |)Garply<char>\\)\\} $hex <Garply<Garply<char>\[ \t\]*>::garply\\(int, (class |)Garply<char>\\)>" \
+ "print Garply<Garply<char> >::garply"
# djb - 06-03-2000
# Now should work fine
continue
}
-send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $"
- send_gdb "cont\n"
- gdb_expect {
- -re "Break.* marker1(\\(\\)|) \\(\\) at .*:$decimal.*$gdb_prompt $" {
- send_gdb "up\n"
- gdb_expect {
- -re ".*$gdb_prompt $" { pass "up from marker1" }
- timeout { fail "up from marker1" }
- }
- }
- -re "$gdb_prompt $" { fail "continue to marker1" }
- timeout { fail "(timeout) continue to marker1" }
- }
+gdb_test "break marker1" \
+ "Breakpoint .*${srcfile}.*"
+
+gdb_test "cont" \
+ "Break.* marker1(\\(\\)|) \\(\\) at .*:$decimal.*" \
+ "continue to marker1"
+gdb_test "up" " in main .*" "up from marker1"
gdb_test "print one + two" "\\\$\[0-9\]* = {x = 6, y = 8}"