diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-09-26 16:30:46 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-09-26 16:30:46 +0000 |
commit | 12ef66c411efe5910f0a9a74c92480db7e12eae0 (patch) | |
tree | 3c4e860079e1b26a44b33ba8780005e433ab61d6 | |
parent | 44dade71f3cf739618affe0db5b40c15418ecb99 (diff) | |
download | glibc-12ef66c411efe5910f0a9a74c92480db7e12eae0.tar glibc-12ef66c411efe5910f0a9a74c92480db7e12eae0.tar.gz glibc-12ef66c411efe5910f0a9a74c92480db7e12eae0.tar.bz2 glibc-12ef66c411efe5910f0a9a74c92480db7e12eae0.zip |
Fix ia64 executable stack default (bug 22156).
As per https://gcc.gnu.org/ml/gcc-patches/2017-09/msg01220.html ia64
defaults to non-executable stacks in the Linux kernel (furthermore,
the use of function descriptors means that trampolines for nested
function pointers never need an executable stack). glibc however
defines DEFAULT_STACK_PERMS to include PF_X for that architecture,
meaning (a) elf/check-execstack fails and (b) (from code inspection,
not tested, but this is why I think this is a user-visible bug) thread
stacks are unnecessarily mapped with execute permission. This patch
fixes the DEFAULT_STACK_PERMS definition in question.
Tested (compilation only) with build-many-glibcs.py for ia64. This
fixes the check-execstack failure.
[BZ #22156]
* sysdeps/ia64/stackinfo.h (DEFAULT_STACK_PERMS): Likewise.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/ia64/stackinfo.h | 5 |
2 files changed, 7 insertions, 3 deletions
@@ -1,3 +1,8 @@ +2017-09-26 Joseph Myers <joseph@codesourcery.com> + + [BZ #22156] + * sysdeps/ia64/stackinfo.h (DEFAULT_STACK_PERMS): Likewise. + 2017-09-26 Florian Weimer <fweimer@redhat.com> * resolv/Makefile (tests-internal): Fix typo in comment. diff --git a/sysdeps/ia64/stackinfo.h b/sysdeps/ia64/stackinfo.h index 87e144876f..a50e72749a 100644 --- a/sysdeps/ia64/stackinfo.h +++ b/sysdeps/ia64/stackinfo.h @@ -27,8 +27,7 @@ here. */ #define _STACK_GROWS_DOWN 1 -/* Default to an executable stack. PF_X can be overridden if PT_GNU_STACK is - * present, but it is presumed absent. */ -#define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X) +/* Default to a non-executable stack. */ +#define DEFAULT_STACK_PERMS (PF_R|PF_W) #endif /* stackinfo.h */ |