From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32486 invoked by alias); 7 Dec 2012 17:49:43 -0000 Received: (qmail 32460 invoked by uid 22791); 7 Dec 2012 17:49:40 -0000 X-SWARE-Spam-Status: No, hits=-7.1 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,MISSING_HEADERS,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 07 Dec 2012 17:49:30 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id qB7HnNF4025702 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 7 Dec 2012 12:49:23 -0500 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id qB7HnKln010031; Fri, 7 Dec 2012 12:49:21 -0500 Message-ID: <50C22C20.8090906@redhat.com> Date: Fri, 07 Dec 2012 17:49:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 CC: Pierre Muller , "'asmwarrior'" , "'Joel Brobecker'" , "'Eli Zaretskii'" , gdb-patches@sourceware.org Subject: Re: [RFC-v5] Fix .text section offset for windows DLL (was Calling __stdcall functions in the inferior) References: <20121024194517.GK3555@adacore.com> <011901cdb2ab$48076b90$d81642b0$@muller@ics-cnrs.unistra.fr> <20121105171121.GA2972@adacore.com> <50991f5f.8382440a.1100.ffff82abSMTPIN_ADDED@mx.google.com> <509ABA17.30507@redhat.com> <000301cdbd96$f5cd9f10$e168dd30$@muller@ics-cnrs.unistra.fr> <20121122173019.GF9964@adacore.com> <15690.5992342674$1353883881@news.gmane.org> <87624si9ur.fsf@fleche.redhat.com> <001501cdccaf$ad85e9b0$0891bd10$@muller@ics-cnrs.unistra.fr> <20121207071035.GG31477@adacore.com> <50C20A66.70002@gmail.com> <29545.4593528577$1354894901@news.gmane.org> <50C21696.7040006@gmail.com> <50c21914.a750420a.2ec3.ffffe4ffSMTPIN_ADDED_BROKEN@mx.google.com> <50C222D5.4000802@redhat.com> In-Reply-To: <50C222D5.4000802@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit 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: 2012-12/txt/msg00193.txt.bz2 On 12/07/2012 05:09 PM, Pedro Alves wrote: > I haven't tried to grok the patch, but Kai tells me that a section name in PE headers > are stored in 8 character arrays, and are not necessarily zero-terminated. > He was wondering, and now I am too, if it wouldn't be possible to make use > of bfd routines to get at the necessary info, like the .text section offset. > E.g., bfd handles the long section name PE extension to coff (see coffcode.h in > bfd), though I'm not sure that needs to apply here. Hmm, looking at: > @@ -387,15 +391,21 @@ windows_xfer_shared_library (const char* > struct gdbarch *gdbarch, struct obstack *obstack) > { > char *p; > + struct bfd * dll; > + CORE_ADDR text_offset; > + > obstack_grow_str (obstack, " p = xml_escape_text (so_name); > obstack_grow_str (obstack, p); > xfree (p); > obstack_grow_str (obstack, "\"> - /* The symbols in a dll are offset by 0x1000, which is the > - offset from 0 of the first byte in an image - because of the file > - header and the section alignment. */ > - obstack_grow_str (obstack, paddress (gdbarch, load_addr + 0x1000)); > + dll = gdb_bfd_open_maybe_remote (so_name); > + /* The following calls are OK even if dll is NULL. > + The default value 0x1000 is returned by pe_text_section_offset > + in that case. */ > + text_offset = pe_text_section_offset (dll); > + gdb_bfd_unref (dll); I notice that this only handles native debugging. GDBserver also does the 0x1000 add, see win32-low.c:handle_load_dll. So I'm now actually thinking if the opposite direction may be better. That is, make pe_text_section_offset completely independent of bfd (which it almost is), and put it in a file under common/ so that gdbserver can use it too. -- Pedro Alves