[patch ob] Disallow -pie and -static
Ian Lance Taylor
iant@google.com
Tue Feb 28 00:23:00 GMT 2012
Mike Frysinger <vapier@gentoo.org> writes:
> On Monday 27 February 2012 18:38:44 Ian Lance Taylor wrote:
>> Mike Frysinger <vapier@gentoo.org> writes:
>> > if an ELF is linked with -static, then there's no ldso and thus no
>> > PT_INTERP needed.
>>
>> And then, on current GNU/Linux systems, it is not a PIE.
>
> i don't think so. a PIE is a Position Independent Executable. that doesn't
> mean it needs an interpreter. just that its loadable sections can get loaded
> at any address and still work.
Try it. The resulting executable will only work at a single fixed
address. It will not be possible to move it to a different address and
run it there.
>> > i don't see why -pie should require PT_DYNAMIC or PT_INTERP.
>>
>> Because without PT_DYNAMIC and PT_INTERP, on current GNU/Linux systems,
>> the executable won't work.
>
> you're correct about PT_DYNAMIC, but i don't think PT_INTERP. as Joseph said,
> we pretty much do this today with the ldso (ignoring the lack of pre-packaged
> startup objects for any PIE to utilize).
Because the dynamic linker is written specially.
>> You seem to be speaking at some sort of conceptual level. At the
>> conceptual level, you are correct. It is possible to define some sort
>> of static PIE. But there is no such thing today, and implementing it
>> will require changes to the linker. When it is implemented, we will
>> change the linker such that -pie -static is not an error.
>
> and i'm asking, what are those changes that the linker needs ?
It needs a definition of what a static PIE should look like, including
what program segments should be created, how all input relocations
should be handled, and what the exec-type of the output should be.
Ian
More information about the Binutils
mailing list