This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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: Is it a GNU Tools failure that PIE use ET_DYN and can't be distinguished from libraries?


On Wed, Mar 18, 2015 at 09:37:46PM -0400, Carlos O'Donell wrote:
> On 03/18/2015 04:51 PM, Roland McGrath wrote:
> >> Is it a failing of the tooling that we didn't provide a way for
> >> tools to determine PIE vs. DSO?
> > 
> > It might be if we hadn't.  But we defined a PIE as an ET_DYN with a
> > DT_DEBUG.  (We didn't account for a case that would be useful and the
> > linker doesn't currently fully support: a static PIE, which is an ET_DYN
> > that has no PT_INTERP and might not have a PT_DYNAMIC either.)
> 
> Interesting, ET_DYN + DT_DEBUG, I did not see that coming.
> 
> At best I'd have defined it as ET_DYN + PT_INTERP, and I would have
> been happy to call libc.so.6 the first PIE.

That excludes static pie, something I've successfully experimented
with using musl and which the OpenBSD folks seem to be doing
independently. AFAIK there's no upstream toolchain support for it, but
gcc can be tricked into doing something that works with -shared
(instead of -pie), -Wl,-Bstatic, and explicitly including a version of
crt1.o (OpenBSD calls this rcrt0.o, I think; my experimental version
was called Zcrt1.o) that processes RELATIVE relocs.

Rich


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