Test6929067.sh 2.8 KB
Newer Older
1 2 3
#!/bin/sh

##
4
## @ignore 8028740
5 6
## @test Test6929067.sh
## @bug 6929067
7
## @bug 8021296
8
## @summary Stack guard pages should be removed when thread is detached
9
## @compile T.java
10 11
## @run shell Test6929067.sh
##
12
set -x
13 14
if [ "${TESTSRC}" = "" ]
then
15 16
  TESTSRC=${PWD}
  echo "TESTSRC not set.  Using "${TESTSRC}" as default"
17
fi
18 19 20
echo "TESTSRC=${TESTSRC}"
## Adding common setup Variables for running shell tests.
. ${TESTSRC}/../../test_env.sh
21 22 23 24 25

# set platform-dependent variables
OS=`uname -s`
case "$OS" in
  Linux)
26 27 28 29 30
    gcc_cmd=`which gcc`
    if [ "x$gcc_cmd" == "x" ]; then
        echo "WARNING: gcc not found. Cannot execute test." 2>&1
        exit 0;
    fi
31 32 33 34
    NULL=/dev/null
    PS=":"
    FS="/"
    ;;
35
  * )
36 37 38 39 40
    echo "Test passed; only valid for Linux"
    exit 0;
    ;;
esac

41 42 43
${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -Xinternalversion > vm_version.out 2>&1 

# Bitness:
44 45 46
# Cannot simply look at TESTVMOPTS as -d64 is not
# passed if there is only a 64-bit JVM available.

47
grep "64-Bit" vm_version.out > ${NULL}
48 49
if [ "$?" = "0" ]
then
50
  COMP_FLAG="-m64"
51
else
52
  COMP_FLAG="-m32"
53 54
fi

55

56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
# Architecture:
# Translate uname output to JVM directory name, but permit testing
# 32-bit x86 on an x64 platform.
ARCH=`uname -m`
case "$ARCH" in
  x86_64)
    if [ "$COMP_FLAG" = "-m32" ]; then
      ARCH=i386
    else 
      ARCH=amd64
    fi
    ;;
  ppc64)
    if [ "$COMP_FLAG" = "-m32" ]; then
      ARCH=ppc
    else 
      ARCH=ppc64
    fi
    ;;
  sparc64)
    if [ "$COMP_FLAG" = "-m32" ]; then
      ARCH=sparc
    else 
      ARCH=sparc64
    fi
    ;;
  arm*)
    # 32-bit ARM machine: compiler may not recognise -m32
    COMP_FLAG=""
    ARCH=arm
    ;;
  aarch64)
    # 64-bit arm machine, could be testing 32 or 64-bit:
    if [ "$COMP_FLAG" = "-m32" ]; then
      ARCH=arm
    else 
      ARCH=aarch64
    fi
    ;;
  i586)
    ARCH=i386
    ;;
  i686)
    ARCH=i386
    ;;
  # Assuming other ARCH values need no translation
esac
103 104


105 106 107 108 109 110 111 112 113
# VM type: need to know server or client
VMTYPE=client
grep Server vm_version.out > ${NULL}
if [ "$?" = "0" ]
then
  VMTYPE=server
fi


114
LD_LIBRARY_PATH=.:${COMPILEJAVA}/jre/lib/${ARCH}/${VMTYPE}:/usr/lib:$LD_LIBRARY_PATH
115 116 117 118 119 120
export LD_LIBRARY_PATH

cp ${TESTSRC}${FS}invoke.c .

# Copy the result of our @compile action:
cp ${TESTCLASSES}${FS}T.class .
121

122 123 124
echo "Architecture: ${ARCH}"
echo "Compilation flag: ${COMP_FLAG}"
echo "VM type: ${VMTYPE}"
125 126 127
# Note pthread may not be found thus invoke creation will fail to be created.
# Check to ensure you have a /usr/lib/libpthread.so if you don't please look
# for /usr/lib/`uname -m`-linux-gnu version ensure to add that path to below compilation.
128

129 130 131 132
$gcc_cmd -DLINUX ${COMP_FLAG} -o invoke \
    -I${COMPILEJAVA}/include -I${COMPILEJAVA}/include/linux \
    -L${COMPILEJAVA}/jre/lib/${ARCH}/${VMTYPE} \
    -ljvm -lpthread invoke.c
133 134 135

./invoke
exit $?