From: "Metzger, Markus T" <markus.t.metzger@intel.com>
To: Alan Modra <amodra@gmail.com>, Cary Coutant <ccoutant@google.com>
Cc: Doug Evans <dje@google.com>,
"gdb@sourceware.org" <gdb@sourceware.org>,
"binutils@sourceware.org" <binutils@sourceware.org>
Subject: RE: vdso handling
Date: Thu, 13 Mar 2014 09:48:00 -0000 [thread overview]
Message-ID: <A78C989F6D9628469189715575E55B230AA9F2B0@IRSMSX103.ger.corp.intel.com> (raw)
In-Reply-To: <A78C989F6D9628469189715575E55B230AA9CDCB@IRSMSX103.ger.corp.intel.com>
> -----Original Message-----
> From: Metzger, Markus T
> Sent: Thursday, March 13, 2014 9:24 AM
> > On Wed, Mar 12, 2014 at 01:22:58PM -0700, Cary Coutant wrote:
> > > > I think a case can be made that gdb should be able to use the
> > > > "execution view" of the program here.
> > > > As for how to achieve that ... "Discuss." :-)
> > >
> > > Add a PT_DEBUG program header entry? The PT_DEBUG segment would
> > need
> > > to have a small header that allows the debugger to find .debug_abbrev,
> > > .debug_info, etc. (i.e., a mini section table). Or, just add
> > > individual program header entries for each of the standard debug
> > > sections: PT_DEBUG_ABBREV, PT_DEBUG_INFO, etc.
> >
> > Debug sections are not normally loaded. For that reason I don't think
> > it makes any sense to specify program headers for them. It wouldn't
> > help in the vdso case anyway, since the problem there is that you only
> > have the loaded part of the original ELF file.
>
> The vdso contains a section table, as well. When I hack
> bfd_from_remote_memory to create BFD sections from them similar
> to what elf_object_p does, I get the target sections that I wanted in GDB.
> The patch is rather big, though, and duplicating a lot of elf_object_p's code.
>
> I have not tried generating fake sections from segments, yet.
This turned out to be rather simple. Is this the right direction to go?
Should I maybe restrict this to PT_LOAD segments?
diff --git a/bfd/elfcode.h b/bfd/elfcode.h
index 20101be..22aae2a 100644
--- a/bfd/elfcode.h
+++ b/bfd/elfcode.h
@@ -1771,7 +1771,6 @@ NAME(_bfd_elf,bfd_from_remote_memory)
return NULL;
}
}
- free (x_phdrs);
/* If the segments visible in memory didn't include the section headers,
then clear them from the file header. */
@@ -1791,6 +1790,7 @@ NAME(_bfd_elf,bfd_from_remote_memory)
bim = (struct bfd_in_memory *) bfd_malloc (sizeof (struct bfd_in_memory));
if (bim == NULL)
{
+ free (x_phdrs);
free (contents);
bfd_set_error (bfd_error_no_memory);
return NULL;
@@ -1799,6 +1799,7 @@ NAME(_bfd_elf,bfd_from_remote_memory)
if (nbfd == NULL)
{
free (bim);
+ free (x_phdrs);
free (contents);
bfd_set_error (bfd_error_no_memory);
return NULL;
@@ -1815,6 +1816,12 @@ NAME(_bfd_elf,bfd_from_remote_memory)
nbfd->mtime = time (NULL);
nbfd->mtime_set = TRUE;
+ /* Add fake sections for program headers. We ignore errors. */
+ for (i = 0; i < i_ehdr.e_phnum; ++i)
+ (void) bfd_section_from_phdr (nbfd, &i_phdrs[i], i);
+
+ free (x_phdrs);
+
if (loadbasep)
*loadbasep = loadbase;
return nbfd;
regards,
markus.
Intel GmbH
Dornacher Strasse 1
85622 Feldkirchen/Muenchen, Deutschland
Sitz der Gesellschaft: Feldkirchen bei Muenchen
Geschaeftsfuehrer: Christian Lamprechter, Hannes Schwaderer, Douglas Lusk
Registergericht: Muenchen HRB 47456
Ust.-IdNr./VAT Registration No.: DE129385895
Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052
next prev parent reply other threads:[~2014-03-13 9:48 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-10 13:05 Metzger, Markus T
2014-03-12 7:17 ` Alan Modra
2014-03-12 11:31 ` Mike Frysinger
2014-03-12 17:34 ` Doug Evans
2014-03-12 20:23 ` Cary Coutant
2014-03-13 1:01 ` Alan Modra
2014-03-13 8:25 ` Metzger, Markus T
2014-03-13 9:48 ` Metzger, Markus T [this message]
2014-03-13 10:07 ` Pedro Alves
2014-03-13 10:46 ` Pedro Alves
2014-06-01 20:32 ` Samuel Bronson
2014-06-06 12:45 ` Pedro Alves
2014-03-13 13:13 ` Alan Modra
2014-03-13 9:52 ` Mark Wielaard
2014-03-13 13:03 ` Alan Modra
2014-03-13 14:38 ` Mark Wielaard
2014-03-13 14:59 ` Pedro Alves
2014-03-13 15:04 ` Pedro Alves
2014-03-13 15:26 ` Pedro Alves
2014-03-13 23:53 ` Alan Modra
2014-03-18 15:14 ` Metzger, Markus T
2014-03-18 23:10 ` Alan Modra
2014-03-19 8:11 ` Metzger, Markus T
2014-03-19 8:31 ` Metzger, Markus T
2014-03-19 12:04 ` Pedro Alves
2014-03-20 2:00 ` Alan Modra
2014-03-21 15:55 ` Pedro Alves
2014-03-26 9:32 ` Metzger, Markus T
2014-03-19 12:03 ` Pedro Alves
2014-03-20 1:33 ` Alan Modra
2014-03-21 8:10 ` Metzger, Markus T
2014-03-21 15:48 ` Pedro Alves
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=A78C989F6D9628469189715575E55B230AA9F2B0@IRSMSX103.ger.corp.intel.com \
--to=markus.t.metzger@intel.com \
--cc=amodra@gmail.com \
--cc=binutils@sourceware.org \
--cc=ccoutant@google.com \
--cc=dje@google.com \
--cc=gdb@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