From: Stijn Volckaert <svolckae@elis.ugent.be>
To: linux-kernel@vger.kernel.org
Subject: Re: vdso feature requests from the Go people
Date: Sun, 15 Jun 2014 11:39:14 +0200 [thread overview]
Message-ID: <lnjpkl$2iq$1@ger.gmane.org> (raw)
In-Reply-To: <CALCETrX9Og2LR3d8HZrcn4uGAgLfxbv51LK4Tsq-gDZKGpsjYw@mail.gmail.com>
Andy Lutomirski schreef op 13/06/2014 7:23:
> On Thu, Jun 12, 2014 at 10:15 PM, H. Peter Anvin <hpa@zytor.com> wrote:
>> On 06/12/2014 09:36 PM, Andy Lutomirski wrote:
>>>
>>> If we were to implement both, maybe we'd actually want to provide
>>> something like:
>>>
>>> struct vdso_entry {
>>> unsigned long vdso_entry_struct_size; /* so we can add fields later on */
>>> void *func;
>>> unsigned int max_stack; /* zero if not known */
>>> };
>>>
>>
>> How different is this really from the .dynsym table -- other than that
>> you have to find the latter via the dynamic segment?
>>
>> The hash part is just to speed up lookup...
>
> As far as I know, there's no reliable way to just read the dynsym
> table -- the thing doesn't have a specified length, which is what
> broke Go in the first place.
>
> Parsing the ELF dynamic tables is kind of annoyingly complicated, and
> understanding the format is a real PITA -- the documentation I've been
> able to find is outright terrible.
>
> --Andy
>
Why does it need a specified length? It's pretty easy to find, the
entries have a fixed length and the last entry in the table is NULLed
out (i.e. the d_tag is DT_NULL).
Just look for the PT_DYNAMIC segment in the program headers and iterate
over the fixed length Elf_Dyn entries to find what you're looking for.
As for ELF documentation, I've never had any problems understanding the
official specification:
http://refspecs.linuxbase.org/elf/elf.pdf
--Stijn
next prev parent reply other threads:[~2014-06-15 10:10 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-13 4:36 vdso feature requests from the Go people Andy Lutomirski
2014-06-13 4:46 ` Andy Lutomirski
2014-06-13 5:15 ` H. Peter Anvin
2014-06-13 5:23 ` Andy Lutomirski
2014-06-13 5:39 ` H. Peter Anvin
2014-06-15 9:39 ` Stijn Volckaert [this message]
2014-06-13 5:39 ` H. Peter Anvin
2014-06-13 15:34 ` Andy Lutomirski
2014-06-13 16:03 ` H. Peter Anvin
2014-06-15 10:15 ` Stijn Volckaert
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='lnjpkl$2iq$1@ger.gmane.org' \
--to=svolckae@elis.ugent.be \
--cc=linux-kernel@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.