From: "Maciej W. Rozycki" <macro@imgtec.com>
To: Michael Matz <matz@suse.de>
Cc: "H.J. Lu" <hjl.tools@gmail.com>, Alan Modra <amodra@gmail.com>,
Richard Biener <richard.guenther@gmail.com>,
Jeff Law <law@redhat.com>, Cary Coutant <ccoutant@gmail.com>,
Joe Groff <jgroff@apple.com>, Binutils <binutils@sourceware.org>,
GCC <gcc@gcc.gnu.org>
Subject: Re: Preventing preemption of 'protected' symbols in GNU ld 2.26 [aka should we revert the fix for 65248]
Date: Mon, 18 Apr 2016 17:57:00 -0000 [thread overview]
Message-ID: <alpine.DEB.2.00.1604181831410.21846@tp.orcam.me.uk> (raw)
In-Reply-To: <alpine.LSU.2.20.1604181918110.20277@wotan.suse.de>
On Mon, 18 Apr 2016, Michael Matz wrote:
> E.g. one limitation might very well be that function pointer comparison
> for protected functions doesn't work (gives different outcomes if the
> pointer is built from inside the exe or from a shared lib). (No matter
> how it's built, it will still _work_ when called). Alternatively we can
> make comparison work (by using the exe PLT slot), in which case Alans
> testcase will need more complications to show that protected visibility
> currently is broken. Alans testcase will work right now (as in showing
> protected being broken) on data symbols.
The way it works in the original MIPS SVR4 psABI is by using the relevant
GOT entry's contents as the pointer, disabling lazy binding for any
function symbols whose value is used as data rather than to make a call
(no lazy binding stub is simply produced). It's easy in that psABI
because all code is PIC, even in executables -- which fulfils Cary's
earlier postulate for protected symbol accesses.
For non-PIC code the necessary arrangement can be made by the compiler
based on symbol annotation (also proposed by Cary), or failing that a
link-time fixup can be made, possibly branching to a thunk generated out
of line if the sequence required to load a GOT entry is longer than the
original absolute sequence (proposed by Alan). I think this approach
should work with x86 even, as its branch instruction has a single-byte
opcode and a signed 32-bit span, so it certainly does not require more
code space than any relocated instruction using the absolute or
PC-relative addressing mode.
Maciej
next prev parent reply other threads:[~2016-04-18 17:57 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <AB592ABD-D6D7-4D2F-A0D6-45738F168DC4@apple.com>
2016-03-29 19:31 ` Fwd: Preventing preemption of 'protected' symbols in GNU ld 2.26 Joe Groff
2016-03-29 19:33 ` H.J. Lu
2016-03-29 19:36 ` Joe Groff
2016-03-29 19:43 ` H.J. Lu
2016-03-29 19:51 ` Joe Groff
2016-03-29 19:54 ` H.J. Lu
2016-03-29 22:05 ` H.J. Lu
2016-03-30 1:44 ` Alan Modra
2016-03-30 1:46 ` Cary Coutant
2016-03-30 4:04 ` Jeff Law
2016-03-30 7:20 ` Cary Coutant
2016-03-30 7:34 ` Cary Coutant
2016-03-30 14:44 ` Alan Modra
2016-03-31 0:45 ` Cary Coutant
2016-04-15 21:49 ` Preventing preemption of 'protected' symbols in GNU ld 2.26 [aka should we revert the fix for 65248] Jeff Law
2016-04-15 21:56 ` H.J. Lu
2016-04-18 9:02 ` Richard Biener
2016-04-18 14:49 ` Alan Modra
2016-04-18 14:59 ` H.J. Lu
2016-04-18 17:04 ` Maciej W. Rozycki
2016-04-18 17:09 ` H.J. Lu
2016-04-18 17:24 ` Michael Matz
2016-04-18 17:27 ` H.J. Lu
2016-04-18 18:52 ` Jakub Jelinek
2016-04-18 19:28 ` H.J. Lu
2016-04-18 17:55 ` Cary Coutant
2016-04-25 17:24 ` Jeff Law
2016-04-25 17:31 ` H.J. Lu
2016-04-18 17:57 ` Maciej W. Rozycki [this message]
2016-04-19 5:08 ` Alan Modra
2016-04-19 8:20 ` Richard Biener
2016-04-19 9:53 ` Szabolcs Nagy
2016-04-19 14:06 ` Michael Matz
2016-04-19 15:37 ` Cary Coutant
2016-04-19 15:44 ` H.J. Lu
2016-04-19 15:52 ` H.J. Lu
2016-04-19 15:54 ` H.J. Lu
2016-04-19 15:58 ` Cary Coutant
2016-04-19 16:00 ` H.J. Lu
2016-04-19 15:54 ` Cary Coutant
2016-04-19 19:11 ` H.J. Lu
2016-04-19 20:17 ` Rich Felker
2016-04-19 21:03 ` Cary Coutant
2016-04-20 17:45 ` anonymous
2016-04-19 15:46 ` Alan Modra
2016-04-25 17:35 ` Jeff Law
2016-04-26 5:55 ` Alan Modra
2016-04-26 8:13 ` Jakub Jelinek
2016-04-18 17:05 ` Cary Coutant
2016-03-31 0:40 ` Preventing preemption of 'protected' symbols in GNU ld 2.26 Cary Coutant
2016-03-31 0:53 ` Jeff Law
2016-03-31 13:27 ` Ramana Radhakrishnan
2016-03-31 15:05 ` H.J. Lu
2016-04-15 16:10 ` Szabolcs Nagy
2016-04-01 19:51 ` Jeff Law
2016-04-02 2:53 ` Alan Modra
2016-04-19 19:47 ` Fwd: " Rich Felker
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=alpine.DEB.2.00.1604181831410.21846@tp.orcam.me.uk \
--to=macro@imgtec.com \
--cc=amodra@gmail.com \
--cc=binutils@sourceware.org \
--cc=ccoutant@gmail.com \
--cc=gcc@gcc.gnu.org \
--cc=hjl.tools@gmail.com \
--cc=jgroff@apple.com \
--cc=law@redhat.com \
--cc=matz@suse.de \
--cc=richard.guenther@gmail.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).