From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 9F9B63857806 for ; Wed, 16 Mar 2022 14:16:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9F9B63857806 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 22GEGJ26011329 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Mar 2022 10:16:25 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 22GEGJ26011329 Received: from [10.0.0.11] (192-222-157-6.qc.cable.ebox.net [192.222.157.6]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id A5A911EDF0; Wed, 16 Mar 2022 10:16:19 -0400 (EDT) Message-ID: <3b845985-cbd4-4996-145e-14191338b095@polymtl.ca> Date: Wed, 16 Mar 2022 10:16:19 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH 3/3] gdb: testsuite: enhance gdb_attach to fix jit-elf.exp Content-Language: en-US To: Tiezhu Yang , gdb-patches@sourceware.org References: <1647424709-23680-1-git-send-email-yangtiezhu@loongson.cn> <1647424709-23680-4-git-send-email-yangtiezhu@loongson.cn> From: Simon Marchi In-Reply-To: <1647424709-23680-4-git-send-email-yangtiezhu@loongson.cn> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Wed, 16 Mar 2022 14:16:19 +0000 X-Spam-Status: No, score=-3038.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Mar 2022 14:16:33 -0000 On 2022-03-16 05:58, Tiezhu Yang wrote: > If /proc/sys/kernel/yama/ptrace_scope is 1, when execute the following > command without superuser: > > make check-gdb TESTS="gdb.base/jit-elf.exp" > > we can see the following messages in gdb/testsuite/gdb.log: > > (gdb) attach 1650108 > Attaching to program: /home/yangtiezhu/build/gdb/testsuite/outputs/gdb.base/jit-elf/jit-elf-main, process 1650108 > ptrace: Operation not permitted. > (gdb) FAIL: gdb.base/jit-elf.exp: attach: one_jit_test-2: break here 1: attach > > handle the above case in gdb_attach, and then use gdb_attach to fix > the above issue. > > Signed-off-by: Tiezhu Yang > --- > gdb/testsuite/gdb.base/jit-elf.exp | 9 ++------- > gdb/testsuite/lib/gdb.exp | 8 ++++++++ > 2 files changed, 10 insertions(+), 7 deletions(-) > > diff --git a/gdb/testsuite/gdb.base/jit-elf.exp b/gdb/testsuite/gdb.base/jit-elf.exp > index 8a4c5b7..61a51a2 100644 > --- a/gdb/testsuite/gdb.base/jit-elf.exp > +++ b/gdb/testsuite/gdb.base/jit-elf.exp > @@ -40,7 +40,7 @@ set jit_solib_srcfile ${srcdir}/${subdir}/${jit_solib_basename}.c > # Detach, restart GDB, and re-attach to the program. > proc clean_reattach {} { > global decimal gdb_prompt > - global main_binfile main_srcfile > + global main_binfile > > # Get PID of test program. > set testpid -1 > @@ -57,12 +57,7 @@ proc clean_reattach {} { > > clean_restart ${main_binfile} > > - set test "attach" > - gdb_test_multiple "attach $testpid" "$test" { > - -re "Attaching to program.*.*main.*at .*$main_srcfile:.*$gdb_prompt $" { > - pass "$test" > - } > - } > + gdb_attach $testpid Ok, to expand on my previous message: in order to allow matching for some specific output, like this test does (to avoid losing some test coverage), I propose to let the caller pass an extra pattern that will be used in the catch-all success clause: gdb_attach can be: proc gdb_attach { testpid {options {}} } { parse_options { {pattern ""} } gdb_test_multiple "attach $testpid" "attach" { -re -wrap "Attaching to.*ptrace: Operation not permitted\\." { unsupported "$gdb_test_name (Operation not permitted)" return 0 } -re -wrap "$pattern" { pass $gdb_test_name return 1 } } } And the caller can do: gdb_attach $testpid { "pattern" "main.*at .*$::main_srcfile:.*" } A simpler caller that doesn't care about the output can still do just: gdb_attach $testpid Note that you probably want to make the test return if gdb_attach returns 0 (as you did in the previous test), so that we don't continue and generate some FAILs. > > gdb_test_no_output "set var wait_for_gdb = 0" > } > diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp > index 599e8cc..5751bde 100644 > --- a/gdb/testsuite/lib/gdb.exp > +++ b/gdb/testsuite/lib/gdb.exp > @@ -5114,6 +5114,14 @@ proc gdb_attach { testpid } { > unsupported "$gdb_test_name (Operation not permitted)" > return 0 > } > + -re -wrap "Attaching to program.*.*main.*at .*:.*" { > + pass $gdb_test_name > + return 1 > + } > + -re -wrap "Attaching to program: .*, process $testpid\r\n.*ptrace: Operation not permitted\\." { > + unsupported "$gdb_test_name (Operation not permitted)" > + return 0 > + } > } > } This way we don't need to add many specific patterns like this. Simon