From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9244 invoked by alias); 4 Dec 2012 04:45:39 -0000 Received: (qmail 9005 invoked by uid 22791); 4 Dec 2012 04:45:35 -0000 X-SWARE-Spam-Status: No, hits=-4.5 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 04 Dec 2012 04:45:21 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1TfkNj-0006sJ-Vy from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Mon, 03 Dec 2012 20:45:20 -0800 Received: from SVR-ORW-FEM-02.mgc.mentorg.com ([147.34.96.206]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Mon, 3 Dec 2012 20:45:19 -0800 Received: from qiyao.dyndns.org.dyndns.org (147.34.91.1) by svr-orw-fem-02.mgc.mentorg.com (147.34.96.168) with Microsoft SMTP Server id 14.1.289.1; Mon, 3 Dec 2012 20:45:18 -0800 From: Yao Qi To: Subject: [PATCH 4/6] Notify breakpoint-modified when uploaded tracepoints are merged. Date: Tue, 04 Dec 2012 04:45:00 -0000 Message-ID: <1354596282-32526-5-git-send-email-yao@codesourcery.com> In-Reply-To: <1354596282-32526-1-git-send-email-yao@codesourcery.com> References: <1354596282-32526-1-git-send-email-yao@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes 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 X-SW-Source: 2012-12/txt/msg00050.txt.bz2 When any location of a tracepoint is marked as installed/inserted, notify 'breakpoint-modified' observer. gdb: 2012-12-03 Yao Qi * tracepoint.c (merge_uploaded_tracepoints): Record all modified tracepoints and notify 'breakpoint-modified' observer for them. --- gdb/tracepoint.c | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index c467b9c..0c023bd 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -3475,6 +3475,10 @@ void merge_uploaded_tracepoints (struct uploaded_tp **uploaded_tps) { struct uploaded_tp *utp; + /* A set of tracepoints which are modified. */ + VEC(breakpoint_p) *modified_tp = NULL; + int ix; + struct breakpoint *b; /* Look for GDB tracepoints that match up with our uploaded versions. */ for (utp = *uploaded_tps; utp; utp = utp->next) @@ -3485,6 +3489,8 @@ merge_uploaded_tracepoints (struct uploaded_tp **uploaded_tps) loc = find_matching_tracepoint_location (utp); if (loc) { + int found = 0; + /* Mark this location as already inserted. */ loc->inserted = 1; t = (struct tracepoint *) loc->owner; @@ -3492,6 +3498,22 @@ merge_uploaded_tracepoints (struct uploaded_tp **uploaded_tps) "as target's tracepoint %d at %s.\n"), loc->owner->number, utp->number, paddress (loc->gdbarch, utp->addr)); + + /* One location LOC of tracepoint is modified ('inserted' is + set to 1), save LOC->owner in MODIFIED_TP if LOC->owner + is not added to MODIFIED_TP before. The observer + 'breakpoint-modified' will be notified later with every + tracepoint saved in MODIFIED_TP. */ + for (ix = 0; + VEC_iterate (breakpoint_p, modified_tp, ix, b); + ix++) + if (b == loc->owner) + { + found = 1; + break; + } + if (!found) + VEC_safe_push (breakpoint_p, modified_tp, loc->owner); } else { @@ -3514,6 +3536,12 @@ merge_uploaded_tracepoints (struct uploaded_tp **uploaded_tps) t->number_on_target = utp->number; } + /* Notify 'breakpoint-modified' observer that at least one of B's + locations is changed. */ + for (ix = 0; VEC_iterate (breakpoint_p, modified_tp, ix, b); ix++) + observer_notify_breakpoint_modified (b); + + VEC_free (breakpoint_p, modified_tp); free_uploaded_tps (uploaded_tps); } -- 1.7.7.6