+2011-06-28 Yao Qi <yao@codesourcery.com>
+
+ * gdb.cp/exception.cc: Don't include iostream.
+ (bar): Remove print statement.
+ (catcher): New.
+ (main): Remove print statements. Call function catcher.
+ * gdb.cp/exception.exp : Don't match inferior's output in regexp.
+ Set breakpoint on catcher, and check the value of parameter.
+
2011-06-23 Yao Qi <yao@codesourcery.com>
* gdb.cp/mb-inline.exp: Parse the output of `info break' to check breakpoint
// Test file for exception handling support.
-#include <iostream>
using namespace std;
int foo (int i)
int bar (int k, unsigned long eharg, int flag)
{
- cout << "k is " << k << " eharg is " << eharg << " flag is " << flag << endl;
return 1;
}
+int catcher (int x)
+{
+ return x;
+}
+
int main()
{
int j;
j = foo (20);
}
catch (int x) {
- cout << "Got an except " << x << endl;
+ catcher (x);
}
try {
j = foo (20);
}
catch (int x) {
- cout << "Got an except " << x << endl;
+ catcher (x);
throw;
}
}
catch (int y) {
- cout << "Got an except (rethrown) " << y << endl;
+ catcher (y);
}
// Not caught
}
}
+gdb_test "break catcher" "Breakpoint \[0-9\]+ at.*"
+
# Get the first exception thrown
set name "continue to first throw"
}
}
+# Continue to breakpoint on catcher.
+gdb_test "continue" ".*catcher \\(x=13\\).*" "continue to catcher for the first time"
+
# Continue to second throw.
set name "continue to second throw"
gdb_test_multiple "continue" $name {
- -re "Continuing.${ws}Got an except 13${ws}Catchpoint \[0-9\]+ \\(exception thrown\\), throw location.*${srcfile}:30, catch location .*${srcfile}:58\r\n$gdb_prompt $" {
+ -re "Continuing.${ws}Catchpoint \[0-9\]+ \\(exception thrown\\), throw location.*${srcfile}:30, catch location .*${srcfile}:58\r\n$gdb_prompt $" {
pass $name
}
- -re "Continuing.${ws}Got an except 13${ws}Catchpoint \[0-9\]+ \\(exception thrown\\).*\r\n$gdb_prompt $" {
+ -re "Continuing.${ws}Catchpoint \[0-9\]+ \\(exception thrown\\).*\r\n$gdb_prompt $" {
pass $name
}
}
}
}
+# Continue to breakpoint on catcher.
+gdb_test "continue" ".*catcher \\(x=13\\).*" "continue to catcher for the second time"
+
# That is all for now.
#
# The original code had: