This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Relocations to use when eliding plts


On Thu, May 28, 2015 at 11:41:10AM -0700, Richard Henderson wrote:
> On 05/28/2015 10:59 AM, Rich Felker wrote:
> >Am I missing something?
> 
> You're not missing anything.  But do you want the performance of a
> library to depend on how the main executable is compiled?

Not directly. But I'd rather be in that situation than have
pessimizations in library codegen to avoid it. I'm worried about cases
where code both loads the address of a function and calls it, such as
this (stupid) example:

	a((void *)a);

Would having separate handling of the address-for-call and
address-for-function-pointer result in the compiler emitting 2
separate GOT loads (and consuming 2 registers) here in an effort to
avoid the possibility of inefficiency from a PLT thunk in the main
program?

In my vision, main programs are always or almost-always (e.g. just
exceptions for stuff like emacs) PIE and the PLT-in-main-program issue
is a non-issue, so I don't want to risk hurting codegen on the library
side just to make a legacy usage (non-PIE) mildly more efficient.

Rich


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]