From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5055 invoked by alias); 9 Aug 2007 10:39:50 -0000 Received: (qmail 4893 invoked by uid 22791); 9 Aug 2007 10:39:49 -0000 X-Spam-Check-By: sourceware.org Received: from mtagate6.de.ibm.com (HELO mtagate6.de.ibm.com) (195.212.29.155) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 09 Aug 2007 10:39:43 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate6.de.ibm.com (8.13.8/8.13.8) with ESMTP id l79Ade4p1586292 for ; Thu, 9 Aug 2007 10:39:40 GMT Received: from d12av02.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1607.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v8.4) with ESMTP id l79AddFe2306242 for ; Thu, 9 Aug 2007 12:39:39 +0200 Received: from d12av02.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l79Ada2H019720 for ; Thu, 9 Aug 2007 12:39:36 +0200 Received: from bbkeks.boeblingen.de.ibm.com (dyn-9-152-248-39.boeblingen.de.ibm.com [9.152.248.39]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id l79AdZaC019686 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 9 Aug 2007 12:39:36 +0200 Message-ID: <46BAEE8B.9060907@de.ibm.com> Date: Thu, 09 Aug 2007 10:39:00 -0000 From: Markus Deuling User-Agent: Thunderbird 2.0.0.6 (X11/20070728) MIME-Version: 1.0 To: Ulrich Weigand , Daniel Jacobowitz , Jim Blandy CC: GDB Patches Subject: Re: [rfc] Wrap addresses in spu-gdb References: <200708081411.l78EBqII022771@d12av02.megacenter.de.ibm.com> In-Reply-To: <200708081411.l78EBqII022771@d12av02.megacenter.de.ibm.com> Content-Type: multipart/mixed; boundary="------------020404030806050202040506" 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: 2007-08/txt/msg00175.txt.bz2 This is a multi-part message in MIME format. --------------020404030806050202040506 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1139 Hi, Ulrich Weigand schrieb: > Daniel Jacobowitz wrote: >> On Wed, Aug 08, 2007 at 08:44:29AM +0200, Markus Deuling wrote: >>> + if (target_has_registers && target_has_stack && target_has_memory >>> + /* FIXME: Currently needed for dwarf2_read_address to work. */ >>> + && type != builtin_type_uint32) >> I think that you shouldn't commit a patch with this hack in it. >> It looks very fragile. > > Agreed. Markus, this is a special hack for the combined PPE/SPE > debugger, it shouldn't be necessary for the SPU-standalone (and > mainline) version. > > I'll have to look into fixing the underlying issue cleanly when > merging the combined debugger ... ok, thank you. I attached a patch with a SPU-only version. This can later be replaced by the version suitable for the combined debugger. Tested on spu-elf without regression. ChangeLog: * spu-tdep.c (spu_pointer_to_address): New function. (spu_integer_to_address): Likewise. (spu_gdbarch_init): Add spu_pointer_to_address and spu_integer_to_address to gdbarch. Is this ok to commit? -- Markus Deuling GNU Toolchain for Linux on Cell BE deuling@de.ibm.com --------------020404030806050202040506 Content-Type: text/plain; name="diff-spu-wrap-addr" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diff-spu-wrap-addr" Content-length: 1717 diff -urpN src/gdb/spu-tdep.c dev/gdb/spu-tdep.c --- src/gdb/spu-tdep.c 2007-06-18 05:36:44.000000000 +0200 +++ dev/gdb/spu-tdep.c 2007-08-09 12:13:20.000000000 +0200 @@ -324,6 +324,35 @@ spu_register_reggroup_p (struct gdbarch return default_register_reggroup_p (gdbarch, regnum, group); } +/* Address conversion. */ + +static CORE_ADDR +spu_pointer_to_address (struct type *type, const gdb_byte *buf) +{ + ULONGEST addr = extract_unsigned_integer (buf, TYPE_LENGTH (type)); + ULONGEST lslr = SPU_LS_SIZE - 1; /* Hard-wired LS size. */ + + if (target_has_registers && target_has_stack && target_has_memory) + lslr = get_frame_register_unsigned (get_selected_frame (NULL), + SPU_LSLR_REGNUM); + + return addr & lslr; +} + +static CORE_ADDR +spu_integer_to_address (struct gdbarch *gdbarch, + struct type *type, const gdb_byte *buf) +{ + ULONGEST addr = unpack_long (type, buf); + ULONGEST lslr = SPU_LS_SIZE - 1; /* Hard-wired LS size. */ + + if (target_has_registers && target_has_stack && target_has_memory) + lslr = get_frame_register_unsigned (get_selected_frame (NULL), + SPU_LSLR_REGNUM); + + return addr & lslr; +} + /* Decoding SPU instructions. */ @@ -2008,6 +2037,10 @@ spu_gdbarch_init (struct gdbarch_info in set_gdbarch_double_format (gdbarch, floatformats_ieee_double); set_gdbarch_long_double_format (gdbarch, floatformats_ieee_double); + /* Address conversion. */ + set_gdbarch_pointer_to_address (gdbarch, spu_pointer_to_address); + set_gdbarch_integer_to_address (gdbarch, spu_integer_to_address); + /* Inferior function calls. */ set_gdbarch_call_dummy_location (gdbarch, ON_STACK); set_gdbarch_frame_align (gdbarch, spu_frame_align); --------------020404030806050202040506--