From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30454 invoked by alias); 7 Nov 2012 00:50:24 -0000 Received: (qmail 30445 invoked by uid 22791); 7 Nov 2012 00:50:23 -0000 X-SWARE-Spam-Status: No, hits=-3.8 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,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; Wed, 07 Nov 2012 00:50:17 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1TVtqS-0000Y0-Er from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Tue, 06 Nov 2012 16:50:16 -0800 Received: from SVR-ORW-FEM-05.mgc.mentorg.com ([147.34.97.43]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Tue, 6 Nov 2012 16:50:16 -0800 Received: from qiyao.dyndns.org.dyndns.org (147.34.91.1) by svr-orw-fem-05.mgc.mentorg.com (147.34.97.43) with Microsoft SMTP Server id 14.1.289.1; Tue, 6 Nov 2012 16:50:16 -0800 From: Yao Qi To: Subject: [PATCH] Add breakpoint_created observer to update tracepoint_count. Date: Wed, 07 Nov 2012 00:50:00 -0000 Message-ID: <1352249397-15044-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-11/txt/msg00131.txt.bz2 Hi, I noticed a bug that 'tracepoint_count' is out of date if tracepoint is created by MI command '-break-insert -a'. This patch is to install 'update_tracepoint_count' to observer 'breakpoint_created', and 'update_tracepoint_count' can update 'tracepoint_count' if B is a tracepoint. Regression tested on x86_64-linux. Is it OK? gdb: 2012-11-06 Yao Qi * breakpoint.c (set_tracepoint_count): Renamed to ... (update_tracepoint_count): ... it. New. (trace_command): Don't call set_tracepoint_count. Re-indent. (strace_command, ftrace_command): (create_tracepoint_from_upload): Likewise. (_initialize_breakpoint): Call observer_attach_breakpoint_created to install update_tracepoint_count to observer 'breakpoint_created'. --- gdb/breakpoint.c | 85 +++++++++++++++++++++++++++-------------------------- 1 files changed, 43 insertions(+), 42 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 092d81e..0f505a9 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -14980,12 +14980,17 @@ catch_syscall_completer (struct cmd_list_element *cmd, /* Tracepoint-specific operations. */ -/* Set tracepoint count to NUM. */ +/* Update 'tracepoint_count' if B is a tracepoint. */ + static void -set_tracepoint_count (int num) +update_tracepoint_count (struct breakpoint *b) { - tracepoint_count = num; - set_internalvar_integer (lookup_internalvar ("tpnum"), num); + if (is_tracepoint (b)) + { + tracepoint_count = breakpoint_count; + set_internalvar_integer (lookup_internalvar ("tpnum"), + breakpoint_count); + } } static void @@ -14999,35 +15004,33 @@ trace_command (char *arg, int from_tty) else ops = &tracepoint_breakpoint_ops; - if (create_breakpoint (get_current_arch (), - arg, - NULL, 0, NULL, 1 /* parse arg */, - 0 /* tempflag */, - bp_tracepoint /* type_wanted */, - 0 /* Ignore count */, - pending_break_support, - ops, - from_tty, - 1 /* enabled */, - 0 /* internal */, 0)) - set_tracepoint_count (breakpoint_count); + create_breakpoint (get_current_arch (), + arg, + NULL, 0, NULL, 1 /* parse arg */, + 0 /* tempflag */, + bp_tracepoint /* type_wanted */, + 0 /* Ignore count */, + pending_break_support, + ops, + from_tty, + 1 /* enabled */, + 0 /* internal */, 0); } static void ftrace_command (char *arg, int from_tty) { - if (create_breakpoint (get_current_arch (), - arg, - NULL, 0, NULL, 1 /* parse arg */, - 0 /* tempflag */, - bp_fast_tracepoint /* type_wanted */, - 0 /* Ignore count */, - pending_break_support, - &tracepoint_breakpoint_ops, - from_tty, - 1 /* enabled */, - 0 /* internal */, 0)) - set_tracepoint_count (breakpoint_count); + create_breakpoint (get_current_arch (), + arg, + NULL, 0, NULL, 1 /* parse arg */, + 0 /* tempflag */, + bp_fast_tracepoint /* type_wanted */, + 0 /* Ignore count */, + pending_break_support, + &tracepoint_breakpoint_ops, + from_tty, + 1 /* enabled */, + 0 /* internal */, 0); } /* strace command implementation. Creates a static tracepoint. */ @@ -15044,18 +15047,17 @@ strace_command (char *arg, int from_tty) else ops = &tracepoint_breakpoint_ops; - if (create_breakpoint (get_current_arch (), - arg, - NULL, 0, NULL, 1 /* parse arg */, - 0 /* tempflag */, - bp_static_tracepoint /* type_wanted */, - 0 /* Ignore count */, - pending_break_support, - ops, - from_tty, - 1 /* enabled */, - 0 /* internal */, 0)) - set_tracepoint_count (breakpoint_count); + create_breakpoint (get_current_arch (), + arg, + NULL, 0, NULL, 1 /* parse arg */, + 0 /* tempflag */, + bp_static_tracepoint /* type_wanted */, + 0 /* Ignore count */, + pending_break_support, + ops, + from_tty, + 1 /* enabled */, + 0 /* internal */, 0); } /* Set up a fake reader function that gets command lines from a linked @@ -15124,8 +15126,6 @@ create_tracepoint_from_upload (struct uploaded_tp *utp) CREATE_BREAKPOINT_FLAGS_INSERTED)) return NULL; - set_tracepoint_count (breakpoint_count); - /* Get the tracepoint we just created. */ tp = get_tracepoint (tracepoint_count); gdb_assert (tp != NULL); @@ -15898,6 +15898,7 @@ _initialize_breakpoint (void) observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib); observer_attach_inferior_exit (clear_syscall_counts); observer_attach_memory_changed (invalidate_bp_value_on_memory_change); + observer_attach_breakpoint_created (update_tracepoint_count); breakpoint_objfile_key = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes); -- 1.7.7.6