public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Sriraman Tallam <tmsriram@google.com>
To: Sriraman Tallam <tmsriram@google.com>,
	GCC Patches <gcc-patches@gcc.gnu.org>,
		"H.J. Lu" <hjl.tools@gmail.com>, David Li <davidxl@google.com>
Subject: Re: [RFC][PATCH][X86_64] Eliminate PLT stubs for specified external functions via -fno-plt=
Date: Fri, 01 May 2015 03:26:00 -0000	[thread overview]
Message-ID: <CAAs8Hmw81manxkTZ=Tf99qwea0oBSbAd8oRfg7QsoSNXYoz_=w@mail.gmail.com> (raw)
In-Reply-To: <20150501032132.GA4302@bubble.grove.modra.org>

On Thu, Apr 30, 2015 at 8:21 PM, Alan Modra <amodra@gmail.com> wrote:
> On Thu, Apr 30, 2015 at 05:31:30PM -0700, Sriraman Tallam wrote:
>> This comes with  caveats.  This cannot be generally done for all
>> functions marked extern as it is impossible for the compiler to say if
>> a function is "truly extern" (defined in a shared library). If a
>> function is not truly extern(ends up defined in the final executable),
>> then calling it indirectly is a performance penalty as it could have
>> been a direct call.  Further, the newly created GOT entries are fixed
>> up at start-up and do not get lazily bound.
>
> I've considered something similar for PowerPC (but didn't consider
> doing do so for a subset of calls).  Losing lazy symbol resolution is
> a real problem.

With -fno-plt= option, you are choosing functions that are hot and
PLT must be avoided.  Losing lazy binding on these should be perfectly
fine because they would be called.

Thanks
Sri

The other problem you cite of indirect calls that
> could be direct can be fixed in the linker relatively easily.
> Edit this code
>    0:   ff 15 00 00 00 00       callq  *0x0(%rip)        # 0x6
>                         2: R_X86_64_GOTPCREL    foo-0x4
>    6:   ff 25 00 00 00 00       jmpq   *0x0(%rip)        # 0xc
>                         8: R_X86_64_GOTPCREL    foo-0x4
> to this
>    c:   e8 00 00 00 00          callq  0x11
>                         d: R_X86_64_PC32        foo-0x4
>   11:   90                      nop
>   12:   e9 00 00 00 00          jmpq   0x17
>                         13: R_X86_64_PC32       foo-0x4
>   17:   90                      nop
> You may need to have gcc or gas add a marker reloc to say exactly
> where an instruction starts.
>
> --
> Alan Modra
> Australia Development Lab, IBM

  reply	other threads:[~2015-05-01  3:26 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-01  0:31 Sriraman Tallam
2015-05-01  3:21 ` Alan Modra
2015-05-01  3:26   ` Sriraman Tallam [this message]
2015-05-01 15:01 ` Andi Kleen
2015-05-01 16:19   ` Xinliang David Li
2015-05-01 16:23     ` H.J. Lu
2015-05-01 16:26       ` Xinliang David Li
2015-05-01 18:06         ` Sriraman Tallam
2015-05-02 12:12           ` Andi Kleen
2015-05-01 17:50   ` Sriraman Tallam
2015-05-04 14:45 ` Michael Matz
2015-05-04 16:43   ` Xinliang David Li
2015-05-04 16:58     ` Michael Matz
2015-05-04 17:22       ` Xinliang David Li
2015-05-09 16:35   ` H.J. Lu
2015-05-10 15:19 H.J. Lu
     [not found] ` <CAAs8HmwWSDY+KjKcB4W=TiYV0Pz7NSvfL_8igp+hPT-LU1utTg@mail.gmail.com>
2015-05-21 21:31   ` Sriraman Tallam
2015-05-21 21:39     ` Sriraman Tallam
2015-05-21 22:02     ` Pedro Alves
2015-05-21 22:02       ` Jakub Jelinek
2015-05-22  1:47         ` H.J. Lu
2015-05-22  3:38         ` Xinliang David Li
2015-05-21 22:34       ` Sriraman Tallam
2015-05-22  9:22         ` Pedro Alves
2015-05-22 15:13           ` Sriraman Tallam
2015-05-28 18:53           ` Sriraman Tallam
2015-05-28 19:05             ` H.J. Lu
2015-05-28 19:48               ` Sriraman Tallam
2015-05-28 20:19                 ` H.J. Lu
2015-05-28 21:27                   ` Sriraman Tallam
2015-05-28 21:31                     ` H.J. Lu
2015-05-28 21:52                       ` Sriraman Tallam
2015-05-28 22:48                         ` H.J. Lu
2015-05-29  3:51                           ` Sriraman Tallam
2015-05-29  5:13                             ` H.J. Lu
2015-05-29  7:13                               ` Sriraman Tallam
2015-05-29 17:36                                 ` Sriraman Tallam
2015-05-29 17:52                                   ` H.J. Lu
2015-05-29 18:33                                     ` Sriraman Tallam
2015-05-29 20:50                                 ` Jan Hubicka
2015-05-29 22:56                                   ` Sriraman Tallam
2015-05-29 23:08                                     ` Sriraman Tallam
     [not found]                                     ` <CAJA7tRYsMiq7rx34c=z6KwRdwYxxaeP6Z6qzA4XEwnJSMT7z=Q@mail.gmail.com>
2015-05-30  4:44                                       ` Sriraman Tallam
2015-06-01  8:24                                         ` Ramana Radhakrishnan
2015-06-01 18:01                                           ` Sriraman Tallam
2015-06-01 18:41                                             ` Ramana Radhakrishnan
2015-06-01 18:55                                               ` Sriraman Tallam
2015-06-01 20:33                                                 ` Ramana Radhakrishnan
2015-06-02 18:27                                                   ` Sriraman Tallam
2015-06-02 19:59                                                     ` Bernhard Reutner-Fischer
2015-06-02 20:09                                                       ` Sriraman Tallam
2015-06-02 21:18                                                         ` Bernhard Reutner-Fischer
2015-06-02 21:09                                                     ` Ramana Radhakrishnan
2015-06-02 21:25                                                       ` Xinliang David Li
2015-06-02 21:52                                                         ` Bernhard Reutner-Fischer
2015-06-02 21:40                                                       ` Sriraman Tallam
2015-06-03 14:37                                                         ` Ramana Radhakrishnan
2015-06-03 18:53                                                           ` Sriraman Tallam
2015-06-03 20:16                                                             ` Richard Henderson
2015-06-03 20:59                                                               ` Sriraman Tallam
2015-06-04 16:56                                                                 ` Sriraman Tallam
2015-06-04 17:30                                                                   ` Richard Henderson
2015-06-04 21:34                                                                     ` Sriraman Tallam
2015-07-24 19:02                                                                   ` H.J. Lu
2015-06-03 19:57                                                       ` Richard Henderson

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='CAAs8Hmw81manxkTZ=Tf99qwea0oBSbAd8oRfg7QsoSNXYoz_=w@mail.gmail.com' \
    --to=tmsriram@google.com \
    --cc=davidxl@google.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hjl.tools@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).