From: "Metzger, Markus T" <markus.t.metzger@intel.com>
To: Alan Modra <amodra@gmail.com>, Pedro Alves <palves@redhat.com>
Cc: 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 08:10:00 -0000 [thread overview]
Message-ID: <A78C989F6D9628469189715575E55B230AAC76FB@IRSMSX104.ger.corp.intel.com> (raw)
In-Reply-To: <20140320013305.GA13347@bubble.grove.modra.org>
> -----Original Message-----
> From: Alan Modra [mailto:amodra@gmail.com]
> Sent: Thursday, March 20, 2014 2:33 AM
> 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!
>
> > 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.
>
> 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.
>
> > "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, if you only want to read vdsos then bfd_from_remote_memory is way
> overengineered. In fact, I think it could disappear entirely.
> If you can find the extent of the vdso in gdb, then all of the ELF
> version of bfd_from_remote_memory prior to allocating the bim is
> unnecessary, because all that code really does is find the extent.
> So the tail of bfd_from_remote_memory moves to bfd/opncls.c as
> (totally untested):
>
> bfd_boolean
> bfd_openr_bim (bfd *templ, void *contents, size_t contents_size)
> {
> struct bfd_in_memory *bim;
>
> bim = (struct bfd_in_memory *) bfd_malloc (sizeof (struct
> bfd_in_memory));
> if (bim == NULL)
> return NULL;
>
> nbfd = _bfd_new_bfd ();
> if (nbfd == NULL)
> {
> free (bim);
> return NULL;
> }
> nbfd->filename = "<in-memory>";
> if (templ != NULL)
> nbfd->xvec = templ->xvec;
> bim->size = contents_size;
> bim->buffer = (bfd_byte *) contents;
> nbfd->iostream = bim;
> nbfd->flags = BFD_IN_MEMORY;
> nbfd->iovec = &_bfd_memory_iovec;
> nbfd->origin = 0;
> nbfd->direction = read_direction;
> nbfd->mtime = time (NULL);
> nbfd->mtime_set = TRUE;
> return nbfd;
> }
>
> gdb is then responsible for filling in "contents" and determining
> "contents_size", which presumably can be done in the same way as
> you did in https://sourceware.org/ml/binutils/2014-03/msg00130.html
> The loadbase calculation also moves to gdb, which shouldn't be too
> hard. Note that "templ" above is optional, which allows you to get
> rid of
> /* FIXME: cagney/2004-05-06: Should not require an existing
> BFD when trying to create a run-time BFD of the VSYSCALL
I was waiting for Pedro to reply but he didn't.
This would move the ELF processing itself into GDB. That sounds a bit
odd to me but it seems GDB already does a fair amount of ELF reading.
Pedro, are you OK with this? Will you accept a patch that goes into
the direction that Alan described above?
Thanks,
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-21 8:10 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 [this message]
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=A78C989F6D9628469189715575E55B230AAC76FB@IRSMSX104.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 \
--cc=mjw@redhat.com \
--cc=palves@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