From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 42519 invoked by alias); 8 May 2015 12:35:45 -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 42494 invoked by uid 89); 8 May 2015 12:35:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-HELO: usevmg20.ericsson.net Received: from usevmg20.ericsson.net (HELO usevmg20.ericsson.net) (198.24.6.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Fri, 08 May 2015 12:35:43 +0000 Received: from EUSAAHC007.ericsson.se (Unknown_Domain [147.117.188.93]) by usevmg20.ericsson.net (Symantec Mail Security) with SMTP id F2.4F.32689.2955C455; Fri, 8 May 2015 08:20:02 +0200 (CEST) Received: from [142.133.183.107] (147.117.188.8) by smtp-am.internal.ericsson.com (147.117.188.95) with Microsoft SMTP Server id 14.3.210.2; Fri, 8 May 2015 08:35:40 -0400 Message-ID: <554CAD9C.7090801@ericsson.com> Date: Fri, 08 May 2015 12:35:00 -0000 From: Antoine Tremblay User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Pedro Alves , Yao Qi CC: Subject: Re: [PATCH] [gdbserver] Disable conditional breakpoints on no-hardware-single-step targets References: <1430411029-12097-1-git-send-email-qiyaoltc@gmail.com> <554A368F.4060309@redhat.com> <86oalwvf38.fsf@gmail.com> <554B5052.2090904@ericsson.com> <554CA308.1030509@redhat.com> <554CA83F.7080909@ericsson.com> <554CAC25.5090909@redhat.com> In-Reply-To: <554CAC25.5090909@redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2015-05/txt/msg00190.txt.bz2 On 05/08/2015 08:29 AM, Pedro Alves wrote: > On 05/08/2015 01:12 PM, Antoine Tremblay wrote: > >> This looks very nice thanks! , but I do have one question , why is the >> result a VEC ? >> >> From the context and current code won't we have only one next instruction ? > > Nope. Most frequent case is conditional branches where we don't know > where the program will end up. Might be the destination of the branch, > if the instruction evals true, or after the branch, if the condition evals false. > Even though the arm code manages to evaluate most conditions itself upfront, > there are still some cases where it can't. The way we handle it currently > is that the get_next_pc functions call insert extra single-step breakpoints > themselves, like e.g., in thumb_get_next_pc_raw: > > else > { > int cond_negated; > > /* There are conditional instructions after this one. > If this instruction modifies the flags, then we can > not predict what the next executed instruction will > be. Fortunately, this instruction is architecturally > forbidden to branch; we know it will fall through. > Start by skipping past it. */ > pc += thumb_insn_size (inst1); > itstate = thumb_advance_itstate (itstate); > > /* Set a breakpoint on the following instruction. */ > gdb_assert ((itstate & 0x0f) != 0); > arm_insert_single_step_breakpoint (gdbarch, aspace, > MAKE_THUMB_ADDR (pc)); > cond_negated = (itstate >> 4) & 1; > > > So you see how this is a misleading/surprising interface, naturally > something that grew organically instead of being designed for > multiple potential destinations. > Hooo , right I really though it could evaluate it upfront...seems like I had not read the function in enough detail yet :) > Another case where the ARM code (and others like PPC) need more than > one "next pc" is when dealing with atomic sequences. See e.g., > arm_deal_with_atomic_sequence_raw. gdbserver needs all that > atomic sequence code too. > Humm ok I will take a look into this too. >> >> Also, if you may,file structure wise, where would be a good place for >> this abstration layer in your view ? > > Good question. Maybe a new gdb/arch/ directory. But I'd be fine > with putting it in gdb/common/ for now. > Good, thanks a lot for your help, really saved me a quite a few hours! :) Regards, Antoine