[PATCH] D56554: [ELF] Add '-z nognustack' opt to suppress emitting PT_GNU_STACK
Kamil Rytarowski via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 10 15:46:49 PST 2019
krytarowski added a comment.
In D56554#1353513 <https://reviews.llvm.org/D56554#1353513>, @ruiu wrote:
> In D56554#1353487 <https://reviews.llvm.org/D56554#1353487>, @krytarowski wrote:
>
> > In D56554#1353368 <https://reviews.llvm.org/D56554#1353368>, @ruiu wrote:
> >
> > > The absence of PT_GNU_STACK segment makes stack area executable on systems that recognizes PT_GNU_STACK segment. So, I think if `-z execstack` is specified, we should omit PT_GNU_STACK segment rather than adding it, which I think you guys want. If we do that, it seems `-z nognustack` is a redundant option. That option name is unfortunate (you don't really mean you want an executable stack area), but that's I think still better than adding an option that is very similar to an existing feature.
> >
> >
> > If we are going to change the meaning of `-z execstack`, can we rename the option in lld? Probably to `-z gnustack` vs `-z nognustack`, probably there is no other use-case than RWX->RW protection change.
>
>
> Both `-z execstack` and `-z noexecstack` are supported by GNU linkers, so we can't simply rename them. We might be able to define aliases to the options. But I'm not sure if we want it if the only reason to do so is aesthetic reason.
For compat with GNU linkers we could disable it by default, and emit GNU stack only on demand.
The current approach to enable GNU STACK is to inline a new segment definition in assembly. It's done this way in llvm projects too.
Repository:
rLLD LLVM Linker
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D56554/new/
https://reviews.llvm.org/D56554
More information about the cfe-commits
mailing list