From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17225 invoked by alias); 12 Mar 2013 20:52:18 -0000 Received: (qmail 17216 invoked by uid 22791); 12 Mar 2013 20:52:17 -0000 X-SWARE-Spam-Status: No, hits=-8.2 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_SPAMHAUS_DROP,KHOP_THREADED,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 12 Mar 2013 20:52:08 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r2CKq8cP029109 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 12 Mar 2013 16:52:08 -0400 Received: from localhost.localdomain (ovpn-116-57.ams2.redhat.com [10.36.116.57]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r2CKq6Hu002517; Tue, 12 Mar 2013 16:52:07 -0400 Message-ID: <513F9576.30201@redhat.com> Date: Tue, 12 Mar 2013 20:52:00 -0000 From: Phil Muldoon MIME-Version: 1.0 To: Tom Tromey CC: "gdb-patches@sourceware.org" Subject: Re: [patch][python] 2 of 5 - Frame filter MI code changes. References: <513E5707.8080404@redhat.com> <87vc8wcpsm.fsf@fleche.redhat.com> In-Reply-To: <87vc8wcpsm.fsf@fleche.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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: 2013-03/txt/msg00554.txt.bz2 On 12/03/13 20:43, Tom Tromey wrote: >>>>>> "Phil" == Phil Muldoon writes: > Needs an intro comment. 'arg' should be const. > > Phil> + if (arg && (strcmp (arg, "--no-frame-filters") == 0)) > We recently decided to use explicit NULL checks, like 'arg != NULL'. Ok. > Phil> + /* Parse arguments. In this instance we are just looking for > Phil> + --no-frame-filters. */ > Phil> + while (1) > Phil> + { > Phil> + int oind = 0; > Phil> + char *oarg; > Phil> + int opt = mi_getopt ("-stack-list-frames", argc, argv, > Phil> + opts, &oind, &oarg); > > > Phil> + /* We cannot pass -1 to frame_low, as that would signify a > Phil> + relative backtrace from the tail of the stack. So, in the case > Phil> + of frame_low == -1, assign and increment it. */ > Phil> + if (py_frame_low == -1) > Phil> + py_frame_low++; > > I didn't check, but I assume it is ok for frame_high==-1 in the call? Yes, that indicates until end of stack. > Phil> + /* Run the inbuilt backtrace if there are no filters registered, or > Phil> + if there was an error in the Python backtracing output, or if > Phil> + frame-filters are disabled. */ > Phil> + if (! frame_filters || raw_arg || result == PY_BT_ERROR > Phil> + || result == PY_BT_NO_FILTERS) > > It seems to me that the PY_BT_ERROR case should not be here, since the > MI client could get a partially filtered trace followed by the normal > trace. Yeah you are right. It's a pain to figure out what to do here. I suspect in MI case just abandon the trace. > 'result' is initialized to 0 but it seems like it should be initialized > to some PY_BT_ enum value; and have the right type. Oops. > Phil> + error (_("-stack-list-locals: Usage: [--no-frame-filters] PRINT_VALUES")); > > I think -stack-list-frames takes "-no-frame-filters" but this and others > take the "--" form. That seems confusing. They all take the "--" notation > Phil> + result = apply_frame_filter (frame, flags, print_value, > Phil> + current_uiout, 0,0); > > Missing space after the ",". > > Phil> + if (! frame_filters || raw_arg || result == PY_BT_ERROR > Phil> + || result == PY_BT_NO_FILTERS) > Phil> + { > Phil> + list_args_or_locals (locals, print_value, frame); > > Same comments about PY_BT_ERROR and 'result'. > Actually this applies everywhere. Yeah everywhere in MI, I agree now. Cheers, Phil