mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-28 04:25:10 +08:00
testsuite: i386 regression for funcargs.exp
3ca22649a6
is the first bad commit commit3ca22649a6
Author: Simon Marchi <simon.marchi@polymtl.ca> Date: Mon Dec 21 12:51:54 2015 -0500 Remove HP-UX references fom testsuite @@ -1013,13 +1013,6 @@ proc localvars_in_indirect_call { } { # gdb_test_multiple "finish" "finish from indirectly called function" { - -re "\\(\\*pointer_to_call0a\\) \\(c, s, i, l\\);.*First.*$gdb_prompt $" { - #On hppa2.0w-hp-hpux11.00, gdb finishes at one line earlier than - #hppa1.1-hp-hpux11.00. Therefore, an extra "step" is necessary - #to continue the test. - send_gdb "step\n" - exp_continue - } -re ".*\\(\\*pointer_to_call0a\\) \\(c, s, i, l\\);.*Second.*$gdb_prompt $" { pass "finish from indirectly called function" } -> finish^M Run till exit from #0 call0a (c=97 'a', s=1, i=2, l=3) at ./gdb.base/funcargs.c:82^M 0x0804a189 in main () at ./gdb.base/funcargs.c:583^M 583 (*pointer_to_call0a) (c, s, i, l); /* First step into call0a. */^M -(gdb) step^M -584 (*pointer_to_call0a) (c, s, i, l); /* Second step into call0a. */^M -(gdb) PASS: gdb.base/funcargs.exp: finish from indirectly called function +(gdb) FAIL: gdb.base/funcargs.exp: finish from indirectly called function step^M -call0a (c=97 'a', s=1, i=2, l=3) at ./gdb.base/funcargs.c:82^M -82 c = 'a';^M -(gdb) PASS: gdb.base/funcargs.exp: stepping into indirectly called function +584 (*pointer_to_call0a) (c, s, i, l); /* Second step into call0a. */^M +(gdb) FAIL: gdb.base/funcargs.exp: stepping into indirectly called function At least on x86_64 with testsuite in -m32 (expecting native i386 would be the same). Pedro Alves: The difference is that with newer GCC there's an extra instruction after the call which is still assigned to line 583: $ diff -up /tmp/4.8.3 /tmp/6.0.0 -U 1000 --- /tmp/4.8.3 2016-01-11 12:37:39.611089156 +0000 +++ /tmp/6.0.0 2016-01-11 13:21:00.021127976 +0000 @@ -1,27 +1,30 @@ 583 (*pointer_to_call0a) (c, s, i, l); /* First step into call0a. */ mov 0x804d060,%ebx mov 0x804d050,%ecx movzwl 0x804d040,%eax movswl %ax,%edx movzbl 0x804d030,%eax movsbl %al,%eax - mov %ebx,0xc(%esp) - mov %ecx,0x8(%esp) - mov %edx,0x4(%esp) - mov %eax,(%esp) - mov 0x7c(%esp),%eax + push %ebx + push %ecx + push %edx + push %eax + mov -0x1c(%ebp),%eax call *%eax + add $0x10,%esp 584 (*pointer_to_call0a) (c, s, i, l); /* Second step into call0a. */ mov 0x804d060,%ebx mov 0x804d050,%ecx movzwl 0x804d040,%eax movswl %ax,%edx movzbl 0x804d030,%eax movsbl %al,%eax - mov %ebx,0xc(%esp) - mov %ecx,0x8(%esp) - mov %edx,0x4(%esp) - mov %eax,(%esp) - mov 0x7c(%esp),%eax + push %ebx + push %ecx + push %edx + push %eax + mov -0x1c(%ebp),%eax call *%eax + add $0x10,%esp + I don't know why -m32 changed to push/add instead of mov while 64-bit hasn't. This is most likely needed on non-x86 ports as well. gdb/testsuite/ChangeLog 2016-01-11 Jan Kratochvil <jan.kratochvil@redhat.com> Pedro Alves <palves@redhat.com> * gdb.base/funcargs.exp (finish from indirectly called function): Reintroduce the case for 'First'.
This commit is contained in:
parent
9a70630256
commit
01d8c27e4f
@ -1,3 +1,9 @@
|
|||||||
|
2016-01-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* gdb.base/funcargs.exp (finish from indirectly called function):
|
||||||
|
Reintroduce the case for 'First'.
|
||||||
|
|
||||||
2016-01-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
2016-01-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
Pedro Alves <palves@redhat.com>
|
Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
@ -1013,6 +1013,13 @@ proc localvars_in_indirect_call { } {
|
|||||||
#
|
#
|
||||||
|
|
||||||
gdb_test_multiple "finish" "finish from indirectly called function" {
|
gdb_test_multiple "finish" "finish from indirectly called function" {
|
||||||
|
-re "\\(\\*pointer_to_call0a\\) \\(c, s, i, l\\);.*First.*$gdb_prompt $" {
|
||||||
|
# If the branch instruction is not the last instruction in the
|
||||||
|
# function call line, we'll stop at that line, and need an extra
|
||||||
|
# "step" to continue the test.
|
||||||
|
send_gdb "step\n"
|
||||||
|
exp_continue
|
||||||
|
}
|
||||||
-re ".*\\(\\*pointer_to_call0a\\) \\(c, s, i, l\\);.*Second.*$gdb_prompt $" {
|
-re ".*\\(\\*pointer_to_call0a\\) \\(c, s, i, l\\);.*Second.*$gdb_prompt $" {
|
||||||
pass "finish from indirectly called function"
|
pass "finish from indirectly called function"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user