[testsuite] Fix gdb.gdb/selftest.exp for C++-O2-g-built GDB

Message ID 20160716131402.GA2961@host1.jankratochvil.net
State New, archived
Headers

Commit Message

Jan Kratochvil July 16, 2016, 1:14 p.m. UTC
  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

Yao Qi July 18, 2016, 8:05 a.m. UTC | #1
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.
  
Jan Kratochvil July 18, 2016, 8:18 a.m. UTC | #2
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
  
Yao Qi July 18, 2016, 9:45 a.m. UTC | #3
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.
  
Jan Kratochvil July 18, 2016, 11:40 a.m. UTC | #4
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
  
Yao Qi July 19, 2016, 9:47 a.m. UTC | #5
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.
  

Patch

diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp
index af0026c..2cdd5c1 100644
--- a/gdb/testsuite/gdb.gdb/selftest.exp
+++ b/gdb/testsuite/gdb.gdb/selftest.exp
@@ -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