From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 49286 invoked by alias); 15 Oct 2018 22:12:09 -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 49274 invoked by uid 89); 15 Oct 2018 22:12:08 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.1 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,UNSUBSCRIBE_BODY autolearn=ham version=3.3.2 spammy=H*r:112, catchpoint, detects, target_board X-HELO: smtp.polymtl.ca Received: from smtp.polymtl.ca (HELO smtp.polymtl.ca) (132.207.4.11) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 15 Oct 2018 22:12:06 +0000 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 w9FMBxr5028322 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 15 Oct 2018 18:12:04 -0400 Received: by simark.ca (Postfix, from userid 112) id 75C6C1EA70; Mon, 15 Oct 2018 18:11:59 -0400 (EDT) Received: from simark.ca (localhost [127.0.0.1]) by simark.ca (Postfix) with ESMTP id DA2E01E4C2; Mon, 15 Oct 2018 18:11:55 -0400 (EDT) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Mon, 15 Oct 2018 22:12:00 -0000 From: Simon Marchi To: Tom de Vries Cc: Gary Benson , gdb-patches@sourceware.org, Pedro Alves Subject: Re: [PATCH][gdb/testsuite] Rewrite catch-follow-exec.exp In-Reply-To: <20181011074744.GA7677@delia> References: <20181005101122.GA23867@delia> <20181009135155.GB12668@blade.nx> <8f8ffb94-5a0c-8b2b-d541-eaacd7d1f42c@suse.de> <20181010092735.GA29557@blade.nx> <20181010134423.GA23926@blade.nx> <20181011074744.GA7677@delia> Message-ID: <750f69f3ea27d2ca530c896eef51e9eb@polymtl.ca> X-Sender: simon.marchi@polymtl.ca User-Agent: Roundcube Webmail/1.3.6 X-IsSubscribed: yes X-SW-Source: 2018-10/txt/msg00336.txt.bz2 On 2018-10-11 03:47, Tom de Vries wrote: > [gdb/testsuite] Rewrite catch-follow-exec.exp > > There are two problems with the current catch-follow-exec.exp: > - INTERNAL_GDBFLAGS (containing the datadir setting) is not used > - remote host testing doesn't work > > Fix the former by using gdb_spawn_with_cmdline_opts. Fix the latter by > requiring gdb-native. > > Build on x86_64-linux with and without ubsan, tested with and without > --target_board=native-gdbserver. My build of GDB (and probably some on the buildbot too?) uses -fsanitize=address, and on it the test does not pass. On a build without -fsanitize=address, it does pass. The failing test is: FAIL: gdb.base/catch-follow-exec.exp: [lindex $result 3] == 1 and the value of $result is "17872 exp10 0 23". This is because ASan exits with 23 if it detects leaks. If there's a way to set LSAN_OPTIONS='exitcode=1' in the environment GDB runs in, it would probably make it work... > 2018-10-05 Tom de Vries > > PR gdb/23730 > * gdb.base/catch-follow-exec.c: Add copyright notice. > * gdb.base/catch-follow-exec.exp: Rewrite to use > gdb_spawn_with_cmdline_opts. Require gdb-native. > > --- > gdb/testsuite/gdb.base/catch-follow-exec.c | 17 ++++++++++++ > gdb/testsuite/gdb.base/catch-follow-exec.exp | 41 > ++++++++++++++++++++++------ > 2 files changed, 49 insertions(+), 9 deletions(-) > > diff --git a/gdb/testsuite/gdb.base/catch-follow-exec.c > b/gdb/testsuite/gdb.base/catch-follow-exec.c > index fa68a2a34e..1a59f58aa5 100644 > --- a/gdb/testsuite/gdb.base/catch-follow-exec.c > +++ b/gdb/testsuite/gdb.base/catch-follow-exec.c > @@ -1,3 +1,20 @@ > +/* This testcase is part of GDB, the GNU debugger. > + > + Copyright 2018 Free Software Foundation, Inc. > + > + This program is free software; you can redistribute it and/or > modify > + it under the terms of the GNU General Public License as published > by > + the Free Software Foundation; either version 3 of the License, or > + (at your option) any later version. > + > + This program is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + GNU General Public License for more details. > + > + You should have received a copy of the GNU General Public License > + along with this program. If not, see > . */ > + > #include > #include > #include > diff --git a/gdb/testsuite/gdb.base/catch-follow-exec.exp > b/gdb/testsuite/gdb.base/catch-follow-exec.exp > index 0e32ed4a6f..2ccd0115e7 100644 > --- a/gdb/testsuite/gdb.base/catch-follow-exec.exp > +++ b/gdb/testsuite/gdb.base/catch-follow-exec.exp > @@ -22,8 +22,8 @@ if {[build_executable "failed to prepare" $testfile > $srcfile debug] == -1} { > return -1 > } > > -if { ![remote_file target exists /bin/bash] } { > - unsupported "no bash" > +if { [target_info gdb_protocol] != "" } { > + unsupported "not native" Please add a comment here, something like: # Even though the feature under features being tested are supported by gdbserver, # the way this test is written doesn't make it easy with a remote target. > return > } > > @@ -34,7 +34,7 @@ if { ![remote_file target exists /bin/ls] } { > > proc catch_follow_exec { } { > global binfile > - global GDB > + global gdb_spawn_id > > set test "catch-follow-exec" > > @@ -45,13 +45,36 @@ proc catch_follow_exec { } { > append FLAGS " -ex \"run\"" > append FLAGS " -ex \"info prog\"" > > - catch {exec /bin/bash -c "$GDB $FLAGS"} catchlog > - send_log "$catchlog\n" > + gdb_exit > + if {[gdb_spawn_with_cmdline_opts "$FLAGS"] != 0} { > + fail "spawn" > + return > + } > + > + gdb_test_multiple "" "run til exit" { > + "runtime error:" { > + # Error in case of --enable-ubsan > + fail "No runtime error" > + } Can you explain what this catches? If this isn't there but UBSan is enabled, the crash isn't detected properly by the code below? Please use a lower case letter for the test name. > + eof { > + set result [wait -i $gdb_spawn_id] > + verbose $result > + > + gdb_assert { [lindex $result 2] == 0 } > + > + # We suspect this will be zero instead of one after fixing > PR23368 > + # - "gdb goes to into background when hitting exec catchpoint > with > + # follow-exec-mode new" > + gdb_assert { [lindex $result 3] == 1 } > + > + # Error in case of --disable-ubsan, we get > + # "CHILDKILLED SIGSEGV {segmentation violation}" as extra > + # argument(s). > + gdb_assert { [llength $result] == 4 } > + } > > - if { [regexp {No selected thread} $catchlog] } { > - pass $test > - } else { > - fail $test > + remote_close host > + clear_gdb_spawn_id > } > } Simon