From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 39160 invoked by alias); 16 Oct 2018 17:07:27 -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 39147 invoked by uid 89); 16 Oct 2018 17:07:27 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,SPF_PASS,UNSUBSCRIBE_BODY autolearn=ham version=3.3.2 spammy= 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; Tue, 16 Oct 2018 17:07:25 +0000 Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id D0F96AD00; Tue, 16 Oct 2018 17:07:22 +0000 (UTC) Subject: Re: [PATCH][gdb/testsuite] Rewrite catch-follow-exec.exp To: Simon Marchi Cc: Gary Benson , gdb-patches@sourceware.org, Pedro Alves 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> <750f69f3ea27d2ca530c896eef51e9eb@polymtl.ca> From: Tom de Vries Message-ID: <983cb35a-7547-ddf1-1a27-e7b157377997@suse.de> Date: Tue, 16 Oct 2018 17:07:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <750f69f3ea27d2ca530c896eef51e9eb@polymtl.ca> Content-Type: multipart/mixed; boundary="------------18F5A9BAD71D1C3E23CF800B" X-IsSubscribed: yes X-SW-Source: 2018-10/txt/msg00350.txt.bz2 This is a multi-part message in MIME format. --------------18F5A9BAD71D1C3E23CF800B Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-length: 1349 On 10/16/18 12:11 AM, Simon Marchi wrote: > On 2018-10-11 03:47, Tom de Vries wrote: >> [gdb/testsuite] Rewrite catch-follow-exec.exp > 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. I had trouble reproducing this, until I tried -fsanitize=leak. > If there's a way to set > LSAN_OPTIONS='exitcode=1' in the environment GDB runs in, it would > probably make it work... > I've fixed this by changing the test from == 1 to != 0. >> +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. > Done. >> +    gdb_test_multiple "" "run til exit" { >> +    "runtime error:" { >> +        # Error in case of --enable-ubsan >> +        fail "No runtime error" >> +    } > > Please use a lower case letter for the test name. > Done. OK for trunk? Thanks, - Tom --------------18F5A9BAD71D1C3E23CF800B Content-Type: text/x-patch; name="0001-gdb-testsuite-Rewrite-catch-follow-exec.exp.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="0001-gdb-testsuite-Rewrite-catch-follow-exec.exp.patch" Content-length: 4014 [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, and tested. 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 | 52 +++++++++++++++++++++------- 2 files changed, 56 insertions(+), 13 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..c3c7c7ecdd 100644 --- a/gdb/testsuite/gdb.base/catch-follow-exec.exp +++ b/gdb/testsuite/gdb.base/catch-follow-exec.exp @@ -18,12 +18,11 @@ standard_testfile -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] != "" } { + # 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. + unsupported "not native" return } @@ -32,9 +31,13 @@ if { ![remote_file target exists /bin/ls] } { return } +if { [build_executable "failed to prepare" $testfile $srcfile debug] == -1 } { + return -1 +} + proc catch_follow_exec { } { global binfile - global GDB + global gdb_spawn_id set test "catch-follow-exec" @@ -45,13 +48,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" + } + 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] != 0 } + + # 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 } } --------------18F5A9BAD71D1C3E23CF800B--