This is the mail archive of the mailing list for the binutils 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: [patch ob] Disallow -pie and -static

Mike Frysinger <> writes:

> On Monday 27 February 2012 12:41:22 Ian Lance Taylor wrote:
>> Mike Frysinger writes:
>> > On Tuesday 14 February 2012 19:48:43 Cary Coutant wrote:
>> >> I'm committing this patch under the trivial and obvious rule. If -pie
>> >> and -static are both given together, gold will currently issue an
>> >> internal error.
>> > 
>> > shouldn't there be a bug to fix this then ?  there's no technical reason
>> > for disallowing static pie's from the perspective of the linker ...
>> On GNU/Linux a PIE is just an executable shared library.  How would you
>> implement a statically linked PIE?
> from what perspective ?  if i build all my code with -fPIE (including libc.a 
> and friends), then link with -static -pie, i should have an ELF that doesn't 
> need shared libraries nor runtime ldso and can be run from any address.  

But linking with -pie really just generates a shared library.  And a
shared library requires  So I don't understand what you would

> conceptually, i don't see why static PIE is anything special from static non-
> PIE.  maybe i'm missing something fundamental.

In order to implement any sort of PIE something needs to do runtime
relocation of all absolute references.  In a statically linked
executable, what is going to do that?

It is not impossible to generate a statically linked PIE, but it
requires support from the startup files and libraries which does not
currently exist on GNU/Linux systems.  If somebody wrote that support,
and defined what the linker had to do to invoke it, then it would make
sense for the linker to support -static -pie.  Until then, it is better
for the linker to give an error.


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