[testsuite] Fix gdb.gdb/selftest.exp for C++-O2-g-built GDB
Commit Message
Hi,
tested on Fedora 24 x86_64 after:
./configure; make
That is: CFLAGS='-g -O2' CXXFLAGS='-g -O2'
OK for check-in?
Jan
gdb/testsuite/ChangeLog
2016-07-16 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.gdb/selftest.exp (do_steps_and_nexts): Add "next over TRY" and
"step into captured_main (args)".
(test_with_self): Add "captured_main (args);" case.
Comments
On Sat, Jul 16, 2016 at 2:14 PM, Jan Kratochvil
<jan.kratochvil@redhat.com> wrote:
> Hi,
>
> tested on Fedora 24 x86_64 after:
> ./configure; make
> That is: CFLAGS='-g -O2' CXXFLAGS='-g -O2'
>
> OK for check-in?
>
I think my patch https://sourceware.org/ml/gdb-patches/2016-07/msg00157.html
can fix the fail too, but it is not checked in yet.
On Mon, 18 Jul 2016 10:05:58 +0200, Yao Qi wrote:
> I think my patch https://sourceware.org/ml/gdb-patches/2016-07/msg00157.html
> can fix the fail too, but it is not checked in yet.
It does not for me:
FAIL: gdb.gdb/selftest.exp: run until breakpoint at captured_main
WARNING: Couldn't test self
->
FAIL: gdb.gdb/selftest.exp: unknown source line
FAIL: gdb.gdb/selftest.exp: step into xmalloc call
Jan
On Mon, Jul 18, 2016 at 9:18 AM, Jan Kratochvil
<jan.kratochvil@redhat.com> wrote:
> On Mon, 18 Jul 2016 10:05:58 +0200, Yao Qi wrote:
>> I think my patch https://sourceware.org/ml/gdb-patches/2016-07/msg00157.html
>> can fix the fail too, but it is not checked in yet.
>
> It does not for me:
>
> FAIL: gdb.gdb/selftest.exp: run until breakpoint at captured_main
> WARNING: Couldn't test self
> ->
> FAIL: gdb.gdb/selftest.exp: unknown source line
> FAIL: gdb.gdb/selftest.exp: step into xmalloc call
>
OK, I think we still need to convert gdb.gdb/selftest.exp using proc
do_self_tests to simplify the code, and then, improve procs in
lib/selftest-support.exp to handle the fails when GDB is compiled with
optimization. What do you think? If you agree on this, I can commit
my patch above, and tweak lib/selftest-support.exp to fix your fails.
On Mon, 18 Jul 2016 11:45:36 +0200, Yao Qi wrote:
> OK, I think we still need to convert gdb.gdb/selftest.exp using proc
> do_self_tests to simplify the code, and then, improve procs in
> lib/selftest-support.exp to handle the fails when GDB is compiled with
> optimization. What do you think? If you agree on this, I can commit
> my patch above, and tweak lib/selftest-support.exp to fix your fails.
I have no opinion on it. I have no idea what's the purpose of
gdb.gdb/selftest.exp . I see during the past 10 years I saw an upstream catch
of one regression(s) by but it was more an accident and it could happen with
some other regular testsuite-built inferior if it was testing the same
feature.
I just want to keep it regression-free so do whatever you find fine, I can
rebase my patch on top of it, but I would like no regression for -O2 -g GDB
and I would like not to carry this patch off-trunk forever.
Jan
On Mon, Jul 18, 2016 at 12:40 PM, Jan Kratochvil
<jan.kratochvil@redhat.com> wrote:
> On Mon, 18 Jul 2016 11:45:36 +0200, Yao Qi wrote:
>> OK, I think we still need to convert gdb.gdb/selftest.exp using proc
>> do_self_tests to simplify the code, and then, improve procs in
>> lib/selftest-support.exp to handle the fails when GDB is compiled with
>> optimization. What do you think? If you agree on this, I can commit
>> my patch above, and tweak lib/selftest-support.exp to fix your fails.
>
> I have no opinion on it. I have no idea what's the purpose of
> gdb.gdb/selftest.exp . I see during the past 10 years I saw an upstream catch
> of one regression(s) by but it was more an accident and it could happen with
> some other regular testsuite-built inferior if it was testing the same
> feature.
>
> I just want to keep it regression-free so do whatever you find fine, I can
> rebase my patch on top of it, but I would like no regression for -O2 -g GDB
> and I would like not to carry this patch off-trunk forever.
I've pushed my patch in. Your patch changing test_with_self is no longer
needed, but changes in do_steps_and_nexts are still useful to fix the fails
you've seen, so changes in do_steps_and_nexts are OK to commit.
@@ -116,6 +116,14 @@ proc do_steps_and_nexts {} {
set description "next over lim_at_start initialization"
set command "next"
}
+ -re ".*TRY.*$gdb_prompt $" {
+ set description "next over TRY"
+ set command "next"
+ }
+ -re ".*captured_main \\(args\\);.*$gdb_prompt $" {
+ set description "step into captured_main (args)"
+ set command "step"
+ }
-re ".*count . 0x3.*$gdb_prompt $" {
set description "next over conditional stack alignment code 1"
set command "next"
@@ -330,6 +338,13 @@ proc test_with_self { executable } {
-re "Starting program.*Breakpoint \[0-9\]+,.*captured_main .data.*$gdb_prompt $" {
xfail "$description (line numbers scrambled?)"
}
+ -re "captured_main \\(args\\);\r\n$gdb_prompt $" {
+ gdb_test_multiple "step" "$description" {
+ -re "captured_main .data.* at .*main.c:.*$gdb_prompt $" {
+ pass "$description"
+ }
+ }
+ }
-re "vfork: No more processes.*$gdb_prompt $" {
fail "$description (out of virtual memory)"
set timeout $oldtimeout