Changeset 3530 for trunk/kDbg/kDbgModPE.cpp
- Timestamp:
- Aug 20, 2007, 5:42:03 AM (18 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/kDbg/kDbgModPE.cpp
r3529 r3530 31 31 #include "kDbgInternal.h" 32 32 #include <kLdrModPE.h> 33 #include <string.h> 33 34 34 35 … … 72 73 ("off=" PRI_KDBGADDR " VirtualSize=%x\n", off, pModPe->aSections[iSegment].Misc.VirtualSize), 73 74 KDBG_ERR_INVALID_ADDRESS); 74 *puRVA = pModPe->aSections[iSegment].VirtualAddress + off;75 *puRVA = pModPe->aSections[iSegment].VirtualAddress + (uint32_t)off; 75 76 return 0; 76 77 } … … 80 81 kDbgAssertMsgReturn(off < pModPe->cbImage, ("off=" PRI_KDBGADDR ", cbImage=%x\n", off, pModPe->cbImage), 81 82 KDBG_ERR_INVALID_ADDRESS); 82 *puRVA = off;83 *puRVA = (uint32_t)off; 83 84 return 0; 84 85 } … … 119 120 * @copydoc KDBGMODOPS::pfnQueryLine 120 121 */ 121 static int rtDbgModPEQueryLine(PKDBGMOD pMod, int32_t iSegment, KDBGADDR off, PKDBGLINE pLine)122 static int kDbgModPeQueryLine(PKDBGMOD pMod, int32_t iSegment, KDBGADDR off, PKDBGLINE pLine) 122 123 { 123 124 PKDBGMODPE pModPe = (PKDBGMODPE)pMod; … … 150 151 } 151 152 #endif 152 rc = VERR_NOT_IMPLEMENTED;153 rc = KDBG_ERR_NOT_IMPLEMENTED; 153 154 } 154 155 return rc; … … 159 160 * @copydoc KDBGMODOPS::pfnQuerySymbol 160 161 */ 161 static int rtDbgModPEQuerySymbol(PKDBGMOD pMod, int32_t iSegment, KDBGADDR off, PKDBGSYMBOL pSym)162 static int kDbgModPeQuerySymbol(PKDBGMOD pMod, int32_t iSegment, KDBGADDR off, PKDBGSYMBOL pSym) 162 163 { 163 164 PKDBGMODPE pModPe = (PKDBGMODPE)pMod; … … 175 176 { 176 177 SYMBOL_INFO Sym; 177 char achBuffer[sizeof(SYMBOL_INFO) + RTDBG_SYMBOL_MAX];178 char achBuffer[sizeof(SYMBOL_INFO) + KDBG_SYMBOL_MAX]; 178 179 } Buf; 179 180 Buf.Sym.SizeOfStruct = sizeof(SYMBOL_INFO); 180 Buf.Sym.MaxNameLen = RTDBG_SYMBOL_MAX;181 Buf.Sym.MaxNameLen = KDBG_SYMBOL_MAX; 181 182 if (g_pfnSymFromAddr(pModPe->hSymInst, pModPe->ImageBase + uRVA, &off, &Buf.Sym)) 182 183 { … … 193 194 if ((Buf.Sym.Flags & (SYMFLAG_VALUEPRESENT | SYMFLAG_CONSTANT)) == (SYMFLAG_VALUEPRESENT | SYMFLAG_CONSTANT)) 194 195 { 195 pSym->iSegment = RTDBGSEG_ABS;196 pSym->iSegment = KDBGSEG_ABS; 196 197 pSym->offSegment = (KDBGADDR)Buf.Sym.Value; 197 198 pSym->RVA = (KDBGADDR)Buf.Sym.Value; … … 214 215 } 215 216 #endif 216 rc = VERR_NOT_IMPLEMENTED;217 rc = KDBG_ERR_NOT_IMPLEMENTED; 217 218 } 218 219 return rc; … … 223 224 * @copydoc KDBGMODOPS::pfnClose 224 225 */ 225 static int rtDbgModPEClose(PKDBGMOD pMod)226 static int kDbgModPeClose(PKDBGMOD pMod) 226 227 { 227 228 PKDBGMODPE pModPe = (PKDBGMODPE)pMod; … … 234 235 //kDbgAssertMsgFailed(("SymInitialize failed: Err=%d rc=%Rrc\n", Err, rc)); 235 236 //return rc; 236 return VERR_NOT_IMPLEMENTED;237 return KDBG_ERR_NOT_IMPLEMENTED; 237 238 } 238 239 … … 241 242 * Methods for a PE module. 242 243 */ 243 static const KDBGMODOPS g_ rtDbgModPEOps =244 { 245 "PE (dbghelp)",246 rtDbgModPEClose,247 rtDbgModPEQuerySymbol,248 rtDbgModPEQueryLine244 static const KDBGMODOPS g_kDbgModPeOps = 245 { 246 "PE", 247 kDbgModPeClose, 248 kDbgModPeQuerySymbol, 249 kDbgModPeQueryLine 249 250 }; 250 251 … … 267 268 */ 268 269 IMAGE_FILE_HEADER FHdr; 269 int rc = kDbgHlpReadAt( File, offHdr + KDBG_OFFSETOF(IMAGE_NT_HEADERS32, FileHeader), &FHdr, sizeof(FHdr), NULL);270 AssertRCReturn(rc, rc);270 int rc = kDbgHlpReadAt(pFile, offHdr + KDBG_OFFSETOF(IMAGE_NT_HEADERS32, FileHeader), &FHdr, sizeof(FHdr)); 271 kDbgAssertRCReturn(rc, rc); 271 272 272 273 uint32_t cbImage; 273 274 if (FHdr.SizeOfOptionalHeader == sizeof(IMAGE_OPTIONAL_HEADER32)) 274 rc = kDbgHlpReadAt( File, offHdr + KDBG_OFFSETOF(IMAGE_NT_HEADERS32, OptionalHeader.SizeOfImage),275 &cbImage, sizeof(cbImage), NULL);275 rc = kDbgHlpReadAt(pFile, offHdr + KDBG_OFFSETOF(IMAGE_NT_HEADERS32, OptionalHeader.SizeOfImage), 276 &cbImage, sizeof(cbImage)); 276 277 else if (FHdr.SizeOfOptionalHeader == sizeof(IMAGE_OPTIONAL_HEADER64)) 277 rc = kDbgHlpReadAt( File, offHdr + KDBG_OFFSETOF(IMAGE_NT_HEADERS64, OptionalHeader.SizeOfImage),278 &cbImage, sizeof(cbImage), NULL);278 rc = kDbgHlpReadAt(pFile, offHdr + KDBG_OFFSETOF(IMAGE_NT_HEADERS64, OptionalHeader.SizeOfImage), 279 &cbImage, sizeof(cbImage)); 279 280 else 280 AssertFailedReturn(VERR_BAD_EXE_FORMAT);281 AssertRCReturn(rc, rc);281 kDbgAssertFailedReturn(KDBG_ERR_BAD_EXE_FORMAT); 282 kDbgAssertRCReturn(rc, rc); 282 283 283 284 /* 284 285 * Allocate the module and read/construct the section headers. 285 286 */ 286 PKDBGMODPE pModPe = (PKDBGMODPE) RTMemAlloc(KDBG_OFFSETOF(KDBGMODPE, aSections[FHdr.NumberOfSections + 2]));287 AssertReturn(pModPe, KDBG_ERR_NO_MEMORY);287 PKDBGMODPE pModPe = (PKDBGMODPE)kDbgHlpAlloc(KDBG_OFFSETOF(KDBGMODPE, aSections[FHdr.NumberOfSections + 2])); 288 kDbgAssertReturn(pModPe, KDBG_ERR_NO_MEMORY); 288 289 pModPe->Core.u32Magic = KDBGMOD_MAGIC; 289 pModPe->Core.pOps = &g_ rtDbgModPEOps;290 pModPe->Core. File =File;290 pModPe->Core.pOps = &g_kDbgModPeOps; 291 pModPe->Core.pFile = pFile; 291 292 pModPe->cbImage = cbImage; 292 293 pModPe->cSections = 1 + FHdr.NumberOfSections; 293 rc = kDbgHlpReadAt( File, offHdr + KDBG_OFFSETOF(IMAGE_NT_HEADERS32, OptionalHeader) + FHdr.SizeOfOptionalHeader,294 &pModPe->aSections[1], sizeof(pModPe->aSections[0]) * FHdr.NumberOfSections, NULL);294 rc = kDbgHlpReadAt(pFile, offHdr + KDBG_OFFSETOF(IMAGE_NT_HEADERS32, OptionalHeader) + FHdr.SizeOfOptionalHeader, 295 &pModPe->aSections[1], sizeof(pModPe->aSections[0]) * FHdr.NumberOfSections); 295 296 if (!rc) 296 297 { … … 345 346 g_pfnSymSetOptions(SYMOPT_LOAD_LINES | SYMOPT_AUTO_PUBLICS | SYMOPT_ALLOW_ABSOLUTE_SYMBOLS); 346 347 347 RTFileSeek(File, 0, RTFILE_SEEK_BEGIN, NULL); /* don't know if this is required or not... */348 kDbgHlpSeek(pFile, 0); /* don't know if this is required or not... */ 348 349 DWORD64 ImageBase = g_pfnSymLoadModule64(hSymInst, (HANDLE)File, pszModulePath, NULL, 0x00400000, 0); 349 350 if (ImageBase) … … 367 368 } 368 369 #endif 369 rc = VERR_NOT_IMPLEMENTED;370 rc = KDBG_ERR_NOT_IMPLEMENTED; 370 371 } 371 372 else 372 AssertRC(rc);373 kDbgAssertRC(rc); 373 374 374 375 kDbgHlpFree(pModPe);
Note:
See TracChangeset
for help on using the changeset viewer.