Annotation of researchv10dc/man/man5/stab.5, revision 1.1

1.1     ! root        1: .TH STAB 5
        !             2: .CT 1 lib_obj
        !             3: .SH NAME
        !             4: stab \- symbol table types
        !             5: .SH SYNOPSIS
        !             6: .B "#include <stab.h>"
        !             7: .SH DESCRIPTION
        !             8: The include file
        !             9: .L <stab.h>
        !            10: defines some values of the
        !            11: .L n_type
        !            12: field of the symbol table of object files; see
        !            13: .IR a.out (5).
        !            14: These are the types for permanent symbols
        !            15: used by the compilers
        !            16: .IR cc (1)
        !            17: and
        !            18: .IR f77 (1)
        !            19: and the debugger
        !            20: .IR pi (9.1).
        !            21: Symbol table entries are produced by assembler directives:
        !            22: .TP \w'\f5.stabs\ \ \fP'u
        !            23: .B .stabs
        !            24: specifies a name in quotes \f5" "\fR, a symbol type
        !            25: .RL ( n_type ),
        !            26: one char
        !            27: .RL ( n_other ),
        !            28: one short 
        !            29: .RL ( n_desc),
        !            30: and an unsigned long 
        !            31: .RL ( n_value ,
        !            32: usually an address).
        !            33: .PD 0
        !            34: .TP
        !            35: .B .stabd
        !            36: the same, referring to the current location without an explicit
        !            37: name.
        !            38: .TP
        !            39: .B .stabn
        !            40: generates entries with no name.
        !            41: .PD
        !            42: .LP
        !            43: The loader
        !            44: .IR ld (1)
        !            45: preserves the order of symbol table entries produced
        !            46: by these directives.
        !            47: .PP
        !            48: The low bits of the
        !            49: .L n_type
        !            50: field place a symbol into
        !            51: at most one segment, according to
        !            52: the following masks, defined in
        !            53: .BR <a.out.h> .
        !            54: .PP
        !            55: .EX
        !            56: .ta \w'#define\ 'u +\w'N_FNAME\ 'u +\w'0x0\ \ \ 'u
        !            57: #define        N_UNDF  0x0     /* undefined */
        !            58: #define        N_ABS   0x2     /* absolute */
        !            59: #define        N_TEXT  0x4     /* text */
        !            60: #define        N_DATA  0x6     /* data */
        !            61: #define        N_BSS   0x8     /* bss */
        !            62: #define        N_EXT   0x1     /* external bit, or'ed in */
        !            63: .EE
        !            64: .PP
        !            65: The
        !            66: .L n_value
        !            67: field of a symbol is relocated by 
        !            68: .I ld
        !            69: as an address within the appropriate segment,
        !            70: or is unchanged for a symbol not in any segment.
        !            71: In addition, the loader will discard certain symbols, according to rules
        !            72: of its own, unless the
        !            73: .L n_type
        !            74: field has one of the following bits set:
        !            75: .PP
        !            76: .L
        !            77: #define        N_STAB  0xe0
        !            78: .PP
        !            79: This allows up to 112 symbol types, split among the various
        !            80: segments.
        !            81: Some of these have already been claimed.
        !            82: Option 
        !            83: .B -g
        !            84: of
        !            85: .I cc
        !            86: uses the following values, all 4 mod 16, for text symbols.
        !            87: Comments show the pertinent fields of the
        !            88: .B .stabs
        !            89: directive.
        !            90: .PP
        !            91: .EX
        !            92: .ta \w'#define\ 'u +\w'N_ECOMM\ 'u +\w'0x0\ \ \ 'u +\n(wwu
        !            93: #define        N_BFUN  0x24    /* procedure: name,,0,lineno,address */
        !            94: #define        N_FUN   0x24
        !            95: #define        N_NARGS 0x34    /* function call: ,,0,nbytes,address */
        !            96: #define        N_SLINE 0x44    /* src line: ,,0,lineno,address */
        !            97: #define        N_SO    0x64    /* source file: name,,0,lineno,address */
        !            98: #define        N_SOL   0x84    /* #include file: name,,0,lineno,address */
        !            99: #define        N_ESO   0x94    /* end source file: name,,0,lineno,address */
        !           100: #define        N_ENTRY 0xa4    /* alternate entry: name,,0,lineno,address */
        !           101: #define        N_RFUN  0xb4    /* return from function: ,,0,lineno,address */
        !           102: #define        N_LBRAC 0xc4    /* left  bracket: ,,0,level,address */
        !           103: #define        N_RBRAC 0xd4    /* right bracket: ,,0,level,address */
        !           104: #define        N_EFUN  0xf4    /* end of function: name,,0,lineno,address */
        !           105: .EE
        !           106: .PP
        !           107: These values, all 8 mod 16, are used for data symbols:
        !           108: .PP
        !           109: .EX
        !           110: #define        N_LCSYM 0x28    /* .lcomm symbol: name,,0,type,address */
        !           111: #define        N_ECOML 0xe8    /* end common (local name): ,,address */
        !           112: .EE
        !           113: .PP
        !           114: And these for non-relocated symbols:
        !           115: .PP
        !           116: .EX
        !           117: #define        N_GSYM  0x20    /* global symbol: name,,0,type,0 */
        !           118: #define        N_FNAME 0x22    /* procedure name (f77 kludge): name,,0 */
        !           119: #define        N_STFUN 0x32    /* static function: name,,0,type,0 */
        !           120: #define        N_RSYM  0x40    /* register sym: name,,0,type,register */
        !           121: #define        N_BSTR  0x5c    /* begin structure: name,,0,type,length */
        !           122: #define        N_ESTR  0x5e    /* end structure: name,,0,type,length */
        !           123: #define        N_SSYM  0x60    /* structure elt: name,,0,type,offset */
        !           124: #define        N_SFLD  0x70    /* structure field: name,,0,type,offset */
        !           125: #define        N_LSYM  0x80    /* local sym: name,,0,type,offset */
        !           126: #define        N_PSYM  0xa0    /* parameter: name,,0,type,offset */
        !           127: #define        N_BCOMM 0xe2    /* begin common: name,, */
        !           128: #define        N_ECOMM 0xe4    /* end common: name,, */
        !           129: #define        N_VER   0xf0    /* symbol table version number */
        !           130: #define        N_TYID  0xfa    /* struct, union, or enum name */
        !           131: #define        N_DIM   0xfc    /* dimension for arrays */
        !           132: .EE
        !           133: .PP
        !           134: Field
        !           135: .L n_desc
        !           136: holds a type specifier in the form used by
        !           137: .IR cc (1),
        !           138: by up to 6 qualifiers, with
        !           139: .B q1
        !           140: most significant:
        !           141: .PP
        !           142: .EX
        !           143: .ta \w'#define 'u +\w'short\ \ 'u
        !           144: struct desc    {
        !           145:        short   q6:2, q5:2, q4:2, q3:2, q2:2, q1:2;
        !           146:        short   basic:5;
        !           147: };
        !           148: .EE
        !           149: .PP
        !           150: The qualifiers are coded thus:
        !           151: .2C
        !           152: \f50\fR        none
        !           153: \f51\fR        pointer
        !           154: \f52\fR        function
        !           155: \f53\fR        array
        !           156: .1C
        !           157: .PP
        !           158: The basic types are coded thus:
        !           159: .2C
        !           160: \f50\fR        undefined
        !           161: \f51\fR        function argument
        !           162: \f52\fR        character
        !           163: \f53\fR        short
        !           164: \f54\fR        int
        !           165: \f55\fR        long
        !           166: \f56\fR        float
        !           167: \f57\fR        double
        !           168: \f58\fR        structure
        !           169: \f59\fR        union
        !           170: \f510\fR       enumeration
        !           171: \f511\fR       member of enumeration
        !           172: \f512\fR       unsigned character
        !           173: \f513\fR       unsigned short
        !           174: \f514\fR       unsigned int
        !           175: \f515\fR       unsigned long
        !           176: \f516\fR       void
        !           177: .1C
        !           178: .PP
        !           179: The Pascal compiler,
        !           180: .IR pc (A),
        !           181: uses the following
        !           182: .L n_type
        !           183: value:
        !           184: .PP
        !           185: .L
        !           186: #define        N_PC    0x30    /* global pascal symbol: name,,0,subtype,line */
        !           187: .PP
        !           188: and uses the following subtypes to do type checking across separately
        !           189: compiled files:
        !           190: .2C
        !           191: \f51\fR        source file name
        !           192: \f52\fR        included file name
        !           193: \f53\fR        global label
        !           194: \f54\fR        global constant
        !           195: \f55\fR        global type
        !           196: \f56\fR        global variable
        !           197: \f57\fR        global function
        !           198: \f58\fR        global procedure
        !           199: \f59\fR        external function
        !           200: \f510\fR       external procedure
        !           201: .1C
        !           202: .SH "SEE ALSO"
        !           203: .IR a.out (5), 
        !           204: .IR pi (9.1), 
        !           205: .IR as (1), 
        !           206: .IR ld (1)
        !           207: .SH BUGS
        !           208: .PP
        !           209: The loader's relocation conventions limit the number of useful
        !           210: .LR n_type
        !           211: values.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.