Mercurial > hg > release > icedtea7-2.5
changeset 2686:ec3cd225cbec
PR1677: Update PaX support to detect running PaX kernel and use newer tools
2014-02-19 Andrew John Hughes <gnu.andrew@member.fsf.org>
PR1677: Update PaX support to detect running PaX
kernel and use newer tools
* NEWS: Updated.
* acinclude.m4:
(IT_HAS_PAX): New macro to detect whether the running
kernel uses PaX.
(IT_WITH_PAX): Rewritten to search for PaX tools -
currently paxmark.sh, paxctl-ng, chpax and paxctl -
and fail if a tool isn't found and a PaX kernel is
being used.
author | Andrew John Hughes <gnu_andrew@member.fsf.org> |
---|---|
date | Wed, 19 Feb 2014 18:18:22 +0000 |
parents | e46a1e7c6441 |
children | 6a756a2b18c7 |
files | ChangeLog NEWS acinclude.m4 |
diffstat | 3 files changed, 78 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Wed Feb 05 12:19:45 2014 +0000 +++ b/ChangeLog Wed Feb 19 18:18:22 2014 +0000 @@ -1,3 +1,16 @@ +2014-02-19 Andrew John Hughes <gnu.andrew@member.fsf.org> + + PR1677: Update PaX support to detect running PaX + kernel and use newer tools + * NEWS: Updated. + * acinclude.m4: + (IT_HAS_PAX): New macro to detect whether the running + kernel uses PaX. + (IT_WITH_PAX): Rewritten to search for PaX tools - + currently paxmark.sh, paxctl-ng, chpax and paxctl - + and fail if a tool isn't found and a PaX kernel is + being used. + 2014-02-05 Andrew John Hughes <gnu.andrew@member.fsf.org> * Makefile.am:
--- a/NEWS Wed Feb 05 12:19:45 2014 +0000 +++ b/NEWS Wed Feb 19 18:18:22 2014 +0000 @@ -376,6 +376,7 @@ - Add new files from 8019229 - Remove duplicate ElfFuncDescTable code in elfSymbolTable.cpp - Remove duplicate ElfFuncDescTable code in elfSymbolTable.hpp + - PR1677: Update PaX support to detect running PaX kernel and use newer tools * JamVM - JVM_NewMultiArray: element class may be an array - jtreg test java/lang/reflect/Array/ExceedMaxDim
--- a/acinclude.m4 Wed Feb 05 12:19:45 2014 +0000 +++ b/acinclude.m4 Wed Feb 19 18:18:22 2014 +0000 @@ -2330,45 +2330,79 @@ AC_SUBST([enable_downloading]) ]) +AC_DEFUN_ONCE([IT_HAS_PAX], +[ + AC_MSG_CHECKING([if a PaX kernel is in use]) + if cat /proc/self/status | grep '^PaX' >&AS_MESSAGE_LOG_FD 2>&1; then + pax_active=yes; + else + pax_active=no; + fi + AC_MSG_RESULT([${pax_active}]) + AM_CONDITIONAL([USING_PAX], test x"${pax_active}" = "xyes") +]) + AC_DEFUN_ONCE([IT_WITH_PAX], [ - AC_MSG_CHECKING([for pax utility to use]) + AC_REQUIRE([IT_HAS_PAX]) + PAX_DEFAULT=/usr/sbin/paxmark.sh + AC_MSG_CHECKING([if a PaX utility was specified]) AC_ARG_WITH([pax], [AS_HELP_STRING(--with-pax=COMMAND,the command used for pax marking)], [ - PAX_COMMAND=${withval} + if test "x${withval}" = "xyes"; then + PAX_COMMAND=no + else + PAX_COMMAND="${withval}" + fi ], [ - PAX_COMMAND="not specified" + PAX_COMMAND=no ]) - case "x${PAX_COMMAND}" in - xchpax) - case "${host_cpu}" in - i?86) - PAX_COMMAND_ARGS="-msp" - ;; - *) - PAX_COMMAND_ARGS="-m" - ;; - esac - ;; - xpaxctl) - case "${host_cpu}" in - i?86) - PAX_COMMAND_ARGS="-msp" - ;; - *) - PAX_COMMAND_ARGS="-m" - ;; - esac - ;; - *) - PAX_COMMAND="not specified" - PAX_COMMAND_ARGS="not specified" - ;; - esac + AC_MSG_RESULT(${PAX_COMMAND}) + if test "x${PAX_COMMAND}" == "xno"; then + PAX_COMMAND=${PAX_DEFAULT} + fi + AC_MSG_CHECKING([if $PAX_COMMAND is a valid executable file]) + if test -x "${PAX_COMMAND}" && test -f "${PAX_COMMAND}"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PAX_COMMAND="" + AC_PATH_PROG(PAX_COMMAND, "paxmark.sh") + if test -z "${PAX_COMMAND}"; then + AC_PATH_PROG(PAX_COMMAND, "paxctl-ng") + fi + if test -z "${PAX_COMMAND}"; then + AC_PATH_PROG(PAX_COMMAND, "chpax") + fi + if test -z "${PAX_COMMAND}"; then + AC_PATH_PROG(PAX_COMMAND, "paxctl") + fi + if test -z "${PAX_COMMAND}"; then + if test "x${pax_active}" = "xyes"; then + AC_MSG_ERROR("No PaX utility found and running on a PaX kernel.") + else + AC_MSG_WARN("No PaX utility found.") + fi + fi + fi + if test -z "${PAX_COMMAND}"; then + PAX_COMMAND="not specified" + PAX_COMMAND_ARGS="not specified" + else + AC_MSG_CHECKING([which options to pass to ${PAX_COMMAND}]) + case "${host_cpu}" in + i?86) + PAX_COMMAND_ARGS="-msp" + ;; + *) + PAX_COMMAND_ARGS="-m" + ;; + esac + AC_MSG_RESULT(${PAX_COMMAND_ARGS}) + fi AM_CONDITIONAL(WITH_PAX, test "x${PAX_COMMAND}" != "xnot specified") - AC_MSG_RESULT(${PAX_COMMAND}) AC_SUBST(PAX_COMMAND) AC_SUBST(PAX_COMMAND_ARGS) ])