This is an archive of the discontinued LLVM Phabricator instance.

Always add a .note.GNU-stack section if -r.
ClosedPublic

Authored by ruiu on Aug 28 2018, 8:48 PM.

Details

Summary

With this patch, lld creates a .note.GNU_stack and adds it to an
output file if it is creating a re-linkable object file (i.e. if -r
is given). If we don't do this, and if you use GNU linkers as a final
linker, they create an executable whose stack area is executable,
which is considered pretty bad these days.

Event Timeline

ruiu created this revision.Aug 28 2018, 8:48 PM
rprichard added inline comments.Aug 28 2018, 9:03 PM
lld/ELF/SyntheticSections.h
142

I think we want to pass SHF_EXECINSTR as the first SyntheticSection param if Config->ZExecstack is set?

ruiu added a comment.Aug 28 2018, 10:30 PM

It's intentionally omitted, as I think if you want an exectuable stack, you should explicitly pass -z execstack to the final linker.

rprichard accepted this revision.Aug 29 2018, 12:15 AM

It's intentionally omitted, as I think if you want an exectuable stack, you should explicitly pass -z execstack to the final linker.

Ok, that sounds reasonable.

The change looks OK to me.

This revision is now accepted and ready to land.Aug 29 2018, 12:15 AM
This revision was automatically updated to reflect the committed changes.