From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 95943 invoked by alias); 12 Oct 2019 16:24:23 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 95885 invoked by uid 89); 12 Oct 2019 16:24:16 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 spammy=10a, Saved, stopped, Continuing X-HELO: mx1.suse.de Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 12 Oct 2019 16:24:14 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 967E4ADFB for ; Sat, 12 Oct 2019 16:24:07 +0000 (UTC) Subject: [PING][PATCH][gdb/testsuite] Add KFAIL for missing support of reverse-debugging xsave From: Tom de Vries To: gdb-patches@sourceware.org References: <20190927151128.GA29080@delia> Message-ID: <4ed09b75-1531-81ad-e331-53f920d9ee11@suse.de> Date: Sat, 12 Oct 2019 16:24:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 MIME-Version: 1.0 In-Reply-To: <20190927151128.GA29080@delia> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2019-10/txt/msg00309.txt.bz2 On 27-09-2019 17:11, Tom de Vries wrote: > Hi, > > Normally the gdb.reverse/*.exp test-cases pass on my system (apart from the > record/23188 KFAIL for gdb.reverse/step-precsave.exp). But when specifying > GLIBC_TUNABLES=glibc.tune.hwcaps=-XSAVEC_Usable to force glibc to use > _dl_runtime_resolve_xsave instead of _dl_runtime_resolve_xsavec, we run into > 1054 FAILs like this: > ... > (gdb) PASS: gdb.reverse/sigall-reverse.exp: b gen_HUP > continue^M > Continuing.^M > Process record does not support instruction 0xfae64 at address \ > 0x7ffff7ded958.^M > Process record: failed to record execution log.^M > ^M > Program stopped.^M > 0x00007ffff7ded958 in _dl_runtime_resolve_xsave () from \ > /lib64/ld-linux-x86-64.so.2^M > (gdb) FAIL: gdb.reverse/sigall-reverse.exp: get signal ABRT > ... > > The problem is that the xsave instruction is not supported in > reverse-debugging (PR record/25038). > > Add KFAILs for this PR. > > Tested on x86_64-linux. > > OK for trunk? > Ping. Thanks, - Tom > [gdb/testsuite] Add KFAIL for missing support of reverse-debugging xsave > > gdb/testsuite/ChangeLog: > > 2019-09-27 Tom de Vries > > PR record/25038 > * gdb.reverse/sigall-precsave.exp: Add PR record/25038 KFAIL. > * gdb.reverse/sigall-reverse.exp: Same. > * gdb.reverse/solib-precsave.exp: Same. > * gdb.reverse/solib-reverse.exp: Same. > * gdb.reverse/step-precsave.exp: Same. > * gdb.reverse/until-precsave.exp: Same. > * gdb.reverse/until-reverse.exp: Same. > * lib/gdb.exp (gdb_continue_to_breakpoint): Same. > > --- > gdb/testsuite/gdb.reverse/sigall-precsave.exp | 14 ++++++++++++-- > gdb/testsuite/gdb.reverse/sigall-reverse.exp | 11 +++++++++++ > gdb/testsuite/gdb.reverse/solib-precsave.exp | 13 ++++++++++++- > gdb/testsuite/gdb.reverse/solib-reverse.exp | 13 ++++++++++++- > gdb/testsuite/gdb.reverse/step-precsave.exp | 4 ++++ > gdb/testsuite/gdb.reverse/until-precsave.exp | 13 ++++++++++++- > gdb/testsuite/gdb.reverse/until-reverse.exp | 15 ++++++++++++--- > gdb/testsuite/lib/gdb.exp | 4 ++++ > 8 files changed, 79 insertions(+), 8 deletions(-) > > diff --git a/gdb/testsuite/gdb.reverse/sigall-precsave.exp b/gdb/testsuite/gdb.reverse/sigall-precsave.exp > index 79a1e7282b6..ccdfde407fc 100644 > --- a/gdb/testsuite/gdb.reverse/sigall-precsave.exp > +++ b/gdb/testsuite/gdb.reverse/sigall-precsave.exp > @@ -258,14 +258,20 @@ foreach sig $signals { > } > } > > -gdb_test_multiple "continue" "continue" { > +set kfail_pattern "Process record does not support instruction 0xfae64 at.*" > +set test "run to end of main" > +gdb_test_multiple "continue" $test { > -re "Breakpoint .* end of main .*$gdb_prompt $" { > - pass "run to end of main" > + pass $test > } > -re "Breakpoint .* handle_.*$gdb_prompt $" { > send_gdb "continue\n" > exp_continue > } > + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" { > + kfail "gdb/25038" $test > + return -1 > + } > } > > delete_breakpoints > @@ -289,8 +295,12 @@ set sig_supported 1 > set thissig "ABRT" > > # test signal handling > +set record_instruction_kfail 0 > foreach sig [lrange $signals 1 end] { > test_one_sig $sig > + if { $record_instruction_kfail } { > + return -1 > + } > } > > # The last signal (SIGTERM) gets handled slightly differently because > diff --git a/gdb/testsuite/gdb.reverse/sigall-reverse.exp b/gdb/testsuite/gdb.reverse/sigall-reverse.exp > index c734fe8e17a..884a00c5dcf 100644 > --- a/gdb/testsuite/gdb.reverse/sigall-reverse.exp > +++ b/gdb/testsuite/gdb.reverse/sigall-reverse.exp > @@ -37,6 +37,7 @@ proc test_one_sig {nextsig} { > global sig_supported > global gdb_prompt > global thissig > + global record_instruction_kfail > > set this_sig_supported $sig_supported > gdb_test "handle SIG$thissig stop print" \ > @@ -51,6 +52,7 @@ proc test_one_sig {nextsig} { > setup_xfail "i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu" > } > set testmsg "get signal $thissig" > + set kfail_pattern "Process record does not support instruction 0xfae64 at.*" > gdb_test_multiple "continue" $testmsg { > -re "Program received signal SIG$thissig.*handle_$thissig.*$gdb_prompt $" { > fail "$testmsg (wrong location)" > @@ -62,6 +64,11 @@ proc test_one_sig {nextsig} { > xfail $testmsg > set need_another_continue 0 > } > + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" { > + kfail "gdb/25038" "$testmsg" > + set record_instruction_kfail 1 > + return > + } > } > } > > @@ -237,8 +244,12 @@ set sig_supported 1 > set thissig "ABRT" > > # test signal handling > +set record_instruction_kfail 0 > foreach sig [lrange $signals 1 end] { > test_one_sig $sig > + if { $record_instruction_kfail } { > + return -1 > + } > } > > # The last signal (SIGTERM) gets handled slightly differently because > diff --git a/gdb/testsuite/gdb.reverse/solib-precsave.exp b/gdb/testsuite/gdb.reverse/solib-precsave.exp > index 574d79816db..a3f874c09b7 100644 > --- a/gdb/testsuite/gdb.reverse/solib-precsave.exp > +++ b/gdb/testsuite/gdb.reverse/solib-precsave.exp > @@ -91,7 +91,18 @@ gdb_test "break $end_of_main" \ > "Breakpoint $decimal at .*$srcfile, line $end_of_main\." \ > "breakpoint at end of main" > > -gdb_test "continue" "Breakpoint .* end of main .*" "run to end of main" > +set test "run to end of main" > +set pass_pattern "Breakpoint .* end of main .*" > +set kfail_pattern "Process record does not support instruction 0xfae64 at.*" > +gdb_test_multiple "continue" $test { > + -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" { > + pass $test > + } > + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" { > + kfail "gdb/25038" $test > + return -1 > + } > +} > > gdb_test "record save $precsave" \ > "Saved core file $precsave with execution log\." \ > diff --git a/gdb/testsuite/gdb.reverse/solib-reverse.exp b/gdb/testsuite/gdb.reverse/solib-reverse.exp > index 77c321388b4..53b35239f81 100644 > --- a/gdb/testsuite/gdb.reverse/solib-reverse.exp > +++ b/gdb/testsuite/gdb.reverse/solib-reverse.exp > @@ -86,7 +86,18 @@ if [supports_process_record] { > > set end_part_one [gdb_get_line_number " end part one" "$srcfile"] > set end_part_two [gdb_get_line_number " end part two" "$srcfile"] > -gdb_test "until $end_part_one" " end part one.*" "run until end part one" > +set test "run until end part one" > +set pass_pattern " end part one.*" > +set kfail_pattern "Process record does not support instruction 0xfae64 at.*" > +gdb_test_multiple "until $end_part_one" $test { > + -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" { > + pass $test > + } > + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" { > + kfail "gdb/25038" $test > + return -1 > + } > +} > > gdb_test "reverse-step" " shr1 three .*" "reverse-step third shr1" > gdb_test "reverse-step" " shr1 two .*" "reverse-step second shr1" > diff --git a/gdb/testsuite/gdb.reverse/step-precsave.exp b/gdb/testsuite/gdb.reverse/step-precsave.exp > index 2073b8a1542..72ee279f806 100644 > --- a/gdb/testsuite/gdb.reverse/step-precsave.exp > +++ b/gdb/testsuite/gdb.reverse/step-precsave.exp > @@ -49,6 +49,7 @@ with_timeout_factor 20 { > set test "run to end of main" > set pass_pattern "Breakpoint .* end of main .*" > set kfail_pattern "Process record does not support instruction 0xc5 at.*" > + set kfail2_pattern "Process record does not support instruction 0xfae64 at.*" > gdb_test_multiple "continue" $test { > -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" { > pass $test > @@ -56,6 +57,9 @@ with_timeout_factor 20 { > -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" { > kfail "record/23188" $test > } > + -re "\[\r\n\]*(?:$kfail2_pattern)\[\r\n\]+$gdb_prompt $" { > + kfail "record/25038" $test > + } > } > } > > diff --git a/gdb/testsuite/gdb.reverse/until-precsave.exp b/gdb/testsuite/gdb.reverse/until-precsave.exp > index baf21ab7ad2..1f09df193fd 100644 > --- a/gdb/testsuite/gdb.reverse/until-precsave.exp > +++ b/gdb/testsuite/gdb.reverse/until-precsave.exp > @@ -50,7 +50,18 @@ gdb_test "break $end_of_main" \ > > # This can take awhile. > with_timeout_factor 20 { > - gdb_test "continue" "Breakpoint .* set breakpoint 10a here .*" "run to end of main" > + set test "run to end of main" > + set pass_pattern "Breakpoint .* set breakpoint 10a here .*" > + set kfail_pattern "Process record does not support instruction 0xfae64 at.*" > + gdb_test_multiple "continue" $test { > + -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" { > + pass $test > + } > + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" { > + kfail "gdb/25038" $test > + return -1 > + } > + } > } > > # So can this, against gdbserver, for example. > diff --git a/gdb/testsuite/gdb.reverse/until-reverse.exp b/gdb/testsuite/gdb.reverse/until-reverse.exp > index 2e26de3ce7b..804e07f46ca 100644 > --- a/gdb/testsuite/gdb.reverse/until-reverse.exp > +++ b/gdb/testsuite/gdb.reverse/until-reverse.exp > @@ -49,9 +49,18 @@ gdb_test "until $bp_location1" \ > > # Advance up to factorial, outer invocation > # > -gdb_test "advance factorial" \ > - "factorial .value=6..*$srcfile:$bp_location7.*" \ > - "advance to factorial" > +set test "advance to factorial" > +set pass_pattern "factorial .value=6..*$srcfile:$bp_location7.*" > +set kfail_pattern "Process record does not support instruction 0xfae64 at.*" > +gdb_test_multiple "advance factorial" $test { > + -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" { > + pass "$test" > + } > + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" { > + kfail "gdb/25038" $test > + return -1 > + } > +} > > # At this point, 'until' should continue the inferior up to when all the > # inner invocations of factorial() are completed and we are back at this > diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp > index 3a1f053cf8a..1fcd0f76a52 100644 > --- a/gdb/testsuite/lib/gdb.exp > +++ b/gdb/testsuite/lib/gdb.exp > @@ -633,10 +633,14 @@ proc gdb_continue_to_breakpoint {name {location_pattern .*}} { > global gdb_prompt > set full_name "continue to breakpoint: $name" > > + set kfail_pattern "Process record does not support instruction 0xfae64 at.*" > gdb_test_multiple "continue" $full_name { > -re "(?:Breakpoint|Temporary breakpoint) .* (at|in) $location_pattern\r\n$gdb_prompt $" { > pass $full_name > } > + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" { > + kfail "gdb/25038" $full_name > + } > } > } > >