public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "corinna at vinschen dot de" <sourceware-bugzilla@sourceware.org>
To: gdb-prs@sourceware.org
Subject: [Bug win32/18027] dwarf2 debug info after rebasing DLLs unusable
Date: Fri, 21 Apr 2023 19:48:01 +0000	[thread overview]
Message-ID: <bug-18027-4717-IgWplFpCJN@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-18027-4717@http.sourceware.org/bugzilla/>

https://sourceware.org/bugzilla/show_bug.cgi?id=18027

--- Comment #29 from Corinna Vinschen <corinna at vinschen dot de> ---
(In reply to Tom Tromey from comment #27)
> Another oddity is that the .text section says:
> 
> Idx Name          Size      VMA               LMA               File off 
> Algn
>   0 .text         00000648  0000000300001000  0000000300001000  00000600 
> 2**4
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE, DATA
> 
> The VMA is offset by 0x1000.

No, the VMA is correct.  Please keep in mind that the PE/COFF file has a
leading 4K block, the file header.  The file header is loaded into the
address space together with all other sections.  ImageBase is the address
of the PE/COFF file header, NOT the address of the .text section.

> So my function to compute the offset also says that:
> 
> (top-gdb) print/x pe_rebase_offset(abfd)
> $12 = 0x300001000
> 
> Does this matter?  I don't know... but each section has a different offset
> here, so if it does matter, then we'd have to know which section each
> DWARF entity comes from.

Using the .text address is wrong.  The address where the image gets loaded to
is in the PE header header and the entry is called image_base.  It should
be available via bfd, shouldn't it?
If not, assuming you map the file into memory at address ADDR, then you can
use Windows definitions to access ImageBase (example for x86_64):

  IMAGE_DOS_HEADER *dos_hdr = (IMAGE_DOS_HEADER *) ADDR;
  IMAGE_NT_HEADERS64 *nt_hdr = (BYTE *) dos_hdr + dos-hdr->e_lfanew;
  ULONGLONG image_base = nt_hdr->OptionalHeader.ImageBase;

The orginal, pre-rebase image_base value is a 32 or 64 bit value in the newly
defined .debug_pe_defaddr section.

So the offset is just the difference between the above current image_base
from the file header and the value stored in the .debug_pe_defaddr


HTH,
Corinna

-- 
You are receiving this mail because:
You are on the CC list for the bug.

  parent reply	other threads:[~2023-04-21 19:48 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-26  5:36 [Bug win32/18027] New: " corinna at vinschen dot de
2015-02-26  9:39 ` [Bug win32/18027] " asmwarrior at gmail dot com
2023-02-11 17:48 ` tromey at sourceware dot org
2023-02-12 12:20 ` ssbssa at sourceware dot org
2023-02-13 10:31 ` corinna at vinschen dot de
2023-02-13 10:36 ` corinna at vinschen dot de
2023-02-13 14:01 ` simark at simark dot ca
2023-02-13 16:17 ` corinna at vinschen dot de
2023-02-13 17:13 ` simark at simark dot ca
2023-02-13 17:24 ` ssbssa at sourceware dot org
2023-02-13 19:23 ` tromey at sourceware dot org
2023-02-13 19:46 ` ssbssa at sourceware dot org
2023-02-13 19:48 ` corinna at vinschen dot de
2023-02-13 22:08 ` tromey at sourceware dot org
2023-02-15 10:22 ` corinna at vinschen dot de
2023-02-17  2:15 ` tromey at sourceware dot org
2023-02-28 14:43 ` tromey at sourceware dot org
2023-02-28 15:20 ` corinna at vinschen dot de
2023-02-28 15:22 ` corinna at vinschen dot de
2023-03-24 17:31 ` tromey at sourceware dot org
2023-03-24 19:00 ` corinna at vinschen dot de
2023-03-27  9:19 ` nickc at redhat dot com
2023-03-28  8:58 ` corinna at vinschen dot de
2023-03-28 14:01 ` nickc at redhat dot com
2023-03-28 18:10 ` corinna at vinschen dot de
2023-03-29 12:46 ` tromey at sourceware dot org
2023-03-30  9:23 ` corinna at vinschen dot de
2023-03-30  9:24 ` corinna at vinschen dot de
2023-04-21 16:38 ` tromey at sourceware dot org
2023-04-21 16:54 ` tromey at sourceware dot org
2023-04-21 17:11 ` tromey at sourceware dot org
2023-04-21 19:48 ` corinna at vinschen dot de [this message]
2023-04-24 15:54 ` tromey at sourceware dot org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-18027-4717-IgWplFpCJN@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=gdb-prs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).