From: Segher Boessenkool <segher@kernel.crashing.org>
To: Nicholas Piggin <npiggin@gmail.com>
Cc: Adhemerval Zanella <adhemerval.zanella@linaro.org>,
Rich Felker <dalias@libc.org>,
libc-alpha@sourceware.org, musl@lists.openwall.com,
binutils@sourceware.org, Andy Lutomirski <luto@kernel.org>,
libc-dev@lists.llvm.org, Thomas Gleixner <tglx@linutronix.de>,
Vincenzo Frascino <vincenzo.frascino@arm.com>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: New powerpc vdso calling convention
Date: Tue, 5 May 2020 16:56:24 -0500 [thread overview]
Message-ID: <20200505215624.GP31009@gate.crashing.org> (raw)
In-Reply-To: <1588126678.zjwj4d1d90.astroid@bobo.none>
Hi!
On Wed, Apr 29, 2020 at 12:39:22PM +1000, Nicholas Piggin wrote:
> Excerpts from Adhemerval Zanella's message of April 27, 2020 11:09 pm:
> >> Right, I'm just talking about those comments -- it seems like the kernel
> >> vdso should contain an .opd section with function descriptors in it for
> >> elfv1 calls, rather than the hack it has now of creating one in the
> >> caller's .data section.
> >>
> >> But all that function descriptor code is gated by
> >>
> >> #if (defined(__PPC64__) || defined(__powerpc64__)) && _CALL_ELF != 2
> >>
> >> So it seems PPC32 does not use function descriptors but a direct pointer
> >> to the entry point like PPC64 with ELFv2.
> >
> > Yes, this hack is only for ELFv1. The missing ODP has not been an issue
> > or glibc because it has been using the inline assembly to emulate the
> > functions call since initial vDSO support (INTERNAL_VSYSCALL_CALL_TYPE).
> > It just has become an issue when I added a ifunc optimization to
> > gettimeofday so it can bypass the libc.so and make plt branch to vDSO
> > directly.
>
> I can't understand if it's actually a problem for you or not.
>
> Regardless if you can hack around it, it seems to me that if we're going
> to add sane calling conventions to the vdso, then we should also just
> have a .opd section for it as well, whether or not a particular libc
> requires it.
An OPD ("official procedure descriptor") is required for every function,
to have proper C semantics, so that pointers to functions (which are
pointers to descriptors, in fact) are unique. You can "manually" make
descriptors just fine, and use those to call functions -- but you cannot
(in general) use a pointer to such a "fake" descriptor as the "id" of
the function.
The way the ABIs define the OPDs makes them guaranteed unique.
Segher
next prev parent reply other threads:[~2020-05-05 21:57 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-25 5:22 Nicholas Piggin
2020-04-25 5:40 ` [musl] " Rich Felker
2020-04-25 7:47 ` Christophe Leroy
2020-04-25 10:56 ` Nicholas Piggin
2020-04-25 12:20 ` Christophe Leroy
2020-04-25 22:58 ` Nicholas Piggin
2020-04-25 23:11 ` Rich Felker
2020-04-26 3:41 ` Nicholas Piggin
2020-04-27 13:09 ` Adhemerval Zanella
2020-04-29 2:39 ` Nicholas Piggin
2020-04-29 12:15 ` Adhemerval Zanella
2020-05-05 21:56 ` Segher Boessenkool [this message]
2020-04-25 16:22 ` [musl] " Rich Felker
2020-04-25 23:07 ` Nicholas Piggin
2020-04-30 2:51 ` 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=20200505215624.GP31009@gate.crashing.org \
--to=segher@kernel.crashing.org \
--cc=adhemerval.zanella@linaro.org \
--cc=binutils@sourceware.org \
--cc=dalias@libc.org \
--cc=libc-alpha@sourceware.org \
--cc=libc-dev@lists.llvm.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=luto@kernel.org \
--cc=musl@lists.openwall.com \
--cc=npiggin@gmail.com \
--cc=tglx@linutronix.de \
--cc=vincenzo.frascino@arm.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).