annotate src/os/posix/launcher/launcher.script @ 2023:54f5dd2aa1d9

Merge
author zgu
date Sat, 11 Dec 2010 13:46:36 -0500
parents cb2d0a362639
children aa6e219afbf1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1985
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
1 #!/bin/bash
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
2
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
3 # Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
5 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
6 # This code is free software; you can redistribute it and/or modify it
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
7 # under the terms of the GNU General Public License version 2 only, as
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
8 # published by the Free Software Foundation.
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
9 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
10 # This code is distributed in the hope that it will be useful, but WITHOUT
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
13 # version 2 for more details (a copy is included in the LICENSE file that
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
14 # accompanied this code).
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
15 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
16 # You should have received a copy of the GNU General Public License version
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
17 # 2 along with this work; if not, write to the Free Software Foundation,
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
19 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
20 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
21 # or visit www.oracle.com if you need additional information or have any
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
22 # questions.
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
23
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
24
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
25 # This script launches HotSpot.
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
26 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
27 # If the first parameter is either "-gdb" or "-gud", HotSpot will be
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
28 # launched inside gdb. "-gud" means "open an Emacs window and run gdb
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
29 # inside Emacs".
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
30 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
31 # If the first parameter is "-dbx", HotSpot will be launched inside dbx.
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
32 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
33 # If the first parameter is "-valgrind", HotSpot will be launched
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
34 # inside Valgrind (http://valgrind.kde.org) using the Memcheck skin,
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
35 # and with memory leak detection enabled. This currently (2005jan19)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
36 # requires at least Valgrind 2.3.0. -Xmx16m will also be passed as
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
37 # the first parameter to HotSpot, since lowering HotSpot's memory
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
38 # consumption makes execution inside of Valgrind *a lot* faster.
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
39 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
40
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
41
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
42 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
43 # User changeable parameters ------------------------------------------------
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
44 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
45
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
46 # This is the name of the gdb binary to use
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
47 if [ ! "$GDB" ]
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
48 then
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
49 GDB=gdb
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
50 fi
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
51
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
52 # This is the name of the gdb binary to use
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
53 if [ ! "$DBX" ]
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
54 then
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
55 DBX=dbx
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
56 fi
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
57
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
58 # This is the name of the Valgrind binary to use
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
59 if [ ! "$VALGRIND" ]
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
60 then
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
61 VALGRIND=valgrind
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
62 fi
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
63
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
64 # This is the name of Emacs for running GUD
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
65 EMACS=emacs
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
66
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
67 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
68 # End of user changeable parameters -----------------------------------------
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
69 #
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
70
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
71 # Make sure the paths are fully specified, i.e. they must begin with /.
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
72 SCRIPT=$(cd $(dirname $0) && pwd)/$(basename $0)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
73 RUNDIR=$(pwd)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
74
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
75 # Look whether the user wants to run inside gdb
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
76 case "$1" in
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
77 -gdb)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
78 MODE=gdb
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
79 shift
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
80 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
81 -gud)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
82 MODE=gud
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
83 shift
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
84 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
85 -dbx)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
86 MODE=dbx
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
87 shift
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
88 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
89 -valgrind)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
90 MODE=valgrind
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
91 shift
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
92 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
93 *)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
94 MODE=run
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
95 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
96 esac
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
97
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
98 if [ "${ALT_JAVA_HOME}" = "" ]; then
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
99 if [ "${JAVA_HOME}" = "" ]; then
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
100 echo "Neither ALT_JAVA_HOME nor JAVA_HOME is set. Aborting.";
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
101 exit 1;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
102 else
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
103 JDK=${JAVA_HOME%%/jre};
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
104 fi
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
105 else
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
106 JDK=${ALT_JAVA_HOME%%/jre};
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
107 fi
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
108
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
109 # We will set the LD_LIBRARY_PATH as follows:
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
110 # o $JVMPATH (directory portion only)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
111 # o $JRE/lib/$ARCH
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
112 # followed by the user's previous effective LD_LIBRARY_PATH, if
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
113 # any.
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
114 JRE=$JDK/jre
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
115 JAVA_HOME=$JDK
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
116 ARCH=@@LIBARCH@@
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
117
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
118 # Find out the absolute path to this script
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
119 MYDIR=$(cd $(dirname $SCRIPT) && pwd)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
120
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
121 SBP=${MYDIR}:${JRE}/lib/${ARCH}
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
122
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
123 # Set up a suitable LD_LIBRARY_PATH
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
124
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
125 if [ -z "$LD_LIBRARY_PATH" ]
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
126 then
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
127 LD_LIBRARY_PATH="$SBP"
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
128 else
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
129 LD_LIBRARY_PATH="$SBP:$LD_LIBRARY_PATH"
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
130 fi
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
131
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
132 export LD_LIBRARY_PATH
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
133 export JAVA_HOME
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
134
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
135 JPARMS="$@ $JAVA_ARGS";
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
136
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
137 # Locate the gamma development launcher
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
138 LAUNCHER=${MYDIR}/gamma
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
139 if [ ! -x $LAUNCHER ] ; then
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
140 echo Error: Cannot find the gamma development launcher \"$LAUNCHER\"
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
141 exit 1
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
142 fi
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
143
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
144 GDBSRCDIR=$MYDIR
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
145 BASEDIR=$(cd $MYDIR/../../.. && pwd)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
146
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
147 init_gdb() {
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
148 # Create a gdb script in case we should run inside gdb
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
149 GDBSCR=/tmp/hsl.$$
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
150 rm -f $GDBSCR
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
151 cat >>$GDBSCR <<EOF
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
152 cd `pwd`
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
153 handle SIGUSR1 nostop noprint
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
154 handle SIGUSR2 nostop noprint
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
155 set args $JPARMS
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
156 file $LAUNCHER
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
157 directory $GDBSRCDIR
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
158 # Get us to a point where we can set breakpoints in libjvm.so
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
159 break InitializeJVM
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
160 run
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
161 # Stop in InitializeJVM
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
162 delete 1
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
163 # We can now set breakpoints wherever we like
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
164 EOF
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
165 }
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
166
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
167
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
168 case "$MODE" in
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
169 gdb)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
170 init_gdb
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
171 $GDB -x $GDBSCR
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
172 rm -f $GDBSCR
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
173 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
174 gud)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
175 init_gdb
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
176 # First find out what emacs version we're using, so that we can
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
177 # use the new pretty GDB mode if emacs -version >= 22.1
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
178 case $($EMACS -version 2> /dev/null) in
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
179 *GNU\ Emacs\ 2[23]*)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
180 emacs_gud_cmd="gdba"
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
181 emacs_gud_args="--annotate=3"
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
182 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
183 *)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
184 emacs_gud_cmd="gdb"
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
185 emacs_gud_args=
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
186 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
187 esac
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
188 $EMACS --eval "($emacs_gud_cmd \"$GDB $emacs_gud_args -x $GDBSCR\")";
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
189 rm -f $GDBSCR
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
190 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
191 dbx)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
192 $DBX -s $MYDIR/.dbxrc $LAUNCHER $JPARAMS
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
193 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
194 valgrind)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
195 echo Warning: Defaulting to 16Mb heap to make Valgrind run faster, use -Xmx for larger heap
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
196 echo
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
197 $VALGRIND --tool=memcheck --leak-check=yes --num-callers=50 $LAUNCHER -Xmx16m $JPARMS
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
198 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
199 run)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
200 LD_PRELOAD=$PRELOADING exec $LAUNCHER $JPARMS
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
201 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
202 *)
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
203 echo Error: Internal error, unknown launch mode \"$MODE\"
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
204 exit 1
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
205 ;;
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
206 esac
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
207 RETVAL=$?
cb2d0a362639 6981484: Update development launcher
sla
parents:
diff changeset
208 exit $RETVAL