From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31605 invoked by alias); 8 Jul 2009 13:20:49 -0000 Received: (qmail 31593 invoked by uid 22791); 8 Jul 2009 13:20:48 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mx2.redhat.com (HELO mx2.redhat.com) (66.187.237.31) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 08 Jul 2009 13:20:39 +0000 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n68DKYuK031027; Wed, 8 Jul 2009 09:20:35 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n68DKXgH028351; Wed, 8 Jul 2009 09:20:33 -0400 Received: from host0.dyn.jankratochvil.net (sebastian-int.corp.redhat.com [172.16.52.221]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n68DKUu0031757; Wed, 8 Jul 2009 09:20:32 -0400 Received: from host0.dyn.jankratochvil.net (localhost [127.0.0.1]) by host0.dyn.jankratochvil.net (8.14.3/8.14.3) with ESMTP id n68DKTrD021029; Wed, 8 Jul 2009 15:20:29 +0200 Received: (from jkratoch@localhost) by host0.dyn.jankratochvil.net (8.14.3/8.14.3/Submit) id n68DKNQm020998; Wed, 8 Jul 2009 15:20:23 +0200 Date: Wed, 08 Jul 2009 13:20:00 -0000 From: Jan Kratochvil To: Ulrich Weigand Cc: drow@false.org, Tom Tromey , Mark Kettenis , gdb-patches@sourceware.org Subject: [patch] /* */ for target_thread_architecture [Re: [patch] Fix i386 memory-by-register access on amd64] Message-ID: <20090708132023.GA19891@host0.dyn.jankratochvil.net> References: <20090706081927.GA18324@host0.dyn.jankratochvil.net> <200907071624.n67GO6bj015890@d12av02.megacenter.de.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200907071624.n67GO6bj015890@d12av02.megacenter.de.ibm.com> User-Agent: Mutt/1.5.19 (2009-01-05) 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: 2009-07/txt/msg00235.txt.bz2 On Tue, 07 Jul 2009 18:24:06 +0200, Ulrich Weigand wrote: > Jan Kratochvil wrote: > > @@ -452,8 +452,20 @@ inf_ptrace_xfer_partial (struct target_ops *ops, enum target_object object, > > const gdb_byte *writebuf, > > ULONGEST offset, LONGEST len) > > { > > + struct gdbarch *gdbarch = target_thread_architecture (inferior_ptid); > > + int addr_bit = gdbarch_addr_bit (gdbarch); > > target_thread_architecture is wrong for this purpose; it is the user-visible > architecture to be used for this thread. The architecture to be used for > target (e.g. ptrace) operations is target_gdbarch. > > For example, on an SPU thread on the Cell/B.E. target_thread_architecture might > be SPU, while target_gdbarch is PPC32 or PPC64. ptrace operations need to operate > according to the latter. While thanks for the explanation I believe it should be in the sources. It is mostly your text from: http://sourceware.org/ml/gdb-patches/2008-09/msg00133.html OK to check-in? Thanks, Jan 2009-07-08 Ulrich Weigand Jan Kratochvil * target.h (struct target_ops ): Describe it. (target_thread_architecture): Refer to to_thread_architecture. --- a/gdb/target.h +++ b/gdb/target.h @@ -543,7 +543,16 @@ struct target_ops simultaneously? */ int (*to_supports_multi_process) (void); - /* Determine current architecture of thread PTID. */ + /* Determine current architecture of thread PTID. + + The target is supposed to determine the architecture of the code where + the target is currently stopped at (on Cell, if a target is in spu_run, + to_thread_architecture would return SPU, otherwise PPC32 or PPC64). + This is architecture used to perform decr_pc_after_break adjustment, + and also determines the frame architecture of the innermost frame. + ptrace operations need to operate according to target_gdbarch. + + The default implementation always returns target_gdbarch. */ struct gdbarch *(*to_thread_architecture) (struct target_ops *, ptid_t); int to_magic; @@ -1043,7 +1052,7 @@ extern char *normal_pid_to_str (ptid_t ptid); #define target_pid_to_exec_file(pid) \ (current_target.to_pid_to_exec_file) (pid) -/* Determine current architecture of thread PTID. */ +/* See the to_thread_architecture description in struct target_ops. */ #define target_thread_architecture(ptid) \ (current_target.to_thread_architecture (¤t_target, ptid))