msdbg.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 254 行

H
254
字号
/****************************************************************************
*
*                            Open Watcom Project
*
*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
*  ========================================================================
*
*    This file contains Original Code and/or Modifications of Original
*    Code as defined in and that are subject to the Sybase Open Watcom
*    Public License version 1.0 (the 'License'). You may not use this file
*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
*    provided with the Original Code and Modifications, and is also
*    available at www.sybase.com/developer/opensource.
*
*    The Original Code and all software distributed under the License are
*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
*    NON-INFRINGEMENT. Please see the License for the specific language
*    governing rights and limitations under the License.
*
*  ========================================================================
*
* Description:  WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
*               DESCRIBE IT HERE!
*
****************************************************************************/


#ifndef MSDBG_H
#include <watcom.h>
#include "queue.h"
#include "objrec.h"

/*
    This file was built from information provided in

        "Microsoft Symbolic Debugging OMF document", v2.0 June 8, 1989.

    Any hope of understanding these definitions will require said document.
*/

#define MS_DDTYPES      "\x7" "$$TYPES"
#define MS_DDTYPES_LEN  8
#define MS_DDSYMBOLS    "\x9" "$$SYMBOLS"
#define MS_DDSYMBOLS_LEN 10
#define MS_DEBTYP       "\x6" "DEBTYP"
#define MS_DEBTYP_LEN   7
#define MS_DEBSYM       "\x6" "DEBSYM"
#define MS_DEBSYM_LEN   7

#define MS_FLAT         "\x4" "FLAT"
#define MS_FLAT_LEN     5

enum ms_start_leaves {
    MS_SL_BITFIELD          = 0x5c,
    MS_SL_NEWTYPE           = 0x5d,
    MS_SL_STRING            = 0x60,
    MS_SL_CONST             = 0x71,
    MS_SL_LABEL             = 0x72,
    MS_SL_PROCEDURE         = 0x75,
    MS_SL_PARAMETER         = 0x76,
    MS_SL_ARRAY             = 0x78,
    MS_SL_STRUCTURE         = 0x79,
    MS_SL_POINTER           = 0x7a,
    MS_SL_SCALAR            = 0x7b,
    MS_SL_LIST              = 0x7f,
    MS_SL_BARRAY            = 0x8c,
    MS_SL_FSTRING           = 0x8d,
    MS_SL_FARRIDX           = 0x8e,
    MS_SL_SKIP              = 0x90,
    MS_SL_BASED             = 0x91
};

enum ms_basic_component_leaves {
    MS_BCL_NIL              = 0x80,
    MS_BCL_STRING           = 0x82,
    MS_BCL_INDEX            = 0x83,
    MS_BCL_UINT_16          = 0x85,
    MS_BCL_UINT_32          = 0x86,
    MS_BCL_INT_8            = 0x88,
    MS_BCL_INT_16           = 0x89,
    MS_BCL_INT_32           = 0x8a,
    MS_BCL_BASEDSEG         = 0x92,
    MS_BCL_BASEDVAL         = 0x93,
    MS_BCL_BASEDSEGVAL      = 0x94,
    MS_BCL_BASEDADDR        = 0x97,
    MS_BCL_BASEDSEGADDR     = 0x98
};

enum ms_basic_type_leaves {
    MS_BTL_TAG              = 0x5a,
    MS_BTL_VARIANT          = 0x5b,
    MS_BTL_BOOLEAN          = 0x6c,
    MS_BTL_CHARACTER        = 0x6f,
    MS_BTL_INTEGER          = 0x70,
    MS_BTL_UNSIGNED_INT     = 0x7c,
    MS_BTL_SIGNED_INT       = 0x7d,
    MS_BTL_REAL             = 0x7e
};

enum ms_other_leaves {
    MS_OL_HUGE              = 0x5e,
    MS_OL_C_NEAR            = 0x63,
    MS_OL_C_FAR             = 0x64,
    MS_OL_PACKED            = 0x68,
    MS_OL_UNPACKED          = 0x69,
    MS_OL_PLM_FAR           = 0x73,
    MS_OL_PLM_NEAR          = 0x74,
    MS_OL_FASTCALL_NEAR     = 0x95,
    MS_OL_FASTCALL_FAR      = 0x96,
    MS_OL_INLINE            = 0x99
};

enum ms_reserved_types {
/*
    byte format is  x xx xxx xx
                    i md typ sz
*/
    MS_RT_I_FIELD           = 0x80,     /* 1 means interpret md typ sz */
                                        /* 0 means use special_types */

    MS_RT_MD_FIELD          = 0x60,
    MS_RT_MD_DIRECT         = 0x00,     /* 00 in md field       */
    MS_RT_MD_NEAR_PTR       = 0x20,     /* 01                   */
    MS_RT_MD_FAR_PTR        = 0x40,     /* 10                   */
    MS_RT_MD_HUGE_PTR       = 0x60,     /* 11                   */

    MS_RT_TYP_FIELD         = 0x1c,
    MS_RT_TYP_SIGNED        = 0x00,     /* 000 in typ field     */
    MS_RT_TYP_UNSIGNED      = 0x04,     /* 001                  */
    MS_RT_TYP_REAL          = 0x08,     /* 010                  */
    MS_RT_TYP_COMPLEX       = 0x0c,     /* 011                  */
    MS_RT_TYP_BOOLEAN       = 0x10,     /* 100                  */
    MS_RT_TYP_ASCII         = 0x14,     /* 101                  */
    MS_RT_TYP_CURRENCY      = 0x18,     /* 110                  */

    MS_RT_SZ_FIELD          = 0x03,
    MS_RT_SZ_00             = 0x00,     /* 00 in sz field       */
    MS_RT_SZ_01             = 0x01,     /* 01                   */
    MS_RT_SZ_10             = 0x02,     /* 10                   */
    MS_RT_SZ_11             = 0x03,     /* 11                   */
        /* for SIGNED, UNSIGNED, BOOLEAN, ASCII */
    MS_SZ_8BIT              = MS_RT_SZ_00,
    MS_SZ_16BIT             = MS_RT_SZ_01,
    MS_SZ_32BIT             = MS_RT_SZ_10,
        /* for REAL */
    MS_SZ_REAL_4            = MS_RT_SZ_00,
    MS_SZ_REAL_8            = MS_RT_SZ_01,
    MS_SZ_REAL_10           = MS_RT_SZ_10,
        /* for COMPLEX */
    MS_SZ_COMPLEX_8         = MS_RT_SZ_00,
    MS_SZ_COMPLEX_16        = MS_RT_SZ_01,
    MS_SZ_COMPLEX_20        = MS_RT_SZ_10,
        /* for CURRENCY */
    MS_SZ_CURRENCY_8        = MS_RT_SZ_10
};

enum ms_special_types {
    MS_T_NOTYPE             = 0x00,
    MS_T_ABS                = 0x01
};

enum ms_register_vars {
    MS_REG_AL               = 0x00,
    MS_REG_CL               = 0x01,
    MS_REG_DL               = 0x02,
    MS_REG_BL               = 0x03,
    MS_REG_AH               = 0x04,
    MS_REG_CH               = 0x05,
    MS_REG_DH               = 0x06,
    MS_REG_BH               = 0x07,

    MS_REG_AX               = 0x08,
    MS_REG_CX               = 0x09,
    MS_REG_DX               = 0x0a,
    MS_REG_BX               = 0x0b,
    MS_REG_SP               = 0x0c,
    MS_REG_BP               = 0x0d,
    MS_REG_SI               = 0x0e,
    MS_REG_DI               = 0x0f,

    MS_REG_EAX              = 0x10,
    MS_REG_ECX              = 0x11,
    MS_REG_EDX              = 0x12,
    MS_REG_EBX              = 0x13,
    MS_REG_ESP              = 0x14,
    MS_REG_EBP              = 0x15,
    MS_REG_ESI              = 0x16,
    MS_REG_EDI              = 0x17,

    MS_REG_ES               = 0x18,
    MS_REG_CS               = 0x19,
    MS_REG_SS               = 0x1a,
    MS_REG_DS               = 0x1b,
    MS_REG_FS               = 0x1c,
    MS_REG_GS               = 0x1d,

    MS_REG_DX_AX            = 0x20,
    MS_REG_ES_BX            = 0x21,
    MS_REG_IP               = 0x22,
    MS_REG_FLAGS            = 0x23,

    MS_REG_ST0              = 0x80,
    MS_REG_ST1              = 0x81,
    MS_REG_ST2              = 0x82,
    MS_REG_ST3              = 0x83,
    MS_REG_ST4              = 0x84,
    MS_REG_ST5              = 0x85,
    MS_REG_ST6              = 0x86,
    MS_REG_ST7              = 0x87
};

enum ms_symbols_records {
    MS_SYM_BLOCK_START      = 0x00,
    MS_SYM_PROCEDURE_START  = 0x01,
    MS_SYM_END_RECORD       = 0x02,
    MS_SYM_BP_RELATIVE      = 0x04,
    MS_SYM_LOCAL_SYM        = 0x05,
    MS_SYM_CODE_LABEL       = 0x0b,
    MS_SYM_WITH_START       = 0x0c,
    MS_SYM_REGISTER_SYM     = 0x0d,
    MS_SYM_CONSTANT_SYM     = 0x0e,
    MS_SYM_FORTRAN_ENTRY    = 0x0f,
    MS_SYM_SKIP_RECORD      = 0x10,
    MS_SYM_CHANGE_DEF_SEG   = 0x11,
    MS_SYM_TYPEDEF_SYM      = 0x12,

    MS_SYM_386_FLAG         = 0x80      /* indicates 386 style record */
};

enum ms_symbols_others {
    MS_SYM_NEAR             = 0x00,
    MS_SYM_FAR              = 0x04
};

extern int Can2MSMetaware;

extern void Can2MsInit( int metaware, int os2_specific );
extern void Can2MsFini( void );
extern int Can2MsOS2Flat( void );

/* these are only called by routines in can2ms0.c */
extern void Can2MsT( void );
extern void Can2MsS( void );
extern obj_rec *Can2MsRec( uint_8 command );
extern obj_rec *Can2MsSegdef( uint_8 *lname_data, uint_16 lname_len );

#define MSDBG_H 1
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?