iklam@4710: #!/bin/sh iklam@4710: iklam@4710: # iklam@4710: # Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. iklam@4710: # Copyright (c) 2011 SAP AG. All Rights Reserved. iklam@4710: # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. iklam@4710: # iklam@4710: # This code is free software; you can redistribute it and/or modify it iklam@4710: # under the terms of the GNU General Public License version 2 only, as iklam@4710: # published by the Free Software Foundation. iklam@4710: # iklam@4710: # This code is distributed in the hope that it will be useful, but WITHOUT iklam@4710: # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or iklam@4710: # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License iklam@4710: # version 2 for more details (a copy is included in the LICENSE file that iklam@4710: # accompanied this code). iklam@4710: # iklam@4710: # You should have received a copy of the GNU General Public License version iklam@4710: # 2 along with this work; if not, write to the Free Software Foundation, iklam@4710: # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. iklam@4710: # iklam@4710: # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA iklam@4710: # or visit www.oracle.com if you need additional information or have any iklam@4710: # questions. iklam@4710: # iklam@4710: iklam@4710: ## iklam@4710: ## @test Test7107135.sh iklam@4710: ## @bug 7107135 iklam@4710: ## @summary Stack guard pages lost after loading library with executable stack. iklam@4710: ## @run shell Test7107135.sh iklam@4710: ## iklam@4710: iklam@4710: if [ "${TESTSRC}" = "" ] collins@4831: then collins@4831: TESTSRC=${PWD} collins@4831: echo "TESTSRC not set. Using "${TESTSRC}" as default" iklam@4710: fi collins@4831: echo "TESTSRC=${TESTSRC}" collins@4831: ## Adding common setup Variables for running shell tests. collins@4831: . ${TESTSRC}/../../test_env.sh iklam@4710: iklam@4710: # set platform-dependent variables iklam@4710: OS=`uname -s` iklam@4710: case "$OS" in iklam@4710: Linux) collins@4831: echo "Testing on Linux" iklam@4710: ;; iklam@4710: *) iklam@4710: NULL=NUL iklam@4710: PS=";" iklam@4710: FS="\\" iklam@4710: echo "Test passed; only valid for Linux" iklam@4710: exit 0; iklam@4710: ;; iklam@4710: esac iklam@4710: iklam@4710: ARCH=`uname -m` iklam@4710: collins@4831: THIS_DIR=. iklam@4710: iklam@4710: cp ${TESTSRC}${FS}*.java ${THIS_DIR} iklam@4710: ${TESTJAVA}${FS}bin${FS}javac *.java iklam@4710: iklam@4710: gcc -fPIC -shared -c -o test.o -I${TESTJAVA}${FS}include -I${TESTJAVA}${FS}include${FS}linux ${TESTSRC}${FS}test.c iklam@4710: ld -shared -z execstack -o libtest-rwx.so test.o iklam@4710: ld -shared -z noexecstack -o libtest-rw.so test.o iklam@4710: iklam@4710: iklam@4710: LD_LIBRARY_PATH=${THIS_DIR} iklam@4710: echo LD_LIBRARY_PATH = ${LD_LIBRARY_PATH} iklam@4710: export LD_LIBRARY_PATH iklam@4710: iklam@4710: # This should not fail. iklam@4710: echo Check testprogram. Expected to pass: iklam@4710: echo ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} Test test-rw iklam@4710: ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} Test test-rw iklam@4710: iklam@4710: echo iklam@4710: echo Test changing of stack protection: iklam@4710: echo ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} Test test-rw iklam@4710: ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} Test test-rwx iklam@4710: iklam@4710: if [ "$?" == "0" ] iklam@4710: then iklam@4710: echo iklam@4710: echo ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} TestMT test-rwx iklam@4710: ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} TestMT test-rwx iklam@4710: fi iklam@4710: iklam@4710: exit $?