/* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */ #if __SC__ || __RCC__ #pragma once #endif #ifndef __SYMS_H #define __SYMS_H /* Used when dealing with COFF files. */ #if __cplusplus extern "C" { #endif #pragma pack(2) struct syment { #define SYMNMLEN 8 union { char _n_name[SYMNMLEN]; struct { long _n_zeroes; long _n_offset; } _n_n; char *_n_nptr[2]; } _n; long n_value; short n_scnum; unsigned short n_type; char n_sclass; char n_numaux; }; #define n_name _n._n_name #define n_nptr _n._n_nptr[1] #define n_zeroes _n._n_n._n_zeroes #define n_offset _n._n_n._n_offset #define N_UNDEF 0 #define N_ABS -1 #define N_DEBUG -2 #define N_TV -3 #define P_TV -4 #define _EF ".ef" #define T_NULL 0 #define T_ARG 1 #define T_CHAR 2 #define T_SHORT 3 #define T_INT 4 #define T_LONG 5 #define T_FLOAT 6 #define T_DOUBLE 7 #define T_STRUCT 8 #define T_UNION 9 #define T_ENUM 10 #define T_MOE 11 #define T_UCHAR 12 #define T_USHORT 13 #define T_UINT 14 #define T_ULONG 15 #define DT_NON 0 #define DT_PTR 1 #define DT_FCN 2 #define DT_ARY 3 #define N_BTMASK 017 #define N_TMASK 060 #define N_TMASK1 0300 #define N_TMASK2 0360 #define N_BTSHFT 4 #define N_TSHIFT 2 #define BTYPE(A) ((A)&N_BTMASK) #define ISPTR(A) (((A)&N_TMASK)==(DT_PTR<>N_TSHIFT)&~N_BTMASK)|((A)&N_BTMASK)) union auxent { struct { long x_tagndx; union { struct { unsigned short x_lnno; unsigned short x_size; } x_lnsz; long x_fsize; } x_misc; union { struct { long x_lnnoptr; long x_endndx; }x_fcn; struct { #define DIMNUM 4 unsigned short x_dimen[DIMNUM]; } x_ary; }x_fcnary; unsigned short x_tvndx; } x_sym; struct { #define FILNMLEN 14 char x_fname[FILNMLEN]; } x_file; struct { long x_scnlen; unsigned short x_nreloc; unsigned short x_nlinno; } x_scn; struct { long x_tvfill; unsigned short x_tvlen; unsigned short x_tvran[2]; }x_tv; }; #define SYMENT struct syment #define SYMESZ sizeof(SYMENT) #define AUXENT union auxent #define AUXESZ sizeof(AUXENT) #define _ETEXT "etext" #define _EDATA "edata" #define _END "end" #define _START "_start" #define _TVORIG "_tvorig" #define _TORIGIN "_torigin" #define _DORIGIN "_dorigin" #define _SORIGIN "_sorigin" #pragma pack() #if __cplusplus } #endif #endif