Re: [PATCH] testsuite: inline-cmds.exp: adjust checks with 'finish' command

Jan Kratochvil
2011-04-30T14:54:41Z

On Wed, 27 Apr 2011 08:42:55 +0200, Edjunior Barbosa Machado wrote:
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed

I could not apply the patch to test it as it is corrupted, both if taken as
raw and if taken as flowed-decoded (at least according to the Mutt decoding).

I am fine with "Content-Disposition: inline" text/plain attachment otherwise
(but not everyone is fine with it here).

> --- 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.

It is more convenient to provide ChangeLog entry as text - not as diff - as it
is out of sync now.

> 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 \\\(\\\);.*" {

Missing prompt (it is assumed by gdb_test but not by gdb_test_multiple):
-re "func1 \\\(\\\);.*\r\n$gdb_prompt $" {

> + pass "finish from marker to func1"
> + }
> + -re "marker \\\(\\\);.*" {

Missing prompt.

> + pass "finish from marker"
> + gdb_test "step" "func1 \\\(\\\);.*" "step after marker to reach func1"

Here should be <tab> used for the indentation but that may have been corrupted
by your MUA.

> + }
> +}
> 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 \\\(\\\);.*" {

The same prompt issue as above.

> + pass "reach outer_inline2"
> + }
> + -re "main \\\(\\\) at .*marker \\\(\\\);.*" {

The same prompt issue as above.

> + pass "finish from marker"
> + gdb_test "step" "outer_inline2 \\\(\\\);.*" "step after marker to reach outer_inline2"

{"outer_inline2 \(\);.*} would be the same but sure your choice.

> + }
> +}

Otherwise it would be best if "finish" always stays on the caller line, even
if no instruction is present there. But that is sure outside of the scope of
this testcase fix.

Thanks,
Jan