'\" te .\" Copyright 2001 Sun Microsystems, Inc. All Rights Reserved .\" The contents of this file are subject to the terms of the Common Development and Distribution License (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] .TH OBPSYM 1M "Dec 13, 2001" .SH NAME obpsym \- Kernel Symbolic Debugging for OpenBoot Firmware .SH SYNOPSIS .LP .nf \fBmodload\fR \fB-p\fR misc/obpsym .fi .SH DESCRIPTION .sp .LP \fBobpsym\fR is a kernel module that installs OpenBoot callback handlers that provide kernel symbol information to OpenBoot. OpenBoot firmware user interface commands use the callbacks to convert numeric \fIaddresses\fR to kernel symbol names for display purposes, and to convert kernel symbol names to numeric \fIliterals\fR allowing symbolic names to be used as input arguments to user interface commands. .sp .LP Once \fBobpsym\fR is installed, kernel symbolic names may be used anywhere at the OpenBoot firmware's user interface command prompt in place of a literal (numeric) string. For example, if \fBobpsym\fR is installed, the OpenBoot firmware commands \fBctrace\fR and \fBdis\fR typically display symbolic names and offsets in the form \fImodname:symbolname + offset.\fR User interface Commands such as \fBdis\fR can be given a kernel symbolic name such as \fBufs:ufs_mount\fR instead of a numeric address. .sp .LP Placing the command .sp .LP \fBforceload: misc/obpsym\fR .sp .LP into the \fBsystem\fR(4) file forces the kernel module \fBmisc/obpsym\fR to be loaded and activates the kernel callbacks during the kernel startup sequence. .sp .LP \fBobpsym\fR may be useful as a kernel debugger in situations where other kernel debuggers are not useful. For example, on SPARC machines, if \fBobpsym\fR is loaded, you may be able to use the OpenBoot firmware's \fBctrace\fR command to display symbolic names in the stack backtrace after a watchdog reset. .SS "Kernel Symbolic Name Syntax" .sp .LP The syntax for a kernel symbolic name is: .sp .LP \fB\fR [ \fImodule-name\fR \fB:\fR ] \fIsymbol-name\fR .sp .LP Where \fImodule-name\fR is the name of the kernel module that the symbol \fIsymbol-name\fR appears in. A \fINULL\fR module name is taken as "all modules, in no particular order" by \fBobpsym\fR. The module name \fBunix\fR is equivalent to a \fINULL\fR module name, so that conflicts with words defined in the firmware's vocabulary can be avoided. .sp .LP Typically, OpenBoot firmware reads a word from the input stream and looks the word up in its internal \fIvocabulary\fR before checking if the word is a \fIliteral\fR. Thus, kernel symbols, such as \fBreset\fR may be given as \fBunix:reset\fR to avoid the unexpected side effect of the firmware finding and executing a matching word in its vocabulary. .SH FILES .sp .ne 2 .na \fB\fB/etc/system\fR\fR .ad .sp .6 .RS 4n system configuration information file .RE .sp .ne 2 .na \fB\fB/platform/\fR\fIplatform-name\fR\fB/kernel/misc/obpsym\fR\fR .ad .sp .6 .RS 4n .RE .SH SEE ALSO .sp .LP \fBkadb\fR(1M), \fBkernel\fR(1M), \fBmodload\fR(1M), \fBmodunload\fR(1M), \fBuname\fR(1), \fBsystem\fR(4), \fBattributes\fR(5) .sp .LP \fI\fR .SH WARNINGS .sp .LP Some OpenBoot firmware user interface commands may use system resources incompatibly with the way they are used by the Unix kernel. These commands and the use of this feature as a kernel debugger may cause interactions that the Unix kernel is not prepared to deal with. If this occurs, the Unix kernel and/or the OpenBoot firmware user interface commands may react unpredictably and may panic the system, or may hang or may cause other unpredictable results. For these reasons, the use of this feature is only minimally supported and recommended to be used only as a kernel debugger of "last resort". .sp .LP If a breakpoint or watchpoint is triggered while the console frame buffer is powered off, the system can crash and be left in a state from which it is difficult to recover. If one of these is triggered while the monitor is powered off, you will not be able to see the debugger output. .SH NOTES .sp .LP \fIplatform-name\fR can be found using the \fB-i\fR option of \fBuname\fR(1) .sp .LP \fBobpsym\fR is supported only on architectures that support OpenBoot firmware. .sp .LP On some systems, OpenBoot must be completely RAM resident so the \fBobpsym\fR symbol callback support can be added to the firmware, if the firmware doesn't include support for the symbol callbacks. On these systems, \fBobpsym\fR may complain that it requires that "you must use ramforth to use this module". .sp .LP See the for details on how to use the \fIramforth\fR command, how to place the command into \fInvramrc\fR, and how to set \fIuse-nvramrc?\fR to \fBtrue\fR. On systems with version 1.x OpenBoot firmware, \fInvramrc\fR doesn't exist, and the \fIramforth\fR command must be typed manually after each reset, in order to use this module. .sp .LP Once installed, the symbol table callbacks can be disabled by using the following OpenBoot firmware command: .sp .LP \fB0 0 set-symbol-lookup\fR