This is the mail archive of the
mailing list for the binutils project.
Re: [patch ob] Disallow -pie and -static
Mike Frysinger <email@example.com> writes:
> On Monday 27 February 2012 18:38:44 Ian Lance Taylor wrote:
>> Mike Frysinger <firstname.lastname@example.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.