From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4022 invoked by alias); 11 Apr 2016 14:41: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 4008 invoked by uid 89); 11 Apr 2016 14:41:54 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 11 Apr 2016 14:41:53 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4D3E42DC372; Mon, 11 Apr 2016 14:41:52 +0000 (UTC) Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u3BEfpYq028933; Mon, 11 Apr 2016 10:41:51 -0400 Subject: Re: [PATCH 4/7] Insert breakpoint even when the raw breakpoint is found To: Yao Qi , gdb-patches@sourceware.org References: <1458749384-19793-1-git-send-email-yao.qi@linaro.org> <1458749384-19793-5-git-send-email-yao.qi@linaro.org> From: Pedro Alves Message-ID: <570BB7AF.1080703@redhat.com> Date: Mon, 11 Apr 2016 14:41:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1 MIME-Version: 1.0 In-Reply-To: <1458749384-19793-5-git-send-email-yao.qi@linaro.org> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2016-04/txt/msg00212.txt.bz2 On 03/23/2016 04:09 PM, Yao Qi wrote: > --- > gdb/gdbserver/mem-break.c | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/gdb/gdbserver/mem-break.c b/gdb/gdbserver/mem-break.c > index b06f8e9..af01288 100644 > --- a/gdb/gdbserver/mem-break.c > +++ b/gdb/gdbserver/mem-break.c > @@ -411,7 +411,22 @@ set_raw_breakpoint_at (enum raw_bkpt_type type, CORE_ADDR where, int kind, > if (bp != NULL) > { > bp->refcount++; > - return bp; > + > + if (!bp->inserted) > + { > + *err = the_target->insert_point (bp->raw_type, bp->pc, bp->kind, > + bp); > + if (*err != 0) > + { > + if (debug_threads) > + debug_printf ("Failed to insert breakpoint at 0x%s (%d).\n", > + paddress (where), *err); > + bp->refcount--; Can we only increase the refcount if inserting succeeds? gdbserver can use gdb exceptions nowadays, and even though lots of current gdbserver code isn't exception safe, it'd be nice to start considering that. > + return NULL; > + } > + bp->inserted = 1; > + } > + return bp; > } > > bp = XCNEW (struct raw_breakpoint); > Thanks, Pedro Alves