1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
#!/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License"). You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 1998-2001 by Sun Microsystems, Inc.
# All rights reserved.
#
#ident "%Z%%M% %I% %E% SMI"
mdb_lib=/net/mdb.eng/mdb/archives # Archive library path
mdb_ws=/net/mdb.eng/mdb/snapshot/latest # Snapshot of latest workspace
mdb_args= # Debugger argument string
os_name='s81' # Default OS name prefix
os_rel='5.9' # Default OS release number
mach=`/usr/bin/uname -p` # Machine type
unset mdb_exec build root # Local variables
#
# Attempt to locate a suitable mdb binary to execute, first on the local
# machine, then in the user's workspace, and finally on the MDB server.
# If we select the user's workspace, we also set $root to their proto area
# to force MDB to use shared libraries installed there as well.
#
if [ -n "$CODEMGR_WS" -a -x $CODEMGR_WS/proto/root_$mach/usr/bin/mdb ]; then
mdb_exec=$CODEMGR_WS/proto/root_$mach/usr/bin/mdb
root=$CODEMGR_WS/proto/root_$mach
elif [ -x /usr/bin/mdb -a ! -d /mdb ]; then
mdb_exec=/usr/bin/mdb
root=$mdb_lib/$mach/%R/%V
elif [ -x /usr/bin/mdb -a -d /mdb ]; then
for isa in `isalist`; do
if [ -x /usr/bin/$isa/mdb ]; then
mdb_exec=/usr/bin/$isa/mdb
break
fi
done
if [ -z "$mdb_exec" ]; then
echo "$0: cannot find mdb binary in ISA subdirectories" >& 2
exit 1
fi
root=$mdb_lib/$mach/%R/%V
elif [ -x $mdb_ws/proto/root_$mach/usr/bin/mdb ]; then
mdb_exec=$mdb_ws/proto/root_$mach/usr/bin/mdb
root=$mdb_lib/$mach/%R/%V
fi
#
# Abort if we were not able to locate a copy of mdb to execute.
#
if [ -z "$mdb_exec" ]; then
echo "$0: failed to locate mdb executable" >& 2
exit 1
fi
#
# The wrapper script handles several special command-line arguments that are
# used to select a desired set of MDB macros, modules, and a libkvm binary.
#
if [ $# -gt 0 ]; then
case "$1" in
-s[0-9]*)
build=`echo "$1" | tr -d -`
shift
;;
-[0-9]|-[0-9][0-9])
build=`echo "$1" | tr -d -`
if [ $build -lt 10 ]; then
build=${os_name}_0$build
else
build=${os_name}_$build
fi
shift
;;
-[0-9][0-9]-|-[0-9][0-9][A-Za-z])
build=${os_name}_`echo "$1" | cut -c2- | tr '[A-Z]' '[a-z]'`
shift
;;
-B) build=$os_rel/Beta; shift ;;
-U) build=$os_rel/Beta_Update; shift ;;
-G) build=$os_rel/Generic; shift ;;
-\?)
echo "Usage: $0" \
"[ -s<rel> | -s<bld> | -[0-9]+ | -B | -G | -U ] args ..."
echo "\t-s<rel> Use proto area for specified release"
echo "\t e.g. -${os_name}"
echo "\t-s<bld> Use proto area for specified build"
echo "\t e.g. -${os_name}_01"
echo "\t-[0-9]+ Use proto area for specified build of $os_name"
echo "\t-B Use proto area for $os_rel Beta build"
echo "\t-G Use proto area for $os_rel Generic build\n"
echo "\t-U Use proto area for $os_rel Beta_Update build"
;;
esac
fi
#
# If a build was specified, using the corresponding proto area from $mdb_lib.
# Note that this will override the $root setting determined above.
#
[ -n "$build" ] && root=$mdb_lib/$mach/$build
#
# If a proto area was set either by specifying a build number, or by using
# mdb from $CODEMGR_WS, set LD_LIBRARY_PATH accordingly. This allows mdb to
# pick up the appropriate libkvm.so to examine dumps from that build.
# We also add the -R flag to the mdb command line so that mdb will modify
# its default macro include and module library paths to use the build root.
#
if [ -n "$build" -o "$root" = "$CODEMGR_WS/proto/root_$mach" ]; then
if [ -n "$build" -a ! -d $root ]; then
echo "mdb: $root is missing or not a directory" >& 2
exit 1
fi
[ -n "$LD_LIBRARY_PATH" ] && LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
LD_LIBRARY_PATH="$LD_LIBRARY_PATH$root/usr/lib"
[ -n "$LD_LIBRARY_PATH_64" ] && LD_LIBRARY_PATH_64=$LD_LIBRARY_PATH_64:
LD_LIBRARY_PATH_64="$LD_LIBRARY_PATH_64$root/usr/lib/sparcv9"
export LD_LIBRARY_PATH LD_LIBRARY_PATH_64
elif [ $mdb_exec = $mdb_ws/proto/root_$mach/usr/bin/mdb ]; then
#
# We also need to set LD_LIBRARY_PATH if we're using mdb.eng's mdb
# binary -- it requires the new libproc.so to work properly.
#
usrlib=$mdb_ws/proto/root_$mach/usr/lib
[ -n "$LD_LIBRARY_PATH" ] && LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
LD_LIBRARY_PATH="$LD_LIBRARY_PATH$usrlib"
[ -n "$LD_LIBRARY_PATH_64" ] && LD_LIBRARY_PATH_64=$LD_LIBRARY_PATH_64:
LD_LIBRARY_PATH_64="$LD_LIBRARY_PATH_64$usrlib/sparcv9"
export LD_LIBRARY_PATH LD_LIBRARY_PATH_64
fi
exec $mdb_exec -R $root $mdb_args "$@"
|