This is the mail archive of the binutils@sourceware.org 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, GOLD, AArch64] default stack not executable


On Thu, Sep 21, 2017 at 05:56:51PM -0700, Jim Wilson wrote:
> On Thu, Sep 21, 2017 at 5:26 PM, Cary Coutant <ccoutant@gmail.com> wrote:
> > I don't see why aarch64 should be treated differently from other
> > targets here, unless you can claim that there is no such thing as an
> > old object that requires an executable stack but does not contain a
> > stack note to that effect. If that's the case for aarch64 (and Han
> > agrees), I'll support this patch.
> 
> GNU-stack notes were added in 2004.  The aarch64 port was added in
> 2012.  So yes, there are no old object files that predate the
> GNU-stack notes, which is why aarch64 ld.bfd ignores a missing
> GNU-stack note.
> 
> > Since you raise the possibility that ppc should also default to false,
> > I'll ask Alan the same question: are there old objects that must be
> > assumed to require an executable stack?
> 
> That should be 64-bit ppc only.  32-bit ppc has old object files that
> we need to be compatible with.  Though I'm not sure what the
> justification is for 64-bit ppc, since it did exist before GNU-stack
> notes.  Maybe this is because of the new ABI that rolled out a few of
> years ago?   Checking ChangeLogs, I see that execstack was turned off
> for 64-bit ppc in 2007.

ppc64 ELFv1 never needs to be exec stack.  Since function descriptors
are used there is no need for stack trampolines.  Current gcc doesn't
emit the stack notes for ELFv1.

ppc64 ELFv2 on the other hand *does* need stack trampolines, and gcc
has always emitted the stack notes for ELFv2.

So I think is_default_stack_executable should indeed be false for
ppc64.

-- 
Alan Modra
Australia Development Lab, IBM


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