Changeset 3630 for trunk/tools
- Timestamp:
- May 29, 2000, 9:46:29 PM (25 years ago)
- Location:
- trunk/tools/dbginfo
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/dbginfo/kHll.cpp
r3614 r3630 1 /* $Id: kHll.cpp,v 1.1 3 2000-05-27 02:15:41bird Exp $1 /* $Id: kHll.cpp,v 1.14 2000-05-29 19:46:28 bird Exp $ 2 2 * 3 3 * kHll - Implementation of the class kHll. … … 95 95 96 96 /** 97 * Loops thru the given list and call the dump functionfor each97 * Loops thru the given list and call the dump method for each 98 98 * node with the passed in parameters. 99 99 * @param ph Dump file handle. … … 114 114 115 115 116 /** 117 * Loops thru the given list and call the ida method for each 118 * node with the passed in parameters. 119 * !!!NOTE!!! THIS IS ONLY TO BE USED FOR YOUR OWN PROGRAMS!!! 120 * @param pFile Output file. 121 * @param pEntry Indent. 122 */ 123 void kHllBaseEntry::idaList(kFile *pFile, kHllBaseEntry *pEntry) 124 { 125 /* 126 * Loop thru the list staring at pEntry and call ida for each entry. 127 */ 128 while (pEntry != NULL) 129 { 130 pEntry->ida(pFile); 131 pEntry = (kHllBaseEntry*)pEntry->getNext(); 132 } 133 } 116 134 117 135 … … 200 218 * Dump public symbol entry 201 219 */ 202 fprintf(ph, "%*.s0x%04x:0x%08x type:% 04d(0x%04) name: %.*s\n",220 fprintf(ph, "%*.s0x%04x:0x%08x type:%5d(0x%04x) name: %.*s\n", 203 221 cchIndent, "", 204 222 pPubSym->iObject, … … 206 224 pPubSym->iType, 207 225 pPubSym->iType, 208 pPubSym->cchName, pPubSym->achName226 pPubSym->cchName, &pPubSym->achName[0] 209 227 ); 210 228 } 229 230 231 /** 232 * Create IDC (IDA Pro) calls which adds info contained in the entry 233 * to the ida pro database. 234 * !!!NOTE!!! THIS IS ONLY TO BE USED FOR YOUR OWN PROGRAMS!!! 235 * @param pFile Output file. 236 */ 237 void kHllPubSymEntry::ida(kFile *pFile) throw(int) 238 { 239 #if 0 240 pFile->printf(" /* PubSym %.*s */\n", 241 pPubSym->cchName, &pPubSym->achName[0]); 242 #endif 243 pFile->printf(" ea = SegByBase(%d) + 0x%08x; MakeName(ea, \"\"); MakeName(ea, \"%.*s\");\n", 244 pPubSym->iObject, 245 pPubSym->off, 246 pPubSym->cchName, &pPubSym->achName[0] 247 ); 248 } 249 250 251 252 211 253 212 254 … … 383 425 384 426 427 /** 428 * Create IDC (IDA Pro) calls which adds info contained in the entry 429 * to the ida pro database. 430 * !!!NOTE!!! THIS IS ONLY TO BE USED FOR YOUR OWN PROGRAMS!!! 431 * @param pFile Output file. 432 */ 433 void kHllLineNumberChunk::ida(kFile *pFile) throw(int) 434 { 435 pFile->printf(" /* Line number chunk */\n"); 436 } 437 438 439 440 385 441 386 442 … … 624 680 } 625 681 682 683 /** 684 * Create IDC (IDA Pro) calls which adds info contained in the entry 685 * to the ida pro database. 686 * !!!NOTE!!! THIS IS ONLY TO BE USED FOR YOUR OWN PROGRAMS!!! 687 * @param pFile Output file. 688 */ 689 void kHllSrcEntry::ida(kFile *pFile) throw(int) 690 { 691 pFile->printf(" /* Source entry */\n"); 692 } 626 693 627 694 … … 1059 1126 1060 1127 1128 /** 1129 * Create IDC (IDA Pro) calls which adds info contained in the entry 1130 * to the ida pro database. 1131 * !!!NOTE!!! THIS IS ONLY TO BE USED FOR YOUR OWN PROGRAMS!!! 1132 * @param pFile Output file. 1133 */ 1134 void kHllModuleEntry::ida(kFile *pFile) throw(int) 1135 { 1136 pFile->printf(" /* kHllModuleEntry */\n"); 1137 1138 /* 1139 * Write the sub-entries. 1140 */ 1141 kHllBaseEntry::idaList(pFile, PublicSymbols.getFirst()); 1142 /* 1143 kHllBaseEntry::dumpList(ph, 8, Types.getFirst()); 1144 kHllBaseEntry::dumpList(ph, 8, Symbols.getFirst()); 1145 kHllBaseEntry::dumpList(ph, 8, Source.getFirst()); 1146 */ 1147 Source.ida(pFile); 1148 } 1061 1149 1062 1150 … … 1289 1377 if (paSegInfo != NULL) 1290 1378 free(paSegInfo); 1291 fprintf(stderr, "Module directory entry: %s\n", szName);1292 1379 break; 1293 1380 } 1294 1381 1295 case HLL_DE_PUBLICS: /* Public symbols */ 1296 fprintf(stderr, "Publics directory entry\n"); 1297 break; 1382 1383 /* 1384 * Public symbols 1385 */ 1386 case HLL_DE_PUBLICS: 1387 { 1388 HLLPUBLICSYM pubSym; 1389 1390 if (pCurMod == NULL || iCurMod != pDirEntry->iMod) 1391 { 1392 fprintf(stderr, "hmm. iMod in public entry not equal to current module\n"); 1393 break; 1394 } 1395 1396 fprintf(stderr, "HLL_DE_PUBLICS\n"); 1397 pFile->set(pDirEntry->off + offHllHdr); 1398 while (pFile->getPos() - pDirEntry->off - offHllHdr < pDirEntry->cb) 1399 { 1400 pFile->read(&pubSym, sizeof(pubSym) - 1); 1401 pFile->read(szName, pubSym.cchName); 1402 szName[pubSym.cchName] = '\0'; 1403 1404 fprintf(stderr, "HLL_DE_PUBLICS\n"); 1405 pCurMod->addPublicSymbol(szName, 1406 pubSym.cchName, 1407 pubSym.off, 1408 pubSym.iObject, 1409 (void*)pubSym.iType); 1410 } 1411 } 1298 1412 1299 1413 case HLL_DE_TYPES: /* Types */ … … 1429 1543 this, Modules.getCount()); 1430 1544 } 1545 1546 1547 /** 1548 * Create IDC (IDA Pro) scripts which adds debuginfo to the ida pro database. 1549 * !!!NOTE!!! THIS IS ONLY TO BE USED FOR YOUR OWN PROGRAMS!!! 1550 * @param pFile Output file. 1551 */ 1552 void kHll::ida(kFile *pFile) throw(int) 1553 { 1554 pFile->printf("/* !!!NOTE!!! THIS IS ONLY TO BE USED FOR YOUR OWN PROGRAMS!!!*/\n" 1555 "#include <idc.idc>\n" 1556 "static main() {\n" 1557 " auto ea;\n" 1558 ); 1559 1560 kHllModuleEntry * pMod = Modules.getFirst(); 1561 while (pMod != NULL) 1562 { 1563 /* Dump it */ 1564 pMod->ida(pFile); 1565 1566 /* Next module */ 1567 pMod = (kHllModuleEntry*)pMod->getNext(); 1568 } 1569 1570 pFile->printf("}\n\n"); 1571 } 1572 1431 1573 1432 1574 … … 1670 1812 kHll *pHll; 1671 1813 1672 /* read my self*/1673 pHll = kHll::readLX(argv[ 0]);1814 /* read last argument */ 1815 pHll = kHll::readLX(argv[argc-1]); 1674 1816 if (pHll) 1675 1817 { 1676 1818 printf("Successfully read %s\n", argv[0]); 1677 1819 pHll->dump(); 1820 kFile kidc("dbg.idc", FALSE); 1821 pHll->ida(&kidc); 1678 1822 } 1679 1823 argc = argc; -
trunk/tools/dbginfo/kHll.h
r3614 r3630 1 /* $Id: kHll.h,v 1. 8 2000-05-27 02:15:42bird Exp $1 /* $Id: kHll.h,v 1.9 2000-05-29 19:46:29 bird Exp $ 2 2 * 3 3 * kHll - Declarations of the class kHll. … … 46 46 virtual void dump(FILE *ph, int cchIndent) = 0; 47 47 static void dumpList(FILE *ph, int cchIndent, kHllBaseEntry *pEntry); 48 49 /** 50 * Create IDC (IDA Pro) calls which adds info contained in the entry 51 * to the ida pro database. 52 * !!!NOTE!!! THIS IS ONLY TO BE USED FOR YOUR OWN PROGRAMS!!! 53 * @param pFile Output file. 54 */ 55 virtual void ida(kFile *pFile) throw(int) = 0; 56 static void idaList(kFile *pFile, kHllBaseEntry *pEntry) throw(int); 48 57 }; 49 58 … … 71 80 int write(FILE *phFile); 72 81 void dump(FILE *ph, int cchIndent); 82 void ida(kFile *pFile) throw(int); 73 83 }; 74 84 … … 100 110 int write(FILE *phFile); 101 111 void dump(FILE *ph, int cchIndent); 112 void ida(kFile *pFile) throw(int); 102 113 103 114 int getSeg() { return FirstEntry.hll04.iSeg; } … … 138 149 int write(FILE *phFile); 139 150 void dump(FILE *ph, int cchIndent); 151 void ida(kFile *pFile) throw(int); 140 152 }; 141 153 … … 232 244 */ 233 245 void dump(FILE *ph); 246 void ida(kFile *pFile) throw(int); 234 247 }; 235 248 … … 305 318 */ 306 319 void dump(); 320 void ida(kFile *pFile) throw(int); 307 321 }; 308 322
Note:
See TracChangeset
for help on using the changeset viewer.