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