/*********************************************************************** * Microsoft (R) Debugging Information Dumper * * Copyright (C) Microsoft Corp 1987-1995. All rights reserved. * * File: dumptyp6.c * * File Comments: * ***********************************************************************/ #include #include #include #include "cvdef.h" #include "cvinfo.h" #include "cvexefmt.h" #include "cvdump.h" // Miscellaneous definitions static const char * const nametype[] = // The primitive types { "CHAR", // 0 8 bit signed "SHORT", // 1 16 bit signed "LONG", // 2 32 bit signed "???", "UCHAR", // 4 8 bit unsigned "USHORT", // 5 16 bit unsigned "ULONG", // 6 32 bit unsigned "???", "REAL32", // 8 32 bit real "REAL64", // 9 64 bit real "REAL80", // 10 80 bit real "???", "CPLX32", // 12 8 byte complex "CPLX64", // 13 16 byte complex "CPLX80", // 14 20 byte complex "???", "BOOL08", // 16 8 bit boolean "BOOL16", // 17 16 bit boolean "BOOL32", // 18 32 bit boolean "???", "ASCII", // 20 1 byte character "ASCII2", // 21 2 byte characters "ASCII4", // 22 4 byte characters "BSTRING", // 23 BASIC string "???", "???", "???", "???", "VOID", // 28 VOID "???", "???", "???", "PCHAR", // 32 near pointer to 8 bit signed "PSHORT", // 33 near pointer to 16 bit signed "PLONG", // 34 near pointer to 32 bit signed "???", "PUCHAR", // 36 near pointer to 8 bit unsigned "PUSHORT", // 37 near pointer to 16 bit unsigned "PULONG", // 38 near pointer to 32 bit unsigned "???", "PREAL32", // 40 near pointer to 32 bit real "PREAL64", // 41 near pointer to 64 bit real "PREAL80", // 42 near pointer to 80 bit real "???", "PCPLX32", // 44 near pointer to 8 byte complex "PCPLX64", // 45 near pointer to 16 byte complex "PCPLX80", // 46 near pointer to 20 byte complex "???", "PBOOL08", // 48 near pointer to 8 bit boolean "PBOOL16", // 49 near pointer to 16 bit boolean "PBOOL32", // 50 near pointer to 32 bit boolean "???", "PASCII", // 52 near pointer to 1 byte character "PASCII2", // 53 near pointer to 2 byte characters "PASCII4", // 54 near pointer to 4 byte characters "PBSTRING", // 55 near pointer to BASIC string "???", "???", "???", "???", "PVOID", // 60 near pointer to VOID "???", "???", "???", "PFCHAR", // 64 far pointer to 8 bit signed "PFSHORT", // 65 far pointer to 16 bit signed "PFLONG", // 66 far pointer to 32 bit signed "???", "PFUCHAR", // 68 far pointer to 8 bit unsigned "PFUSHORT", // 69 far pointer to 16 bit unsigned "PFULONG", // 70 far pointer to 32 bit unsigned "???", "PFREAL32", // 72 far pointer to 32 bit real "PFREAL64", // 73 far pointer to 64 bit real "PFREAL80", // 74 far pointer to 80 bit real "???", "PFCPLX32", // 76 far pointer to 8 byte complex "PFCPLX64", // 77 far pointer to 16 byte complex "PFCPLX80", // 78 far pointer to 20 byte complex "???", "PFBOOL08", // 80 far pointer to 8 bit boolean "PFBOOL16", // 81 far pointer to 16 bit boolean "PFBOOL32", // 82 far pointer to 32 bit boolean "???", "PFASCII", // 84 far pointer to 1 byte character "PFASCII2", // 85 far pointer to 2 byte characters "PFASCII4", // 86 far pointer to 4 byte characters "PFBSTRING", // 87 far pointer to BASIC string "???", "???", "???", "???", "PFVOID", // 92 far pointer to VOID "???", "???", "???", "PHCHAR", // 96 huge pointer to 8 bit signed "PHSHORT", // 97 huge pointer to 16 bit signed "PHLONG", // 98 huge pointer to 32 bit signed "???", "PHUCHAR", // 100 huge pointer to 8 bit unsigned "PHUSHORT", // 101 huge pointer to 16 bit unsigned "PHULONG", // 102 huge pointer to 32 bit unsigned "???", "PHREAL32", // 104 huge pointer to 32 bit real "PHREAL64", // 105 huge pointer to 64 bit real "PHREAL80", // 106 huge pointer to 80 bit real "???", "PHCPLX32", // 108 huge pointer to 8 byte complex "PHCPLX64", // 109 huge pointer to 16 byte complex "PHCPLX80", // 110 huge pointer to 20 byte complex "???", "PHBOOL08", // 112 huge pointer to 8 bit boolean "PHBOOL16", // 113 huge pointer to 16 bit boolean "PHBOOL32", // 114 huge pointer to 32 bit boolean "???", "PHASCII", // 116 huge pointer to 1 byte character "PHASCII2", // 117 huge pointer to 2 byte characters "PHASCII4", // 118 huge pointer to 4 byte characters "BHBSTRING", // 119 huge pointer to BASIC string "???", "???", "???", "???", "PHVOID" // 124 huge pointer to VOID }; #define T_NOTYPE 0x0000 // uncharacterized type #define T_ABS 0x0001 // absolute symbol #define T_SEGMENT 0x0002 // segment symbol const char *SzNameType(ushort typ) { static char buf[16]; if (typ > 511) { // Not primitive sprintf (buf, "%d", typ); return (buf); } switch (typ) { case T_ABS: return ("ABS"); case T_NOTYPE: return (""); case T_SEGMENT: return ("SEG"); default: if ( (typ & 0xff00) || ! (typ & 0x80)) { return ("?unknown-type?"); } } return (nametype[typ & 0x7f]); }