Annotation of cci/usr/src/usr.bin/cdb/transBsd/print.c, revision 1.1.1.1

1.1       root        1: /* $Header: print.c,v 1.1 86/03/24 16:19:21 rcs Exp $ */
                      2: /* (C) Copyright 1985 Third Eye Software, Inc. - All Rights Reserved */
                      3: 
                      4: #include "tes42.h"
                      5: 
                      6: int    vindent;
                      7: #define SbFIss(iss) (vsbNewStr + iss)
                      8: 
                      9: 
                     10: /* P R I N T   T Q */
                     11: 
                     12: local void PrintTq(tq)
                     13: int    tq;
                     14: {
                     15:     switch (tq) {
                     16:        case tqArray:   printf("Array of "); break;
                     17:        case tqPtr:     printf("Pointer to "); break;
                     18:        case tqProc:    printf("Function returning "); break;
                     19:     } /* switch */
                     20: } /* PrintTq */
                     21: 
                     22: 
                     23: /* P R I N T   B T */
                     24: 
                     25: local void PrintBt(bt)
                     26: int    bt;
                     27: {
                     28:     switch (bt) {
                     29:        default:        printf("Unknown-bt(%d)", bt);   break;
                     30:        case btNil:     printf("btNil ");               break;
                     31:        case btAdr:     printf("Adr ");                 break;
                     32:        case btChar:    printf("Char ");                break;
                     33:        case btUChar:   printf("UChar ");               break;
                     34:        case btShort:   printf("Short ");               break;
                     35:        case btUShort:  printf("UShort ");              break;
                     36:        case btInt:     printf("Int ");                 break;
                     37:        case btUInt:    printf("UInt ");                break;
                     38:        case btLong:    printf("Long ");                break;
                     39:        case btULong:   printf("ULong ");               break;
                     40:        case btFloat:   printf("Float ");               break;
                     41:        case btDouble:  printf("Double ");              break;
                     42:        case btStruct:  printf("Struct ");              break;
                     43:        case btUnion:   printf("Union ");               break;
                     44:        case btEnum:    printf("Enum ");                break;
                     45:        case btTypedef: printf("User type ");   break;
                     46:     } /* switch */
                     47: } /* PrintBt */
                     48: 
                     49: 
                     50: /* I A U X   F   P R I N T   T Y P E */
                     51: 
                     52: local void IauxFPrintType(iaux)
                     53: int4   iaux;
                     54: {
                     55:     TIR                ati;
                     56:     AUXU       aaux, aaux2;
                     57:     DIMR       adim;
                     58: 
                     59:     aaux = AuxFIaux(iaux++);
                     60:     PrintTq(aaux.ti.tq0);
                     61:     PrintTq(aaux.ti.tq1);
                     62:     PrintTq(aaux.ti.tq2);
                     63:     PrintTq(aaux.ti.tq3);
                     64:     PrintTq(aaux.ti.tq4);
                     65:     PrintTq(aaux.ti.tq5);
                     66:     PrintBt(aaux.ti.bt);
                     67: 
                     68:     if (FComplexBt(aaux.ti.bt))
                     69:        printf("ref = %ld ", AuxFIaux(iaux++));
                     70: 
                     71: #define PRINTDIM(tq)\
                     72:     if (tq == tqArray) {\
                     73:            aaux2 = AuxFIaux(iaux++); \
                     74:            printf("[%d, %d] ", aaux2.dim.dnLow, aaux2.dim.dnMac); \
                     75:     } /* if */
                     76:     PRINTDIM(aaux.ti.tq5);
                     77:     PRINTDIM(aaux.ti.tq4);
                     78:     PRINTDIM(aaux.ti.tq3);
                     79:     PRINTDIM(aaux.ti.tq2);
                     80:     PRINTDIM(aaux.ti.tq1);
                     81:     PRINTDIM(aaux.ti.tq0);
                     82: 
                     83:     return(iaux);
                     84: } /* IauxFPrintType */
                     85: 
                     86: 
                     87: /* P R I N T   S Y M */
                     88: 
                     89: local void PrintSym(sym)
                     90: pSYMR  sym;
                     91: {
                     92:     int4       iaux;
                     93: 
                     94:     if (sym->iss != issNil)
                     95:        printf("\"%s\": ", SbFIss(sym->iss));
                     96:     else
                     97:        printf("\"\": ");
                     98: 
                     99:     switch (sym->st) {
                    100:        case stParam:
                    101:        case stLocal:
                    102:        case stTypedef:
                    103:        case stNil:     printf("%ld, ", sym->value);
                    104:                        break;
                    105:        case stProc:    if (sym->index != viauxProcPhony)
                    106:                            vindent++;
                    107:        case stLabel:
                    108:        case stEnd:
                    109:        case stFile:
                    110:        case stBlock:
                    111:        case stStatic:
                    112:        case stGlobal:  printf("%#lx, ", sym->value);
                    113:                        break;
                    114:        case stMember:  printf("offset %ld, ", sym->value);
                    115:                        break;
                    116:     } /* switch */
                    117: 
                    118:     switch (sym->st) {
                    119:        case stNil:     printf("stNil "); break;
                    120:        case stGlobal:  printf("Extern "); break;
                    121:        case stStatic:  printf("Static "); break;
                    122:        case stParam:   printf("Param "); break;
                    123:        case stLocal:   printf("Local "); break;
                    124:        case stLabel:   printf("Label "); break;
                    125:        case stBlock:   printf("Block "); vindent++; break;
                    126:        case stProc:    printf("Procedure "); break;
                    127:        case stMember:  printf("Member "); break;
                    128:        case stEnd:     printf("End "); break;
                    129:        case stTypedef: printf("Typedef "); break;
                    130:        case stFile:    printf("File name "); vindent++; break;
                    131:     } /* switch */
                    132: 
                    133:     switch (sym->sc) {
                    134:        case scNil:             printf("scNil "); break;
                    135:        case scText:            printf("Text "); break;
                    136:        case scData:            printf("Data "); break;
                    137:        case scBss:             printf("Bss "); break;
                    138:        case scRegister:        printf("Register "); break;
                    139:        case scAbs:             /* printf("Absolute "); */ break;
                    140:        case scUndefined:       printf("scUndefined "); break;
                    141:        case scInfo:            printf("Info "); break;
                    142:        case scBits:            printf("BitField "); break;
                    143:     } /* switch */
                    144: 
                    145:     iaux = sym->index;
                    146:     switch (sym->st) {
                    147:        default: printf("ref = %ld ", iaux);    break;
                    148: 
                    149:        case stProc:
                    150:                printf("ref = %ld ", AuxFIaux(iaux++));
                    151:                /* fall through */
                    152: 
                    153:        case stMember:
                    154:                if (iaux == 0)  /* it MUST be an ENUM name */
                    155:                    break;
                    156:                /* fall through */
                    157: 
                    158:        case stGlobal:
                    159:        case stLocal:
                    160:        case stParam:
                    161:        case stTypedef:
                    162:                iaux = IauxFPrintType(iaux);
                    163:                if (sym->sc == scBits)
                    164:                    printf("width = %ld ", AuxFIaux(iaux));
                    165:                break;
                    166:     } /* switch */
                    167:     printf("\n");
                    168: 
                    169: } /* PrintSym */
                    170: 
                    171: 
                    172: /* P R I N T   I N D E N T */
                    173: 
                    174: local void PrintIndent()
                    175: {
                    176:     register int       i;
                    177: 
                    178:     for (i = 0; i < vindent; i++)
                    179:        printf("    ");
                    180: } /* PrintIndent */
                    181: 
                    182: 
                    183: /* P R I N T   L I N E S */
                    184: 
                    185: local void PrintLines(iline)
                    186: register int   iline;
                    187: {
                    188:     int                i;
                    189:     ADRT       dadr, dadrLast;
                    190: 
                    191:     dadrLast = 0;
                    192:     for (i = 0; iline < vilineMac; i++, iline++) {
                    193:        dadr = vrgLine[iline].dadr;
                    194:        if (vrgLine[iline].dadr < dadrLast)
                    195:            break;
                    196:        printf("%s%3d %3d: 0x%lx", (i % 4) ? "\t" : "\n\t",
                    197:                        iline, vrgLine[iline].iln, dadr);
                    198:        dadrLast = dadr;
                    199:     } /* for */
                    200: } /* PrintLines */
                    201: 
                    202: 
                    203: /* P R I N T   F I L E S */
                    204: 
                    205: local void PrintFiles()
                    206: {
                    207:     register int       ifd;
                    208:     register pFDR      fd;
                    209:     
                    210:     for (ifd = 0, fd = vrgFd; ifd < vifdMac; ifd++, fd++) {
                    211:        printf("%3d: \"%s\" %#lx", ifd, SbFIss(fd->iss), fd->adr);
                    212:        if (fd->ipd != ipdNil)
                    213:            printf("\t\"%s\"", SbFIss(SymFIsym(vrgPd[fd->ipd].isym)->iss) );
                    214:        printf("\n");
                    215:     } /* for */
                    216: } /* PrintFiles */
                    217: 
                    218: 
                    219: /* P R I N T   P R O C S */
                    220: 
                    221: local void PrintProcs()
                    222: {
                    223:     register int       ipd;
                    224:     pSYMR      sym;
                    225:     pPDR       pd;
                    226: 
                    227:     pd = vrgPd;
                    228:     for (ipd = 0; ipd < vipdMac; ipd++, pd++) {
                    229:        sym =  vrgSym + pd->isym;
                    230:        printf("%3d: \"%s\" addr: %#lx  isym: %ld",
                    231:                ipd, SbFIss(SymFIsym(pd->isym)->iss), pd->adr, pd->isym);
                    232:        if (pd->iline > 0)
                    233:            PrintLines(pd->iline);
                    234:        printf("\n");
                    235:     } /* for */
                    236: } /* PrintProcs */
                    237: 
                    238: 
                    239: /* P R I N T   A L L */
                    240: 
                    241: export void PrintAll() 
                    242: {
                    243:     register int       i;
                    244: 
                    245:     printf("Header infomation:\n");
                    246: 
                    247:     printf("   vstamp:         %8ld\n", vahdr.vstamp);
                    248:     printf("   cbText:         %8ld\n", vahdr.cbText);
                    249:     printf("   cbData:         %8ld\n", vahdr.cbData);
                    250:     printf("   cbBss:          %8ld\n", vahdr.cbBss);
                    251:     printf("   ipdMax:         %8ld\n", vahdr.ipdMax);
                    252:     printf("   cbPdOffset:     %8ld\n", vahdr.cbPdOffset);
                    253:     printf("   ifdMax:         %8ld\n", vahdr.ifdMax);
                    254:     printf("   cbFdOffset:     %8ld\n", vahdr.cbFdOffset);
                    255:     printf("   ilineMax:       %8ld\n", vahdr.ilineMax);
                    256:     printf("   cbLineOffset:   %8ld\n", vahdr.cbLineOffset);
                    257:     printf("   issMax:         %8ld\n", vahdr.issMax);
                    258:     printf("   cbSsOffset:     %8ld\n", vahdr.cbSsOffset);
                    259:     printf("   isymMax:        %8ld\n", vahdr.isymMax);
                    260:     printf("   cbSymOffset:    %8ld\n", vahdr.cbSymOffset);
                    261:     printf("   isymGl:         %8ld\n", vahdr.isymGl);
                    262:     printf("   isymGlMax:      %8ld\n", vahdr.isymGlMax);
                    263:     printf("   iauxMax:        %8ld\n", vahdr.iauxMax);
                    264:     printf("   cbAuxOffset:    %8ld\n", vahdr.cbAuxOffset);
                    265: 
                    266:     vindent = 0;
                    267:     printf("\n\nSYMBOLS:\n\n");
                    268:     for (i = 0 ; i < visymMac; i++) {
                    269:        if (vrgSym[i].st == stEnd)
                    270:            vindent--;
                    271:        PrintIndent();
                    272:        printf("%d. ", i);
                    273:        PrintSym(vrgSym + i);
                    274:     } /* for */
                    275: 
                    276:     printf("\n\nGLOBALS:\n\n");
                    277:     for (i= 0 ; i < visymGlMac; i++)
                    278:        PrintSym(vrgSymGlobal + i);
                    279: 
                    280:     printf("\n\nPROCS:\n\n");
                    281:     PrintProcs();
                    282: 
                    283:     printf("\n\nFILES:\n\n");
                    284:     PrintFiles();
                    285: } /* PrintAll */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.