* gdb.opt/inline-cmds.exp: Adjust checks with "finish" command to
authorEdjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
Mon, 2 May 2011 17:07:10 +0000 (17:07 +0000)
committerEdjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
Mon, 2 May 2011 17:07:10 +0000 (17:07 +0000)
accept to show the caller line again as well as the line after.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.opt/inline-cmds.exp

index 470f0d8dc88de8a520e40747565c3fa84c560442..e531f69c18d09ff6bd3e4c34c7a940ac445ff159 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-02  Edjunior Machado  <emachado@linux.vnet.ibm.com>
+
+       * gdb.opt/inline-cmds.exp: Adjust checks with "finish" command to
+       accept to show the caller line again as well as the line after.
+
 2011-04-29  Phil Muldoon  <pmuldoon@redhat.com>
 
        PR mi/12531
index cde86f51c05106ce0d511e382cd876ecdae4db73..cb5f96f44f88aac7ca350559457f3d2c0cf2cb81 100644 (file)
@@ -263,7 +263,20 @@ gdb_continue_to_breakpoint "finish into func1"
 
 gdb_test "next" ".*marker \\\(\\\);" "next to finish marker"
 gdb_test "step" ".*set breakpoint 2 here.*" "step into finish marker"
-gdb_test "finish" "func1 \\\(\\\);" "finish from marker to func1"
+
+# Some architectures will have one or more instructions after
+# the call instruction which still are part of the call sequence,
+# so it should be expected to return to the caller line after issue 
+# a 'finish' command.
+gdb_test_multiple "finish" "finish from marker" {
+    -re "func1 \\\(\\\);.*\r\n$gdb_prompt $" {
+       pass "finish from marker to func1"
+    }
+    -re "marker \\\(\\\);.*\r\n$gdb_prompt $" {
+       pass "finish from marker"
+       gdb_test "step" "func1 \\\(\\\);.*" "step after marker to reach func1"
+    }
+}
 
 gdb_test "step" "bar \\\(\\\);" "step into func1 for finish"
 gdb_test "finish" "func3 \\\(\\\);" "finish from func1 to func3"
@@ -273,7 +286,15 @@ set line6 [gdb_get_line_number "set breakpoint 6 here"]
 gdb_breakpoint $line6
 gdb_continue_to_breakpoint "before the outer_inline call"
 gdb_test "step" "marker \\\(\\\) at .*" "reach 1 the outer_inline call"
-gdb_test "finish" "main \\\(\\\) at .*outer_inline2 \\\(\\\);" "reach outer_inline2"
+gdb_test_multiple "finish" "finish from marker" {
+    -re "main \\\(\\\) at .*outer_inline2 \\\(\\\);.*\r\n$gdb_prompt $" {
+       pass "reach outer_inline2"
+    }
+    -re "main \\\(\\\) at .*marker \\\(\\\);.*\r\n$gdb_prompt $" {
+       pass "finish from marker"
+       gdb_test "step" "outer_inline2 \\\(\\\);.*" "step after marker to reach outer_inline2"
+    }
+}
 gdb_test "bt" "#0  main.*" "backtrace at main of outer_inline"
 gdb_test "step" "outer_inline2 \\\(\\\) at .*" "enter outer_inline2"
 gdb_test "bt" "#0  outer_inline2.*#1  main.*" "backtrace at outer_inline2"