From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20079 invoked by alias); 26 Jul 2004 20:57:42 -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 20067 invoked from network); 26 Jul 2004 20:57:41 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sourceware.org with SMTP; 26 Jul 2004 20:57:41 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.10/8.12.10) with ESMTP id i6QKvfe1030652 for ; Mon, 26 Jul 2004 16:57:41 -0400 Received: from pobox.corp.redhat.com (pobox.corp.redhat.com [172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id i6QKvfa26328; Mon, 26 Jul 2004 16:57:41 -0400 Received: from [172.16.50.42] (vpn50-42.rdu.redhat.com [172.16.50.42]) by pobox.corp.redhat.com (8.12.8/8.12.8) with ESMTP id i6QKveSS017580; Mon, 26 Jul 2004 16:57:40 -0400 Subject: Re: [RFA] read_reg() patch From: "Martin M. Hunt" To: Mark Kettenis Cc: gdb-patches@sources.redhat.com In-Reply-To: <200407212036.i6LKaE0V009860@copland.kettenis.dyndns.org> References: <1090351011.3030.12.camel@dragon> <200407212036.i6LKaE0V009860@copland.kettenis.dyndns.org> Content-Type: multipart/mixed; boundary="=-f6Z+uCFg78e3DBcgcYL8" Organization: Red Hat Inc. Message-Id: <1090875453.3021.2.camel@dragon> Mime-Version: 1.0 Date: Mon, 26 Jul 2004 20:57:00 -0000 X-SW-Source: 2004-07/txt/msg00381.txt.bz2 --=-f6Z+uCFg78e3DBcgcYL8 Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 357 > I also think that the code itself is pretty unreadable. There are too > many nested function calls. I think it could be improved by using a > (temporary) local variable to store the result of > extract_unsigned_integer(). How's this? 2004-07-26 Martin Hunt * dwarf2-frame.c (read_reg): Add a call to store_unsigned_integer. --=-f6Z+uCFg78e3DBcgcYL8 Content-Disposition: attachment; filename=read_reg.patch Content-Type: text/x-patch; name=read_reg.patch; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-length: 1039 Index: dwarf2-frame.c =================================================================== RCS file: /cvs/src/src/gdb/dwarf2-frame.c,v retrieving revision 1.38 diff -u -p -r1.38 dwarf2-frame.c --- dwarf2-frame.c 23 Jul 2004 22:05:20 -0000 1.38 +++ dwarf2-frame.c 26 Jul 2004 20:54:39 -0000 @@ -209,11 +209,20 @@ read_reg (void *baton, int reg) struct gdbarch *gdbarch = get_frame_arch (next_frame); int regnum; char *buf; + CORE_ADDR tmp; regnum = DWARF2_REG_TO_REGNUM (reg); buf = (char *) alloca (register_size (gdbarch, regnum)); frame_unwind_register (next_frame, regnum, buf); + + /* This extracts the least significant register_size() bits and + extends it to the size of a pointer. Without this, big-endian + targets where pointer size != register size breaks. */ + tmp = extract_unsigned_integer (buf, register_size (gdbarch, regnum)); + store_unsigned_integer (buf, TYPE_LENGTH (builtin_type_void_data_ptr), + tmp); + return extract_typed_address (buf, builtin_type_void_data_ptr); } --=-f6Z+uCFg78e3DBcgcYL8--