From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13849 invoked by alias); 30 Oct 2012 06:20:57 -0000 Received: (qmail 13744 invoked by uid 22791); 30 Oct 2012 06:20:53 -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,TW_EG 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, 30 Oct 2012 06:20:46 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1TT5Bj-0004pO-KU from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Mon, 29 Oct 2012 23:20:35 -0700 Received: from SVR-ORW-FEM-02.mgc.mentorg.com ([147.34.96.206]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Mon, 29 Oct 2012 23:20:25 -0700 Received: from qiyao.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, 29 Oct 2012 23:20:24 -0700 Message-ID: <508F719C.2080409@codesourcery.com> Date: Tue, 30 Oct 2012 06:20:00 -0000 From: Yao Qi User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120911 Thunderbird/15.0.1 MIME-Version: 1.0 To: ali_anwar CC: Subject: Re: Patch to propagate GDB's knowledge of the executing state to frontend References: <50891E05.7050509@codesourcery.com> In-Reply-To: <50891E05.7050509@codesourcery.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed 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: 2012-10/txt/msg00530.txt.bz2 On 10/25/2012 07:09 PM, ali_anwar wrote: > Hi, > > Attached patch is to let GDB propagate the target state under following > two scenarios: > > 1. Attached patch will enable GDB to inform about the state of the > target when it was not able to fetch the non-general registers, when > target is already stopped. > > The reason behind this behavior was an error message which was caused > when the GDB was not able to fetch the value of a certain register. The > GDB should have told the front end about the current state of the > target. The attached patch makes sure that it happens. This patch should > be a safety measure in case some debugging stub behaves badly. > > 2. Attached patch will enable GDB to inform about the state of the > target when it was not able to fetch the backtrace once the step has > already occurred and target is in stopped state. > It is better to describe what will happen or what is wrong if this patch is not applied. > Index: ChangeLog > =================================================================== > RCS file: /cvs/src/src/gdb/ChangeLog,v > retrieving revision 1.14760 > diff -u -r1.14760 ChangeLog > --- ChangeLog 24 Oct 2012 19:08:15 -0000 1.14760 > +++ ChangeLog 25 Oct 2012 10:52:02 -0000 > @@ -1,3 +1,13 @@ > +2012-10-25 Ali Anwar > + > + * infrun.c (handle_inferior_event_stub, regcache_dup_stub): > + New functions. > + (normal_stop): Change to propagate GDB's knowledge of the > + executing state to frontend when not able to fetch registers. > + (wait_for_inferior): Chnage to propagate GDB's knowledge of ^^^^^^ typo > + the executing state if not able to fetch backtrace once the > + step has already occured. ^^^^^^^ typo. In each changelog entry, we'll put 'what do we change' instead of 'why do we change in this way'. So this entry can be simplified. > Index: infrun.c > =================================================================== > RCS file: /cvs/src/src/gdb/infrun.c,v > retrieving revision 1.559 > diff -u -r1.559 infrun.c > --- infrun.c 17 Sep 2012 07:26:55 -0000 1.559 > +++ infrun.c 25 Oct 2012 10:52:04 -0000 > @@ -73,6 +73,10 @@ > > static int hook_stop_stub (void *); > > +static int regcache_dup_stub (void *); > + > +static int handle_inferior_event_stub (void *); > + > static int restore_selected_frame (void *); > > static int follow_fork (void); > @@ -2701,7 +2705,8 @@ > old_chain = make_cleanup (finish_thread_state_cleanup, &minus_one_ptid); > > /* Now figure out what to do with the result of the result. */ > - handle_inferior_event (ecs); > + catch_errors (handle_inferior_event_stub, ecs, > + "Error while handling inferior event:\n", RETURN_MASK_ALL); > > /* No error, don't finish the state yet. */ > discard_cleanups (old_chain); > @@ -6082,7 +6087,8 @@ > > /* NB: The copy goes through to the target picking up the value of > all the registers. */ > - stop_registers = regcache_dup (get_current_regcache ()); > + catch_errors (regcache_dup_stub, NULL, > + "Error while running regcache_dup:\n", RETURN_MASK_ALL); > } > > if (stop_stack_dummy == STOP_STACK_DUMMY) > @@ -6154,6 +6160,20 @@ > } > > static int > +handle_inferior_event_stub (void *ecs) > +{ > + handle_inferior_event (ecs); > + return (0); parentheses are not needed. > +} > + > +static int > +regcache_dup_stub (void *arg) > +{ > + stop_registers = regcache_dup (get_current_regcache ()); > + return (0); Likewise. -- Yao