dmpobj.h
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 173 行
H
173 行
/****************************************************************************
*
* 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: Internal definitions for dmpobj.
*
****************************************************************************/
#include <stdio.h>
#include <setjmp.h>
#include "pcobj.h"
typedef unsigned_8 byte;
typedef enum {FALSE, TRUE} bool;
#define CRLF "\n"
#if defined( __QNX__ )
#define OBJSUFFIX ".o"
#define LSTSUFFIX ".lst"
#else
#define OBJSUFFIX ".obj"
#define LSTSUFFIX ".lst"
#endif
#define INDENT " "
#define INDWIDTH (sizeof( INDENT ) - 1)
#define BAILOUT CRLF INDENT "!! "
/*
Output routines (output.c)
*/
extern void OutputInit( void );
extern void OutputFini( void );
extern void OutputSetFH( FILE * );
extern size_t Output( const char *fmt, ... );
extern void OutputData( unsigned_32 off, unsigned_32 len );
extern int no_disp;
/*
Object reading (objread.c)
*/
typedef byte *data_ptr;
typedef struct Lnamelist {
struct Lnamelist *next;
byte LnameLen;
byte Lname; // really LnameLen bytes ( can be ZERO )
} Lnamelist;
typedef struct Segdeflist {
struct Segdeflist *next;
unsigned_16 segind; /* into lnames */
} Segdeflist;
#define MAXGRPSEGS 64
typedef struct Grpdeflist {
struct Grpdeflist *next;
unsigned_16 grpind; /* into Lnames for grpname */
unsigned_16 segidx[ MAXGRPSEGS ]; /* into segdefs for members */
} Grpdeflist;
extern data_ptr NamePtr;
extern byte NameLen;
extern unsigned_16 RecLen;
extern data_ptr RecBuff;
extern data_ptr RecPtr;
extern unsigned_16 RecMaxLen;
extern unsigned_16 Segindex;
extern unsigned_16 Nameindex;
extern unsigned_16 Importindex;
extern unsigned_16 Libindex;
extern bool IsPharLap;
extern bool IsMS386;
extern bool IsIntel;
extern bool DumpRaw;
extern jmp_buf BailOutJmp;
extern char ProvideRawTypes[];
extern char OmitTypes[];
extern bool IgnoreOutput;
extern byte rec_type[];
extern int rec_count;
extern bool EndRec( void );
extern unsigned_16 RecOffset( void );
extern byte GetByte( void );
extern void BackupByte( void );
extern unsigned_16 GetUInt( void );
extern unsigned_32 GetLInt( void );
extern unsigned_32 GetEither( void );
extern byte GetName( void ); /* length prefixed name */
extern unsigned_16 GetIndex( void );
extern unsigned_32 GetVariable( void );
extern void ResizeBuff( unsigned_16 reqd_len );
extern void ProcFile( FILE *fp, bool );
extern byte RecNameToNumber( char *name );
extern const char *RecNumberToName( byte code );
extern void AddLname( void );
extern char *GetLname( unsigned_16 idx );
extern void AddSegdef( unsigned_16 idx );
extern Segdeflist *GetSegdef( unsigned_16 idx );
extern void AddGrpdef( unsigned_16 grpidx, unsigned_16 segidx );
extern Grpdeflist *GetGrpdef( unsigned_16 idx );
extern unsigned_16 GetGrpseg( unsigned_16 idx );
extern void AddXname( void );
extern char *GetXname( unsigned_16 idx );
/*
Record processing routines
*/
extern void ProcEndRec( void );
extern void ProcTHeadr( void );
extern void ProcLHeadr( void );
extern void ProcRHeadr( void );
extern void ProcComent( void );
extern void ProcNames( unsigned_16 * );
extern void ProcLNames( unsigned_16 * );
extern void ProcExtNames( void );
extern void ProcModEnd( void );
extern void ProcSegDefs( void );
extern void ProcLocSyms( void );
extern void ProcPubDefs( void );
extern void ProcComDef( void );
extern void ProcLinNums( void );
extern void ProcLidata( void );
extern void ProcLedata( void );
extern void ProcFixup( void );
extern void ProcGrpDef( void );
extern void ProcLibHeader( void );
extern void ProcLibTrailer( FILE *fp );
extern void ProcBackPat( void );
extern void ProcNameBackPat( void );
extern void ProcComExtDef( void );
extern void ProcComDat( void );
extern void ProcLineSym( void );
extern void ProcAlias( void );
extern void ProcVerNum( void );
extern void ProcVendExt( void );
/*
Misc routines (dmpobj.c)
*/
extern void leave( int );
extern bool Descriptions;
extern bool InterpretComent;
extern bool TranslateIndex;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?