From: Segher Boessenkool <segher@kernel.crashing.org>
To: Joe Lawrence <joe.lawrence@redhat.com>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: vdso function descriptors (VDS64_HAS_DESCRIPTORS)?
Date: Sat, 22 Feb 2020 18:07:15 -0600 [thread overview]
Message-ID: <20200223000715.GW22482@gate.crashing.org> (raw)
In-Reply-To: <20200217160852.GA9557@redhat.com>
On Mon, Feb 17, 2020 at 11:08:52AM -0500, Joe Lawrence wrote:
> I was wondering if there was history behind VDS64_HAS_DESCRIPTORS and in
> what cases would one want to turn them on? (Note, I'm assuming they are
> an implementation of Function Descriptors. [1])
It's from the very first patch implementing VDSOs for powerpc, which
says:
commit 86b67fe764e9e54443226a3a0b298f650588d6c5
Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: Fri Mar 4 17:33:32 2005 -0800
[PATCH] ppc64: Implement a vDSO and use it for signal trampoline
[...]
Note that
the symbols exposed by the vDSO aren't "normal" function symbols, apps
can't be expected to link against them directly, the vDSO's are both seen
as if they were linked at 0 and the symbols just contain offsets to the
various functions. This is done on purpose to avoid a relocation step
(ppc64 functions normally have descriptors with abs addresses in them).
When glibc uses those functions, it's expected to use it's own trampolines
that know how to reach them.
so already then this was unused code, presumably it was just used during
development.
> arch/powerpc/include/asm/vdso.h unsets the macro:
>
> /* Define if 64 bits VDSO has procedure descriptors */
> #undef VDS64_HAS_DESCRIPTORS
>
> so I don't believe they are ever used by default -- in this case
> V_FUNCTION_BEGIN doesn't add to the .opd section with .name, .TOC base,
> etc.
>
> Manually setting VDS64_HAS_DESCRIPTORS results in a vdso64.so in which
> binutils tools like readelf properly report functions with symbol type
> FUNC instead of NOTYPE.
>
> Are there pieces of the build/etc toolchain unprepared for function
> descriptors? I'm just trying to figure out why the code defaults to
> unsetting them.
Because direct calls are faster than indirect calls? Ben might have a
fuller explanation, cc:ing him.
Segher
next prev parent reply other threads:[~2020-02-23 0:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-17 16:08 vdso function descriptors (VDS64_HAS_DESCRIPTORS)? Joe Lawrence
2020-02-23 0:07 ` Segher Boessenkool [this message]
2020-02-24 10:17 ` Benjamin Herrenschmidt
2020-02-24 15:20 ` Joe Lawrence
2020-02-24 15:34 ` Benjamin Herrenschmidt
2020-02-24 21:18 ` [PATCH] powerpc/vdso: remove deprecated VDS64_HAS_DESCRIPTORS references Joe Lawrence
2020-02-24 23:37 ` Michael Ellerman
2020-03-17 13:14 ` Michael Ellerman
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=20200223000715.GW22482@gate.crashing.org \
--to=segher@kernel.crashing.org \
--cc=joe.lawrence@redhat.com \
--cc=linuxppc-dev@lists.ozlabs.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 NNTP newsgroup(s).