Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

171 lines
5.8 KiB

/*
* Module: cvascii.c
* Author: Mark I. Himelstein, Himelsoft, Inc.
* Purpose: convert cv symbol types to ascii strings
*/
#include "conv.h"
/*
* array to map cv symbol types to ascii strings
*/
struct map_cv_sym_ascii {
SYM_ENUM_e tag;
char *name;
};
static struct map_cv_sym_ascii map_cv_sym_ascii[] = {
{S_COMPILE, "Compile flags symbol"},
{S_REGISTER, "Register variable"},
{S_CONSTANT, "constant symbol"},
{S_UDT, "User defined type"},
{S_SSEARCH, "Start Search"},
{S_END, "Block, procedure, with or thunk end"},
{S_SKIP, "Not a symbol"},
{S_CVRESERVE, "Reserve symbol for CV internal use"},
{S_OBJNAME, "path to object file name"},
{S_BPREL16, "BP-relative"},
{S_LDATA16, "Module-local symbol"},
{S_GDATA16, "Global data symbol"},
{S_PUB16, "a public symbol"},
{S_LPROC16, "Local procedure start"},
{S_GPROC16, "Global procedure start"},
{S_THUNK16, "Thunk Start"},
{S_BLOCK16, "block start"},
{S_WITH16, "with start"},
{S_LABEL16, "code label"},
{S_CEXMODEL16, "change execution model"},
{S_VFTABLE16, "address of virtual function table"},
{S_BPREL32, "BP-relative"},
{S_LDATA32, "Module-local symbol"},
{S_GDATA32, "Global data symbol"},
{S_PUB32, "a public symbol (CV internal reserved)"},
{S_LPROC32, "Local procedure start"},
{S_GPROC32, "Global procedure start"},
{S_THUNK32, "Thunk Start"},
{S_BLOCK32, "block start"},
{S_WITH32, "with start"},
{S_LABEL32, "code label"},
{S_CEXMODEL32, "change execution model"},
{S_VFTABLE32, "address of virtual function table"},
{S_REGREL32, "32 register relative offset"},
{S_LPROCMIPS, "MIPS local proc"},
{S_GPROCMIPS, "MIPS global proc"},
{S_ENDARG, "end arguments"},
{S_CVRESERVE, "no-op"},
}; /* map_cv_sym_ascii */
/*
* array to map cv types to ascii strings
*/
struct map_cv_type_ascii {
unsigned long tag;
char *name;
};
static struct map_cv_type_ascii map_cv_type_ascii[] = {
{LF_MODIFIER, "LF_MODIFIER"},
{LF_POINTER, "LF_POINTER"},
{LF_ARRAY, "LF_ARRAY"},
{LF_CLASS, "LF_CLASS"},
{LF_STRUCTURE, "LF_STRUCTURE"},
{LF_UNION, "LF_UNION"},
{LF_ENUM, "LF_ENUM"},
{LF_PROCEDURE, "LF_PROCEDURE"},
{LF_MFUNCTION, "LF_MFUNCTION"},
{LF_VTSHAPE, "LF_VTSHAPE"},
{LF_COBOL0, "LF_COBOL0"},
{LF_COBOL1, "LF_COBOL1"},
{LF_BARRAY, "LF_BARRAY"},
{LF_LABEL, "LF_LABEL"},
{LF_NULL, "LF_NULL"},
{LF_NOTTRAN, "LF_NOTTRAN"},
{LF_DIMARRAY, "LF_DIMARRAY"},
{LF_VFTPATH, "LF_VFTPATH"},
{LF_PRECOMP, "LF_PRECOMP"},
{LF_ENDPRECOMP, "LF_ENDPRECOMP"},
{LF_SKIP, "LF_SKIP"},
{LF_ARGLIST, "LF_ARGLIST"},
{LF_DEFARG, "LF_DEFARG"},
{LF_LIST, "LF_LIST"},
{LF_FIELDLIST, "LF_FIELDLIST"},
{LF_DERIVED, "LF_DERIVED"},
{LF_BITFIELD, "LF_BITFIELD"},
{LF_METHODLIST, "LF_METHODLIST"},
{LF_DIMCONU, "LF_DIMCONU"},
{LF_DIMCONLU, "LF_DIMCONLU"},
{LF_DIMVARU, "LF_DIMVARU"},
{LF_DIMVARLU, "LF_DIMVARLU"},
{LF_REFSYM, "LF_REFSYM"},
{LF_BCLASS, "LF_BCLASS"},
{LF_VBCLASS, "LF_VBCLASS"},
{LF_IVBCLASS, "LF_IVBCLASS"},
{LF_ENUMERATE, "LF_ENUMERATE"},
{LF_FRIENDFCN, "LF_FRIENDFCN"},
{LF_INDEX, "LF_INDEX"},
{LF_MEMBER, "LF_MEMBER"},
{LF_STMEMBER, "LF_STMEMBER"},
{LF_METHOD, "LF_METHOD"},
{LF_NESTTYPE, "LF_NESTTYPE"},
{LF_VFUNCTAB, "LF_VFUNCTAB"},
{LF_FRIENDCLS, "LF_FRIENDCLS"},
{LF_NUMERIC, "LF_NUMERIC"},
{LF_CHAR, "LF_CHAR"},
{LF_SHORT, "LF_SHORT"},
{LF_USHORT, "LF_USHORT"},
{LF_LONG, "LF_LONG"},
{LF_ULONG, "LF_ULONG"},
{LF_REAL32, "LF_REAL32"},
{LF_REAL64, "LF_REAL64"},
{LF_REAL80, "LF_REAL80"},
{LF_REAL128, "LF_REAL128"},
{LF_QUADWORD, "LF_QUADWORD"},
{LF_UQUADWORD, "LF_UQUADWORD"},
{LF_REAL48, "LF_REAL48"},
{LF_PAD0, "LF_PAD0"},
{LF_PAD1, "LF_PAD1"},
{LF_PAD2, "LF_PAD2"},
{LF_PAD3, "LF_PAD3"},
{LF_PAD4, "LF_PAD4"},
{LF_PAD5, "LF_PAD5"},
{LF_PAD6, "LF_PAD6"},
{LF_PAD7, "LF_PAD7"},
{LF_PAD8, "LF_PAD8"},
{LF_PAD9, "LF_PAD9"},
{LF_PAD10, "LF_PAD10"},
{LF_PAD11, "LF_PAD11"},
{LF_PAD12, "LF_PAD12"},
{LF_PAD13, "LF_PAD13"},
{LF_PAD14, "LF_PAD14"},
{LF_PAD15, "LF_PAD15"},
{0, 0}
};
extern char *
cv_sym_to_ascii(
SYM_ENUM_e tag)
{
struct map_cv_sym_ascii *pmap;
for (pmap = map_cv_sym_ascii; pmap->tag != S_CVRESERVE; pmap++) {
if (pmap->tag == tag) {
break; /* got it */
} /* if */
} /* for */
return pmap->name;
} /* cv_sym_to_ascii */
extern char *
cv_type_to_ascii(
unsigned long tag)
{
struct map_cv_type_ascii *pmap;
for (pmap = map_cv_type_ascii; pmap->name != 0; pmap++) {
if (pmap->tag == tag) {
break; /* got it */
} /* if */
} /* for */
return pmap->name;
} /* cv_type_to_ascii */