From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6302 invoked by alias); 7 Jul 2014 19:17:55 -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 6282 invoked by uid 89); 7 Jul 2014 19:17:53 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-HELO: usevmg21.ericsson.net Received: from usevmg21.ericsson.net (HELO usevmg21.ericsson.net) (198.24.6.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Mon, 07 Jul 2014 19:17:50 +0000 Received: from EUSAAHC008.ericsson.se (Unknown_Domain [147.117.188.96]) by usevmg21.ericsson.net (Symantec Mail Security) with SMTP id 09.D8.25146.6CD9AB35; Mon, 7 Jul 2014 15:16:55 +0200 (CEST) Received: from simark-hp.mo.ca.am.ericsson.se (147.117.188.8) by smtps-am.internal.ericsson.com (147.117.188.96) with Microsoft SMTP Server (TLS) id 14.3.174.1; Mon, 7 Jul 2014 15:17:47 -0400 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH v2 1/2] Add dprintf and detach test (PR breakpoints/17012) Date: Mon, 07 Jul 2014 19:17:00 -0000 Message-ID: <1404760664-17289-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2014-07/txt/msg00133.txt.bz2 This adds a test to demonstrate PR 17012, where adding a dprintf in a linux native process and detaching leaves the trap instruction in the process. The test fails now, but is fixed by the following commit. New in v2: * Verify process existence by trying to attach it with a new gdb. * Added/updated copyright notices. gdb/testsuite/ChangeLog: 2014-07-07 Simon Marchi simon.marchi@ericsson.com PR breakpoints/17012 gdb.base/dprintf-detach.c: New file. gdb.base/dprintf-detach.exp: New file. --- gdb/testsuite/gdb.base/dprintf-detach.c | 35 ++++++++++++++++ gdb/testsuite/gdb.base/dprintf-detach.exp | 70 +++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 gdb/testsuite/gdb.base/dprintf-detach.c create mode 100644 gdb/testsuite/gdb.base/dprintf-detach.exp diff --git a/gdb/testsuite/gdb.base/dprintf-detach.c b/gdb/testsuite/gdb.base/dprintf-detach.c new file mode 100644 index 0000000..b5c2fc4 --- /dev/null +++ b/gdb/testsuite/gdb.base/dprintf-detach.c @@ -0,0 +1,35 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2014 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 + +static void +function (void) +{ + sleep (1); +} + +int +main (void) +{ + int i; + + for (i = 0; i < 30; i++) + { + function (); + } +} diff --git a/gdb/testsuite/gdb.base/dprintf-detach.exp b/gdb/testsuite/gdb.base/dprintf-detach.exp new file mode 100644 index 0000000..5dcdd28 --- /dev/null +++ b/gdb/testsuite/gdb.base/dprintf-detach.exp @@ -0,0 +1,70 @@ +# Copyright 2014 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 . */ + +# This test checks that inserting a dprintf and detaching does not crash +# the program. +# +# Related bug: https://sourceware.org/bugzilla/show_bug.cgi?id=17012 + +# Only GNU/Linux is known to support (dprintf and detach). +if { ! [istarget "*-*-linux*"] } { + return 0 +} + +# Are we on a target board? +if [is_remote target] then { + return 0 +} + +standard_testfile +set escapedbinfile [string_to_regexp ${binfile}] + +if [prepare_for_testing "failed to prepare for dprintf-detach" \ + ${testfile} ${srcfile} {debug}] { + return -1 +} + +# The problem was showing up in non-stop mode, since it enables +# "breakpoint always-inserted", so this could also be +# "set breakpoint always-inserted on". +gdb_test_no_output "set non-stop on" + +if ![runto_main] { + fail "Can't run to main" + return -1 +} + +# Get PID of test program. +set inferior_pid -1 +set test "get inferior process ID" +gdb_test_multiple "call getpid ()" $test { + -re ".* = ($decimal).*$gdb_prompt $" { + set inferior_pid $expect_out(1,string) + pass $test + } +} + +# Add a dprintf and detach. +gdb_test "dprintf function, \"hello\"" "Dprintf .*" "dprintf insertion" +gdb_test "detach" "Detaching from program: .*$escapedbinfile, .*" "detach program" + +gdb_exit + +# Give some time for the ex-inferior to run and hopefully not crash. +sleep 1 + +# Check that the process still exists by attaching a new gdb to it. +gdb_start +gdb_test "attach $inferior_pid" "Attaching to process $inferior_pid.*Reading symbols from $escapedbinfile.*" "re-attach to inferior" -- 2.0.0