Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH] testsuite: inline-cmds.exp: adjust checks with 'finish' command
@ 2011-04-27  6:43 Edjunior Barbosa Machado
  2011-04-30 14:54 ` Jan Kratochvil
  0 siblings, 1 reply; 5+ messages in thread
From: Edjunior Barbosa Machado @ 2011-04-27  6:43 UTC (permalink / raw)
  To: gdb-patches

Hi,

as previously discussed in the mailing list (http://sourceware.org/ml/gdb/2010-11/msg00032.html), the behavior of 'finish' command may be slightly different on some architectures (as ppc64, for instance) where there will be one or more instructions after a call instruction that are still part of the subroutine call block. In these cases, after issue 'finish' gdb will show the caller line again instead of the next line.

Please consider the following fix for checks with 'finish' in gdb.opt/inline-cmds.exp. Tested on x86, ppc32 and ppc64.  Ok to apply?

Thanks,
-- 
Edjunior

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 0485d21..c576005 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-04-27  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-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
  
  	* gdb.base/gdbindex-stabs-dwarf.c: New file.
diff --git a/gdb/testsuite/gdb.opt/inline-cmds.exp b/gdb/testsuite/gdb.opt/inline-cmds.exp
index cde86f5..cbf3160 100644
--- a/gdb/testsuite/gdb.opt/inline-cmds.exp
+++ b/gdb/testsuite/gdb.opt/inline-cmds.exp
@@ -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 \\\(\\\);.*" {
+        pass "finish from marker to func1"
+    }
+    -re "marker \\\(\\\);.*" {
+        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 \\\(\\\);.*" {
+        pass "reach outer_inline2"
+    }
+    -re "main \\\(\\\) at .*marker \\\(\\\);.*" {
+        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"


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-05-02 17:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-04-27  6:43 [PATCH] testsuite: inline-cmds.exp: adjust checks with 'finish' command Edjunior Barbosa Machado
2011-04-30 14:54 ` Jan Kratochvil
2011-05-02 14:36   ` Edjunior Barbosa Machado
2011-05-02 15:16     ` Jan Kratochvil
2011-05-02 17:11       ` Edjunior Barbosa Machado

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox