BSD 4_3_Net_2 release
[unix-history] / usr / src / share / man / man5 / stab.5
index 213be4b..83e2c42 100644 (file)
@@ -1,52 +1,81 @@
-.\" Copyright (c) 1980 Regents of the University of California.
-.\" All rights reserved.  The Berkeley software License Agreement
-.\" specifies the terms and conditions for redistribution.
+.\" Copyright (c) 1980, 1991 Regents of the University of California.
+.\" All rights reserved.
 .\"
 .\"
-.\"    @(#)stab.5      6.3 (Berkeley) %G%
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
 .\"
-.TH STAB 5 ""
-.UC 4
-.SH NAME
-stab \- symbol table types
-.SH SYNOPSIS
-.B "#include <stab.h>"
-.SH DESCRIPTION
-.I Stab.h
-defines some values of the n_type field of the symbol table of a.out files.
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)stab.5     6.5 (Berkeley) 5/10/91
+.\"
+.Dd May 10, 1991
+.Dt STAB 5
+.Os BSD 4
+.Sh NAME
+.Nm stab
+.Nd symbol table types
+.Sh SYNOPSIS
+.Fd #include <stab.h>
+.Sh DESCRIPTION
+The file
+.Aq Pa stab.h
+defines some of the symbol table
+.Fa n_type
+field values for a.out files.
 These are the types for permanent symbols (i.e. not local labels, etc.)
 used by the old debugger
 These are the types for permanent symbols (i.e. not local labels, etc.)
 used by the old debugger
-.I sdb
+.Em sdb
 and the Berkeley Pascal compiler
 and the Berkeley Pascal compiler
-.IR pc (1).
+.Xr pc 1 .
 Symbol table entries can be produced by the
 Symbol table entries can be produced by the
-.I .stabs
+.Pa .stabs
 assembler directive.
 This allows one to specify a double-quote delimited name, a symbol type,
 one char and one short of information about the symbol, and an unsigned
 long (usually an address).
 To avoid having to produce an explicit label for the address field,
 the
 assembler directive.
 This allows one to specify a double-quote delimited name, a symbol type,
 one char and one short of information about the symbol, and an unsigned
 long (usually an address).
 To avoid having to produce an explicit label for the address field,
 the
-.I .stabd
+.Pa .stabd
 directive can be used to implicitly address the current location.
 If no name is needed, symbol table entries can be generated using the
 directive can be used to implicitly address the current location.
 If no name is needed, symbol table entries can be generated using the
-.I .stabn
+.Pa .stabn
 directive.
 The loader promises to preserve the order of symbol table entries produced
 by
 directive.
 The loader promises to preserve the order of symbol table entries produced
 by
-.I .stab
+.Pa .stab
 directives.
 As described in
 directives.
 As described in
-.IR a.out (5),
+.Xr a.out 5 ,
 an element of the symbol table
 consists of the following structure:
 an element of the symbol table
 consists of the following structure:
-.PP
-.nf
+.Bd -literal
 /*
 /*
-.ti +\w'/'u
 * Format of a symbol table entry.
 * Format of a symbol table entry.
-.ti +\w'/'u
 */
 */
-.ta \w'#define\ 'u +\w'unsigned 'u +\w'char\ \ 'u +\w'n_name;\ \ 'u
+
 struct nlist {
        union {
                char    *n_name;        /* for use when in-core */
 struct nlist {
        union {
                char    *n_name;        /* for use when in-core */
@@ -57,23 +86,21 @@ struct nlist {
        short           n_desc;         /* see struct desc, below */
        unsigned        n_value;        /* address or offset or line */
 };
        short           n_desc;         /* see struct desc, below */
        unsigned        n_value;        /* address or offset or line */
 };
-.fi
-.DT
-.PP
-The low bits of the n_type field are used to place a symbol into
+.Ed
+.Pp
+The low bits of the
+.Fa n_type
+field are used to place a symbol into
 at most one segment, according to 
 the following masks, defined in
 at most one segment, according to 
 the following masks, defined in
-.RI < a.out.h >.
+.Aq Pa a.out.h .
 A symbol can be in none of these segments by having none of these segment
 bits set.
 A symbol can be in none of these segments by having none of these segment
 bits set.
-.PP
-.nf
+.Bd -literal
 /*
 /*
-.ti +\w'/'u
 * Simple values for n_type.
 * Simple values for n_type.
-.ti +\w'/'u
 */
 */
-.ta \w'#define\ 'u +\w'N_FNAME\ 'u +\w'0x0\ \ \ 'u
+
 #define        N_UNDF  0x0     /* undefined */
 #define        N_ABS   0x2     /* absolute */
 #define        N_TEXT  0x4     /* text */
 #define        N_UNDF  0x0     /* undefined */
 #define        N_ABS   0x2     /* absolute */
 #define        N_TEXT  0x4     /* text */
@@ -81,39 +108,35 @@ bits set.
 #define        N_BSS   0x8     /* bss */
 
 #define        N_EXT   01      /* external bit, or'ed in */
 #define        N_BSS   0x8     /* bss */
 
 #define        N_EXT   01      /* external bit, or'ed in */
-.DT
-.fi
-.PP
-The n_value field of a symbol is relocated by the linker,
-.IR ld (1)
+.Ed
+.Pp
+The
+.Fa n_value
+field of a symbol is relocated by the linker,
+.Xr ld 1
 as an address within the appropriate segment.
 as an address within the appropriate segment.
-N_value fields of symbols not in any segment are unchanged by the linker.
+.Fa N_value
+fields of symbols not in any segment are unchanged by the linker.
 In addition, the linker will discard certain symbols, according to rules
 In addition, the linker will discard certain symbols, according to rules
-of its own, unless the n_type field has one of the following bits set:
-.PP
-.nf
+of its own, unless the
+.Fa n_type
+field has one of the following bits set:
+.Bd -literal
 /*
 /*
-.ti +\w'/'u
 * Other permanent symbol table entries have some of the N_STAB bits set.
 * Other permanent symbol table entries have some of the N_STAB bits set.
-.ti +\w'/'u
 * These are given in <stab.h>
 * These are given in <stab.h>
-.ti +\w'/'u
 */
 */
-.ta \w'#define\ 'u +\w'N_FNAME\ 'u +\w'0x0\ \ \ 'u
-#define        N_STAB          0xe0            /* if any of these bits set, don't discard */
 
 
-.DT
-.fi
-.PP
+#define        N_STAB  0xe0    /* if any of these bits set, don't discard */
+.Ed
+.Pp
 This allows up to 112 (7 \(** 16) symbol types, split between the various
 segments.
 Some of these have already been claimed.
 The old symbolic debugger,
 This allows up to 112 (7 \(** 16) symbol types, split between the various
 segments.
 Some of these have already been claimed.
 The old symbolic debugger,
-.IR sdb ,
+.Em sdb ,
 uses the following n_type values:
 uses the following n_type values:
-.PP
-.nf
-.ta \w'#define\ 'u +\w'N_FNAME\ 'u +\w'0x0\ \ \ 'u
+.Bd -literal
 #define        N_GSYM  0x20    /* global symbol: name,,0,type,0 */
 #define        N_FNAME 0x22    /* procedure name (f77 kludge): name,,0 */
 #define        N_FUN   0x24    /* procedure: name,,0,linenumber,address */
 #define        N_GSYM  0x20    /* global symbol: name,,0,type,0 */
 #define        N_FNAME 0x22    /* procedure name (f77 kludge): name,,0 */
 #define        N_FUN   0x24    /* procedure: name,,0,linenumber,address */
@@ -133,47 +156,67 @@ uses the following n_type values:
 #define        N_ECOMM 0xe4    /* end common: name,, */
 #define        N_ECOML 0xe8    /* end common (local name): ,,address */
 #define        N_LENG  0xfe    /* second stab entry with length information */
 #define        N_ECOMM 0xe4    /* end common: name,, */
 #define        N_ECOML 0xe8    /* end common (local name): ,,address */
 #define        N_LENG  0xfe    /* second stab entry with length information */
-.fi
-.PP
+.Ed
+.Pp
 where the comments give
 where the comments give
-.I sdb
+.Em sdb
 conventional use for
 conventional use for
-.IR .stab s
-and the n_name, n_other, n_desc, and n_value fields
-of the given n_type. 
-.I Sdb
-uses the n_desc field to hold a type specifier in the form used
+.Pa .stab
+.Fa s
+and the
+.Fa n_name ,
+.Fa n_other ,
+.Fa n_desc ,
+and
+.Fa n_value
+fields
+of the given
+.Fa n_type . 
+.Em Sdb
+uses the
+.Fa n_desc
+field to hold a type specifier in the form used
 by the Portable C Compiler,
 by the Portable C Compiler,
-.IR cc (1);
-see the header file \fIpcc.h\fP
+.Xr cc 1 ;
+see the header file
+.Pa pcc.h
 for details on the format of these type values.
 for details on the format of these type values.
-.PP
+.Pp
 The Berkeley Pascal compiler,
 The Berkeley Pascal compiler,
-.IR pc (1),
-uses the following n_type value:
-.PP
-.nf
+.Xr pc 1 ,
+uses the following
+.Fa n_type
+value:
+.Bd -literal
 #define        N_PC    0x30    /* global pascal symbol: name,,0,subtype,line */
 #define        N_PC    0x30    /* global pascal symbol: name,,0,subtype,line */
-.fi
-.PP
+.Ed
+.Pp
 and uses the following subtypes to do type checking across separately
 compiled files:
 and uses the following subtypes to do type checking across separately
 compiled files:
-.nf
-       1       source file name
-       2       included file name
-       3       global label
-       4       global constant
-       5       global type
-       6       global variable
-       7       global function
-       8       global procedure
-       9       external function
-       10      external procedure
-       11      library variable
-       12      library routine
-.fi
-.SH "SEE ALSO"
-as(1), ld(1), dbx(1), a.out(5)
-.SH BUGS
-.PP
+.Bd -unfilled -offset indent
+1      source file name
+2      included file name
+3      global label
+4      global constant
+5      global type
+6      global variable
+7      global function
+8      global procedure
+9      external function
+10     external procedure
+11     library variable
+12     library routine
+.Ed
+.Sh SEE ALSO
+.Xr as 1 ,
+.Xr ld 1 ,
+.Xr dbx 1 ,
+.Xr a.out 5
+.Sh BUGS
+.Pp
 More basic types are needed.
 More basic types are needed.
+.Sh HISTORY
+The
+.Nm stab
+file appeared in
+.Bx 4.0 .