From: Pedro Alves <palves@redhat.com>
To: "Metzger, Markus T" <markus.t.metzger@intel.com>,
Mark Wielaard <mjw@redhat.com>,
Cary Coutant <ccoutant@google.com>,
Doug Evans <dje@google.com>,
"gdb@sourceware.org" <gdb@sourceware.org>,
"binutils@sourceware.org" <binutils@sourceware.org>
Subject: Re: vdso handling
Date: Fri, 21 Mar 2014 15:48:00 -0000 [thread overview]
Message-ID: <532C5F60.80700@redhat.com> (raw)
In-Reply-To: <20140320013305.GA13347@bubble.grove.modra.org>
On 03/20/2014 01:33 AM, Alan Modra wrote:
> On Wed, Mar 19, 2014 at 12:03:40PM +0000, Pedro Alves wrote:
>> On 03/18/2014 11:09 PM, Alan Modra wrote:
>>> I don't think this is a good idea. If/when bfd_from_remote_memory is
>>> used for something other than the linux kernel vdso, we can't assume
>>> the section headers are loaded.
>>
>> I wonder what use cases are these though. It'd be odd to me to
>> load the elf headers, but not all that the headers point at.
>
> Well, no, the section headers are part of the linking view. The ELF
> file header points at their *file offset*. Thinking it odd that they
> are not loaded is exactly the same as thinking it odd that .comment is
> not loaded!
:-) Sorry, I get that, but I was somehow assuming the elf header
wasn't itself covered by a PT_LOAD. Rookie mistake...
>> Sounds like we should just make that a requirement?
>
> You indeed could make that a requirement, but it'd mean that object
> files loaded by glibc ld.so would not satisfy the requirement.
Indeed. So this mechanism could be further extended in future
to be able to read DSOs out of memory, and be able to retrieve
the dynamic symbol table, etc., which would allow getting at
unwind info for already-deleted libraries. I guess that's what
the elfutils folks had been talking about, but I somehow managed
to not connect the dots. :-)
I just tried pointing add-symbol-file-from-memory at an already
mapped DSO's elf header, but it doesn't work as is unfortunately:
(gdb) info shared curses
0x000000324d006d20 0x000000324d01df58 Yes /lib64/libncurses.so.5
(gdb) x /4b 0x000000324d000000
0x324d000000: 127 69 76 70
(gdb) add-symbol-file-from-memory 0x000000324d000000
Failed to read a valid object file image from memory.
I single stepped a little through
bfd_elf_bfd_from_remote_memory - something goes wrong with the
reading of the load segment contents, probably something wrong
with the address computations.
>
> Taking Markus' vdso as an example, the PT_LOAD header covers file
> offsets from 0 to 0xffd and page size is 0x1000. If ld.so were
> loading a similar image, it would just load in 0 to 0xfff (assuming
> ld.so's dl_pagesize is also 0x1000). The section headers are at file
> offset 0x10e0 so would miss being loaded. Nor should they be loaded,
> since they are completely extraneous to executing the image it would
> be foolish to waste another page to load them.
*nod*
>> "This command may not really be worth having, but it serves to exercise the
>> underlying function symbol_file_add_from_memory. That function does the
>> work of reading symbols and unwind info from the Linux vsyscall DSO."
>
> Heh, OK, so don't let my comments about more general uses of
> bfd_from_remote_memory get in your way of fixing this problem.
Hmm. Thinking further ahead, it would be good to make GDB be able
to read deleted DSOs off of memory like elfutils is now doing.
With that in mind, it does seem to make sense to have this
bfd_elf_bfd_from_remote_memory code in place as is, but extend it to
treat section-less elfs just like cores, creating pseudo bfd
sections from segments...
--
Pedro Alves
prev parent reply other threads:[~2014-03-21 15: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
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 [this message]
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=532C5F60.80700@redhat.com \
--to=palves@redhat.com \
--cc=binutils@sourceware.org \
--cc=ccoutant@google.com \
--cc=dje@google.com \
--cc=gdb@sourceware.org \
--cc=markus.t.metzger@intel.com \
--cc=mjw@redhat.com \
/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