aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-09-26 16:30:46 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-09-26 16:30:46 +0000
commit12ef66c411efe5910f0a9a74c92480db7e12eae0 (patch)
tree3c4e860079e1b26a44b33ba8780005e433ab61d6
parent44dade71f3cf739618affe0db5b40c15418ecb99 (diff)
downloadglibc-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--ChangeLog5
-rw-r--r--sysdeps/ia64/stackinfo.h5
2 files changed, 7 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 41d3ed48ee..f8435ad1fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 */