Wed, 21 May 2014 10:56:41 -0700
Added tag jdk8u20-b15 for changeset 8c785f9bde6f
duke@435 | 1 | #!/bin/ksh |
duke@435 | 2 | # |
trims@1907 | 3 | # Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved. |
duke@435 | 4 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
duke@435 | 5 | # |
duke@435 | 6 | # This code is free software; you can redistribute it and/or modify it |
duke@435 | 7 | # under the terms of the GNU General Public License version 2 only, as |
duke@435 | 8 | # published by the Free Software Foundation. |
duke@435 | 9 | # |
duke@435 | 10 | # This code is distributed in the hope that it will be useful, but WITHOUT |
duke@435 | 11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
duke@435 | 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
duke@435 | 13 | # version 2 for more details (a copy is included in the LICENSE file that |
duke@435 | 14 | # accompanied this code). |
duke@435 | 15 | # |
duke@435 | 16 | # You should have received a copy of the GNU General Public License version |
duke@435 | 17 | # 2 along with this work; if not, write to the Free Software Foundation, |
duke@435 | 18 | # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
duke@435 | 19 | # |
trims@1907 | 20 | # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
trims@1907 | 21 | # or visit www.oracle.com if you need additional information or have any |
trims@1907 | 22 | # questions. |
duke@435 | 23 | # |
duke@435 | 24 | # |
duke@435 | 25 | |
duke@435 | 26 | # This script runs the test program, sagtest.java, with the regular |
duke@435 | 27 | # JPDA jdi. |
duke@435 | 28 | # It then starts up the debuggee part of the test, sagtarg.java, |
duke@435 | 29 | # and calls gcore to create file sagcore for use in running |
duke@435 | 30 | # the SA JDI client. |
duke@435 | 31 | |
duke@435 | 32 | set -x |
duke@435 | 33 | # jdk is a jdk with the vm from the sa workspace |
duke@435 | 34 | while [ $# != 0 ] ; do |
duke@435 | 35 | case $1 in |
duke@435 | 36 | -vv) |
duke@435 | 37 | set -x |
duke@435 | 38 | ;; |
duke@435 | 39 | -gui) |
duke@435 | 40 | theClass=sun.jvm.hotspot.HSDB |
duke@435 | 41 | ;; |
duke@435 | 42 | -jdk) |
duke@435 | 43 | jdk=$2 |
duke@435 | 44 | shift |
duke@435 | 45 | ;; |
duke@435 | 46 | -jdbx) |
duke@435 | 47 | do=jdbx |
duke@435 | 48 | ;; |
duke@435 | 49 | -jdb) |
duke@435 | 50 | do=jdb |
duke@435 | 51 | ;; |
duke@435 | 52 | -help | help) |
duke@435 | 53 | doUsage |
duke@435 | 54 | exit |
duke@435 | 55 | ;; |
duke@435 | 56 | -dontkill) |
duke@435 | 57 | dontkill=true |
duke@435 | 58 | ;; |
duke@435 | 59 | -d64) |
duke@435 | 60 | d64=-d64 |
duke@435 | 61 | ;; |
duke@435 | 62 | -*) |
duke@435 | 63 | javaArgs="$javaArgs $1" |
duke@435 | 64 | ;; |
duke@435 | 65 | *) |
duke@435 | 66 | echo "$1" | grep -s '^[0-9]*$' > /dev/null |
duke@435 | 67 | if [ $? = 0 ] ; then |
duke@435 | 68 | # it is a pid |
duke@435 | 69 | args="$args $1" |
duke@435 | 70 | else |
duke@435 | 71 | # It is a core. |
duke@435 | 72 | # We have to pass the name of the program that produced the |
duke@435 | 73 | # core, and the core file itself. |
duke@435 | 74 | args="$jdk/bin/java $1" |
duke@435 | 75 | fi |
duke@435 | 76 | ;; |
duke@435 | 77 | esac |
duke@435 | 78 | shift |
duke@435 | 79 | done |
duke@435 | 80 | |
duke@435 | 81 | # First, run the sagtest.java with the regular JPDA jdi |
duke@435 | 82 | workdir=./workdir |
duke@435 | 83 | mkdir -p $workdir |
duke@435 | 84 | CLASSPATH=$jdk/classes:$jdk/lib/tools.jar:$workdir |
duke@435 | 85 | export CLASSPATH |
duke@435 | 86 | |
duke@435 | 87 | $jdk/bin/javac -g -source 1.5 -classpath $jdk/classes:$jdk/lib/tools.jar:$workdir -J-Xms40m -d $workdir \ |
duke@435 | 88 | TestScaffold.java \ |
duke@435 | 89 | VMConnection.java \ |
duke@435 | 90 | TargetListener.java \ |
duke@435 | 91 | TargetAdapter.java \ |
duke@435 | 92 | sagdoit.java \ |
duke@435 | 93 | sagtarg.java \ |
duke@435 | 94 | sagtest.java |
duke@435 | 95 | |
duke@435 | 96 | if [ $? != 0 ] ; then |
duke@435 | 97 | exit 1 |
duke@435 | 98 | fi |
duke@435 | 99 | |
duke@435 | 100 | $jdk/bin/java $javaArgs -Dtest.classes=$workdir sagtest |
duke@435 | 101 | |
duke@435 | 102 | # Now run create a core file for use in running sa-jdi |
duke@435 | 103 | |
duke@435 | 104 | if [ ! core.satest -nt sagtarg.class ] ; then |
duke@435 | 105 | tmp=/tmp/sagsetup |
duke@435 | 106 | rm -f $tmp |
duke@435 | 107 | $jdk/bin/java $d64 sagtarg > $tmp & |
duke@435 | 108 | pid=$! |
duke@435 | 109 | while [ ! -s $tmp ] ; do |
duke@435 | 110 | # Kludge alert! |
duke@435 | 111 | sleep 2 |
duke@435 | 112 | done |
duke@435 | 113 | #rm -f $tmp |
duke@435 | 114 | |
duke@435 | 115 | # force core dump of the debuggee |
duke@435 | 116 | OS=`uname` |
duke@435 | 117 | if [ "$OS" = "Linux" ]; then |
duke@435 | 118 | # Linux does not have gcore command. Instead, we use 'gdb's |
duke@435 | 119 | # gcore command. Note that only some versions of gdb support |
duke@435 | 120 | # gdb command. |
duke@435 | 121 | echo "gcore" > gdbscript |
duke@435 | 122 | gdb -batch -p $pid -x gdbscript |
duke@435 | 123 | rm -f gdbscript |
duke@435 | 124 | else |
duke@435 | 125 | gcore $* $pid |
duke@435 | 126 | fi |
duke@435 | 127 | mv core.$pid sagcore |
duke@435 | 128 | |
duke@435 | 129 | if [ "$dontkill" != "true" ]; then |
duke@435 | 130 | kill -9 $pid |
duke@435 | 131 | fi |
duke@435 | 132 | fi |
duke@435 | 133 |