From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5266 invoked by alias); 16 Jan 2004 14:10:43 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 5233 invoked from network); 16 Jan 2004 14:10:41 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 16 Jan 2004 14:10:41 -0000 Received: from drow by nevyn.them.org with local (Exim 4.30 #1 (Debian)) id 1AhUgK-0002Av-2E; Fri, 16 Jan 2004 09:10:40 -0500 Date: Fri, 16 Jan 2004 14:10:00 -0000 From: Daniel Jacobowitz To: Andrew Cagney Cc: gdb-patches@sources.redhat.com, rearnsha@arm.com Subject: Re: RFA/ARM: Switch mode when setting PC Message-ID: <20040116141040.GA8134@nevyn.them.org> Mail-Followup-To: Andrew Cagney , gdb-patches@sources.redhat.com, rearnsha@arm.com References: <20040116035402.GA3215@nevyn.them.org> <40077A12.5040306@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <40077A12.5040306@gnu.org> User-Agent: Mutt/1.5.1i X-SW-Source: 2004-01/txt/msg00408.txt.bz2 On Fri, Jan 16, 2004 at 12:43:46AM -0500, Andrew Cagney wrote: > >This patch fixes several failures in virtfunc.exp for arm-sim/-mthumb. The > >problem is that the non-virtual thunk for pDe->vg() is emitted in ARM mode > >and called via _call_via_r2. But the rest of the program is Thumb mode, > >and > >nothing tells the simulator (or target; I haven't tested this on hardware > >yet but I expect the same result) to switch to ARM. So it gets very > >confused. > > > >This is somewhat suboptimal in that if you want, for some reason, to call > >something marked as an ARM function with Thumb mode enabled you will have > >to > >set $ps yourself _after_ setting $pc. I think it's still a good idea, > >though. OK? > > (sorry, but I don't understand that paragraph - doesn't that code set > the $ps after setting the $pc?) Right. But if you want to start a Thumb function in ARM mode you'll have to do: (gdb) set $pc = start_of_function (gdb) set $ps = $ps & ~0x20 > The ari contains this yellow card: > > write pc > Replace write_pc() with get_frame_base_address or get_frame_id; at > present the inferior function call code still uses this when doing a > DECR_PC_AFTER_BREAK > > the concern is with the way write_pc is being called to perform two > different operations: > > - decrement the pc just after the target stops > Arrrg! > - jump to a specific address > As with an inferior function call or jump. > > I think it would be better to have two methods so that it's clear that > this case only applies when doing a jump. Well, it'd be better to rip out the current DECR_PC_AFTER_BREAK and handle it completely within the four (roughly) affected targets, thereby removing the overloading of write_pc. IMVHO. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer