Annotation of coherent/d/bin/cc/c/h/debug.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Debugger information structures.
        !             3:  * Debug segment is sequence of symbols.
        !             4:  */
        !             5: 
        !             6: #ifndef        DEBUG_H
        !             7: #define        DEBUG_H DEBUG_H
        !             8: 
        !             9: #include <reloc.h>
        !            10: #include <ltype.h>
        !            11: 
        !            12: /*
        !            13:  * The debug segment of a relocatable file is a collection of symbols,
        !            14:  * possibly spread over several fragments,
        !            15:  * with relocation applied to the values of relocatable symbols.
        !            16:  * These symbols form a number (usually one) of source file symbol blocks.
        !            17:  *
        !            18:  * A symbol block consists of a symbol having a local symbol table
        !            19:  * (source file, function, struct type, union type, enum type etc.)
        !            20:  * then a begin symbol
        !            21:  * followed by a list of local symbols and (recursively defined) symbol blocks,
        !            22:  * terminated by an end symbol.
        !            23:  *
        !            24:  * A source file symbol has the name of the source file,
        !            25:  * the address of the first executable statement,
        !            26:  * and type "source file".
        !            27:  *
        !            28:  * A begin symbol
        !            29:  * has name "{", the address of the first executable statement,
        !            30:  * and type containing a dbst_t structure in a numeric type node.
        !            31:  *
        !            32:  * An end symbol has name "}", the address just past the last executable code,
        !            33:  * and type as for a begin symbol.
        !            34:  *
        !            35:  * A source statement symbol has name ";", the address of the corresponding
        !            36:  * executable code, and type as for a begin symbol.
        !            37:  *
        !            38:  * Local symbols on the stack have seg L_STACK;
        !            39:  * parameters have seg P_STACK;
        !            40:  * the address is the offset (in bytes) from the frame pointer.
        !            41:  * Register class symbols have seg L_REG and address identifying
        !            42:  * the register (machine dependent).
        !            43:  *
        !            44:  * Struct and union members have seg FLD_OFF;
        !            45:  * the address is offset in bits.
        !            46:  *
        !            47:  * Enum members have seg ABSLUTE; address is numeric value.
        !            48:  *
        !            49:  * Type strings conform to same syntax as loader type strings;
        !            50:  * all references to named types are represented by name strings.
        !            51:  * Type symbols (seg TYPESYM) define these names in terms of loader types.
        !            52:  */
        !            53: 
        !            54: #define        P_STACK (SUMMARY+1)
        !            55: #define        L_STACK (SUMMARY+2)
        !            56: #define        L_REG   (SUMMARY+3)
        !            57: #define        FLD_OFF (SUMMARY+4)
        !            58: 
        !            59: typedef        struct  dbst_t  {               /* structure in type string for stat */
        !            60:        unsigned short  db_line;        /* line number */
        !            61:        unsigned char   db_col,         /* column number */
        !            62:                        db_flag;        /* flags internal to debugger */
        !            63:        unsigned short  db_code;        /* saved instruction code */
        !            64: } dbst_t;
        !            65: 
        !            66: #endif

unix.superglobalmegacorp.com

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