儲存庫 vbox 的更動 41493
- 時間撮記:
- 2012-5-30 下午01:47:41 (12 年 以前)
- 位置:
- trunk
- 檔案:
-
- 修改 9 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/include/iprt/dbg.h
r40855 r41493 60 60 /** The last valid special segment index. */ 61 61 #define RTDBGSEGIDX_SPECIAL_FIRST (RTDBGSEGIDX_LAST + 1U) 62 63 64 /** @name RTDBGSYMADDR_FLAGS_XXX 65 * Flags used when looking up a symbol by address. 66 * @{ */ 67 /** Less or equal address. (default) */ 68 #define RTDBGSYMADDR_FLAGS_LESS_OR_EQUAL UINT32_C(0) 69 /** Greater or equal address. */ 70 #define RTDBGSYMADDR_FLAGS_GREATER_OR_EQUAL UINT32_C(1) 71 /** Mask of valid flags. */ 72 #define RTDBGSYMADDR_FLAGS_VALID_MASK UINT32_C(1) 73 /** @} */ 62 74 63 75 … … 505 517 * @retval VERR_INVALID_HANDLE if hDbgAs is invalid. 506 518 * @retval VERR_NOT_FOUND if the address couldn't be mapped to a module. 519 * @retval VERR_INVALID_PARAMETER if incorrect flags. 507 520 * 508 521 * @param hDbgAs The address space handle. 509 522 * @param Addr The address which closest symbol is requested. 523 * @param fFlags Symbol search flags, see RTDBGSYMADDR_FLAGS_XXX. 510 524 * @param poffDisp Where to return the distance between the symbol 511 525 * and address. Optional. … … 513 527 * @param phMod Where to return the module handle. Optional. 514 528 */ 515 RTDECL(int) RTDbgAsSymbolByAddr(RTDBGAS hDbgAs, RTUINTPTR Addr, PRTINTPTR poffDisp, PRTDBGSYMBOL pSymbol, PRTDBGMOD phMod); 529 RTDECL(int) RTDbgAsSymbolByAddr(RTDBGAS hDbgAs, RTUINTPTR Addr, uint32_t fFlags, 530 PRTINTPTR poffDisp, PRTDBGSYMBOL pSymbol, PRTDBGMOD phMod); 516 531 517 532 /** … … 521 536 * @retval VERR_INVALID_HANDLE if hDbgAs is invalid. 522 537 * @retval VERR_NOT_FOUND if the address couldn't be mapped to a module. 538 * @retval VERR_INVALID_PARAMETER if incorrect flags. 523 539 * 524 540 * @param hDbgAs The address space handle. 525 541 * @param Addr The address which closest symbol is requested. 542 * @param fFlags Symbol search flags, see RTDBGSYMADDR_FLAGS_XXX. 526 543 * @param poffDisp Where to return the distance between the symbol 527 544 * and address. Optional. … … 530 547 * @param phMod Where to return the module handle. Optional. 531 548 */ 532 RTDECL(int) RTDbgAsSymbolByAddrA(RTDBGAS hDbgAs, RTUINTPTR Addr, PRTINTPTR poffDisp, PRTDBGSYMBOL *ppSymInfo, PRTDBGMOD phMod); 549 RTDECL(int) RTDbgAsSymbolByAddrA(RTDBGAS hDbgAs, RTUINTPTR Addr, uint32_t fFlags, 550 PRTINTPTR poffDisp, PRTDBGSYMBOL *ppSymInfo, PRTDBGMOD phMod); 533 551 534 552 /** … … 936 954 * @retval VERR_DBG_INVALID_SEGMENT_OFFSET if the segment offset is beyond the 937 955 * end of the segment. 956 * @retval VERR_INVALID_PARAMETER if incorrect flags. 938 957 * 939 958 * @param hDbgMod The module handle. 940 959 * @param iSeg The segment number. 941 960 * @param off The offset into the segment. 961 * @param fFlags Symbol search flags, see RTDBGSYMADDR_FLAGS_XXX. 942 962 * @param poffDisp Where to store the distance between the 943 963 * specified address and the returned symbol. … … 945 965 * @param pSymInfo Where to store the symbol information. 946 966 */ 947 RTDECL(int) RTDbgModSymbolByAddr(RTDBGMOD hDbgMod, RTDBGSEGIDX iSeg, RTUINTPTR off, PRTINTPTR poffDisp, PRTDBGSYMBOL pSymInfo); 967 RTDECL(int) RTDbgModSymbolByAddr(RTDBGMOD hDbgMod, RTDBGSEGIDX iSeg, RTUINTPTR off, uint32_t fFlags, 968 PRTINTPTR poffDisp, PRTDBGSYMBOL pSymInfo); 948 969 949 970 /** … … 964 985 * end of the segment. 965 986 * @retval VERR_NO_MEMORY if RTDbgSymbolAlloc fails. 987 * @retval VERR_INVALID_PARAMETER if incorrect flags. 966 988 * 967 989 * @param hDbgMod The module handle. 968 990 * @param iSeg The segment index. 969 991 * @param off The offset into the segment. 992 * @param fFlags Symbol search flags, see RTDBGSYMADDR_FLAGS_XXX. 970 993 * @param poffDisp Where to store the distance between the 971 994 * specified address and the returned symbol. Optional. … … 974 997 * RTDbgSymbolFree. 975 998 */ 976 RTDECL(int) RTDbgModSymbolByAddrA(RTDBGMOD hDbgMod, RTDBGSEGIDX iSeg, RTUINTPTR off, PRTINTPTR poffDisp, PRTDBGSYMBOL *ppSymInfo); 999 RTDECL(int) RTDbgModSymbolByAddrA(RTDBGMOD hDbgMod, RTDBGSEGIDX iSeg, RTUINTPTR off, uint32_t fFlags, 1000 PRTINTPTR poffDisp, PRTDBGSYMBOL *ppSymInfo); 977 1001 978 1002 /** -
trunk/src/VBox/Runtime/common/dbg/dbgas.cpp
r39032 r41493 1289 1289 * @retval VERR_INVALID_HANDLE if hDbgAs is invalid. 1290 1290 * @retval VERR_NOT_FOUND if the address couldn't be mapped to a module. 1291 * @retval VERR_INVALID_PARAMETER if incorrect flags. 1291 1292 * 1292 1293 * @param hDbgAs The address space handle. 1293 1294 * @param Addr The address which closest symbol is requested. 1294 * @param poffDisp Where to return the distance between the symbol 1295 * and address. Optional. 1295 * @param fFlags Symbol search flags, see RTDBGSYMADDR_FLAGS_XXX. 1296 * @param poffDisp Where to return the distance between the symbol and 1297 * address. Optional. 1296 1298 * @param pSymbol Where to return the symbol info. 1297 1299 * @param phMod Where to return the module handle. Optional. 1298 1300 */ 1299 RTDECL(int) RTDbgAsSymbolByAddr(RTDBGAS hDbgAs, RTUINTPTR Addr, PRTINTPTR poffDisp, PRTDBGSYMBOL pSymbol, PRTDBGMOD phMod) 1301 RTDECL(int) RTDbgAsSymbolByAddr(RTDBGAS hDbgAs, RTUINTPTR Addr, uint32_t fFlags, 1302 PRTINTPTR poffDisp, PRTDBGSYMBOL pSymbol, PRTDBGMOD phMod) 1300 1303 { 1301 1304 /* … … 1319 1322 * Forward the call. 1320 1323 */ 1321 int rc = RTDbgModSymbolByAddr(hMod, iSeg, offSeg, poffDisp, pSymbol);1324 int rc = RTDbgModSymbolByAddr(hMod, iSeg, offSeg, fFlags, poffDisp, pSymbol); 1322 1325 if (RT_SUCCESS(rc)) 1323 1326 rtDbgAsAdjustSymbolValue(pSymbol, hMod, MapAddr, iSeg); … … 1337 1340 * @retval VERR_INVALID_HANDLE if hDbgAs is invalid. 1338 1341 * @retval VERR_NOT_FOUND if the address couldn't be mapped to a module. 1342 * @retval VERR_INVALID_PARAMETER if incorrect flags. 1339 1343 * 1340 1344 * @param hDbgAs The address space handle. 1341 1345 * @param Addr The address which closest symbol is requested. 1346 * @param fFlags Symbol search flags, see RTDBGSYMADDR_FLAGS_XXX. 1342 1347 * @param poffDisp Where to return the distance between the symbol 1343 1348 * and address. Optional. … … 1346 1351 * @param phMod Where to return the module handle. Optional. 1347 1352 */ 1348 RTDECL(int) RTDbgAsSymbolByAddrA(RTDBGAS hDbgAs, RTUINTPTR Addr, PRTINTPTR poffDisp, PRTDBGSYMBOL *ppSymInfo, PRTDBGMOD phMod) 1353 RTDECL(int) RTDbgAsSymbolByAddrA(RTDBGAS hDbgAs, RTUINTPTR Addr, uint32_t fFlags, 1354 PRTINTPTR poffDisp, PRTDBGSYMBOL *ppSymInfo, PRTDBGMOD phMod) 1349 1355 { 1350 1356 /* … … 1368 1374 * Forward the call. 1369 1375 */ 1370 int rc = RTDbgModSymbolByAddrA(hMod, iSeg, offSeg, poffDisp, ppSymInfo);1376 int rc = RTDbgModSymbolByAddrA(hMod, iSeg, offSeg, fFlags, poffDisp, ppSymInfo); 1371 1377 if (RT_SUCCESS(rc)) 1372 1378 rtDbgAsAdjustSymbolValue(*ppSymInfo, hMod, MapAddr, iSeg); -
trunk/src/VBox/Runtime/common/dbg/dbgmod.cpp
r39083 r41493 1121 1121 * @retval VERR_DBG_INVALID_SEGMENT_OFFSET if the segment offset is beyond the 1122 1122 * end of the segment. 1123 * @retval VERR_INVALID_PARAMETER if incorrect flags. 1123 1124 * 1124 1125 * @param hDbgMod The module handle. 1125 1126 * @param iSeg The segment number. 1126 1127 * @param off The offset into the segment. 1128 * @param fFlags Symbol search flags, see RTDBGSYMADDR_FLAGS_XXX. 1127 1129 * @param poffDisp Where to store the distance between the 1128 1130 * specified address and the returned symbol. … … 1130 1132 * @param pSymInfo Where to store the symbol information. 1131 1133 */ 1132 RTDECL(int) RTDbgModSymbolByAddr(RTDBGMOD hDbgMod, RTDBGSEGIDX iSeg, RTUINTPTR off, PRTINTPTR poffDisp, PRTDBGSYMBOL pSymInfo) 1134 RTDECL(int) RTDbgModSymbolByAddr(RTDBGMOD hDbgMod, RTDBGSEGIDX iSeg, RTUINTPTR off, uint32_t fFlags, 1135 PRTINTPTR poffDisp, PRTDBGSYMBOL pSymInfo) 1133 1136 { 1134 1137 /* … … 1139 1142 AssertPtrNull(poffDisp); 1140 1143 AssertPtr(pSymInfo); 1144 AssertReturn(!(fFlags & ~RTDBGSYMADDR_FLAGS_VALID_MASK), VERR_INVALID_PARAMETER); 1141 1145 1142 1146 RTDBGMOD_LOCK(pDbgMod); … … 1158 1162 * Get down to business. 1159 1163 */ 1160 int rc = pDbgMod->pDbgVt->pfnSymbolByAddr(pDbgMod, iSeg, off, poffDisp, pSymInfo);1164 int rc = pDbgMod->pDbgVt->pfnSymbolByAddr(pDbgMod, iSeg, off, fFlags, poffDisp, pSymInfo); 1161 1165 1162 1166 RTDBGMOD_UNLOCK(pDbgMod); … … 1183 1187 * end of the segment. 1184 1188 * @retval VERR_NO_MEMORY if RTDbgSymbolAlloc fails. 1189 * @retval VERR_INVALID_PARAMETER if incorrect flags. 1185 1190 * 1186 1191 * @param hDbgMod The module handle. 1187 1192 * @param iSeg The segment index. 1188 1193 * @param off The offset into the segment. 1194 * @param fFlags Symbol search flags, see RTDBGSYMADDR_FLAGS_XXX. 1189 1195 * @param poffDisp Where to store the distance between the 1190 1196 * specified address and the returned symbol. Optional. … … 1193 1199 * RTDbgSymbolFree. 1194 1200 */ 1195 RTDECL(int) RTDbgModSymbolByAddrA(RTDBGMOD hDbgMod, RTDBGSEGIDX iSeg, RTUINTPTR off, PRTINTPTR poffDisp, PRTDBGSYMBOL *ppSymInfo) 1201 RTDECL(int) RTDbgModSymbolByAddrA(RTDBGMOD hDbgMod, RTDBGSEGIDX iSeg, RTUINTPTR off, uint32_t fFlags, 1202 PRTINTPTR poffDisp, PRTDBGSYMBOL *ppSymInfo) 1196 1203 { 1197 1204 AssertPtr(ppSymInfo); … … 1202 1209 return VERR_NO_MEMORY; 1203 1210 1204 int rc = RTDbgModSymbolByAddr(hDbgMod, iSeg, off, poffDisp, pSymInfo);1211 int rc = RTDbgModSymbolByAddr(hDbgMod, iSeg, off, fFlags, poffDisp, pSymInfo); 1205 1212 1206 1213 if (RT_SUCCESS(rc)) -
trunk/src/VBox/Runtime/common/dbg/dbgmodcontainer.cpp
r39083 r41493 288 288 289 289 /** @copydoc RTDBGMODVTDBG::pfnSymbolByAddr */ 290 static DECLCALLBACK(int) rtDbgModContainer_SymbolByAddr(PRTDBGMODINT pMod, RTDBGSEGIDX iSeg, RTUINTPTR off, 290 static DECLCALLBACK(int) rtDbgModContainer_SymbolByAddr(PRTDBGMODINT pMod, RTDBGSEGIDX iSeg, RTUINTPTR off, uint32_t fFlags, 291 291 PRTINTPTR poffDisp, PRTDBGSYMBOL pSymInfo) 292 292 { … … 312 312 : &pThis->paSegs[iSeg].SymAddrTree, 313 313 off, 314 f alse/*fAbove*/);314 fFlags == RTDBGSYMADDR_FLAGS_GREATER_OR_EQUAL /*fAbove*/); 315 315 if (!pAvlCore) 316 316 return VERR_SYMBOL_NOT_FOUND; -
trunk/src/VBox/Runtime/common/dbg/dbgmoddwarf.cpp
r39515 r41493 3301 3301 3302 3302 /** @interface_method_impl{RTDBGMODVTDBG,pfnSymbolByAddr} */ 3303 static DECLCALLBACK(int) rtDbgModDwarf_SymbolByAddr(PRTDBGMODINT pMod, RTDBGSEGIDX iSeg, RTUINTPTR off, 3303 static DECLCALLBACK(int) rtDbgModDwarf_SymbolByAddr(PRTDBGMODINT pMod, RTDBGSEGIDX iSeg, RTUINTPTR off, uint32_t fFlags, 3304 3304 PRTINTPTR poffDisp, PRTDBGSYMBOL pSymInfo) 3305 3305 { 3306 3306 PRTDBGMODDWARF pThis = (PRTDBGMODDWARF)pMod->pvDbgPriv; 3307 return RTDbgModSymbolByAddr(pThis->hCnt, iSeg, off, poffDisp, pSymInfo);3307 return RTDbgModSymbolByAddr(pThis->hCnt, iSeg, off, fFlags, poffDisp, pSymInfo); 3308 3308 } 3309 3309 -
trunk/src/VBox/Runtime/common/dbg/dbgmodnm.cpp
r39389 r41493 92 92 93 93 /** @interface_method_impl{RTDBGMODVTDBG,pfnSymbolByAddr} */ 94 static DECLCALLBACK(int) rtDbgModNm_SymbolByAddr(PRTDBGMODINT pMod, RTDBGSEGIDX iSeg, RTUINTPTR off, 94 static DECLCALLBACK(int) rtDbgModNm_SymbolByAddr(PRTDBGMODINT pMod, RTDBGSEGIDX iSeg, RTUINTPTR off, uint32_t fFlags, 95 95 PRTINTPTR poffDisp, PRTDBGSYMBOL pSymInfo) 96 96 { 97 97 PRTDBGMODNM pThis = (PRTDBGMODNM)pMod->pvDbgPriv; 98 return RTDbgModSymbolByAddr(pThis->hCnt, iSeg, off, poffDisp, pSymInfo);98 return RTDbgModSymbolByAddr(pThis->hCnt, iSeg, off, fFlags, poffDisp, pSymInfo); 99 99 } 100 100 -
trunk/src/VBox/Runtime/include/internal/dbgmod.h
r38581 r41493 364 364 * @param iSeg The segment number (0-based) or RTDBGSEGIDX_ABS. 365 365 * @param off The offset into the segment. 366 * @param fFlags Symbol search flags, see RTDBGSYMADDR_FLAGS_XXX. 366 367 * @param poffDisp Where to store the distance between the specified address 367 368 * and the returned symbol. Optional. 368 369 * @param pSymInfo Where to store the symbol information. 369 370 */ 370 DECLCALLBACKMEMBER(int, pfnSymbolByAddr)(PRTDBGMODINT pMod, uint32_t iSeg, RTUINTPTR off, PRTINTPTR poffDisp, PRTDBGSYMBOL pSymInfo); 371 DECLCALLBACKMEMBER(int, pfnSymbolByAddr)(PRTDBGMODINT pMod, uint32_t iSeg, RTUINTPTR off, uint32_t fFlags, 372 PRTINTPTR poffDisp, PRTDBGSYMBOL pSymInfo); 371 373 372 374 -
trunk/src/VBox/Runtime/tools/RTLdrFlt.cpp
r38636 r41493 322 322 RTDBGSYMBOL Symbol; 323 323 RTINTPTR offSym; 324 rc = RTDbgAsSymbolByAddr(hDbgAs, u64Address, &offSym, &Symbol, NULL);324 rc = RTDbgAsSymbolByAddr(hDbgAs, u64Address, RTDBGSYMADDR_FLAGS_LESS_OR_EQUAL, &offSym, &Symbol, NULL); 325 325 if (RT_SUCCESS(rc)) 326 326 { -
trunk/src/VBox/VMM/VMMR3/DBGFAddrSpace.cpp
r39477 r41493 1011 1011 */ 1012 1012 RTDBGMOD hMod; 1013 int rc = RTDbgAsSymbolByAddr(hRealAS, pAddress->FlatPtr, poffDisp, pSymbol, &hMod);1013 int rc = RTDbgAsSymbolByAddr(hRealAS, pAddress->FlatPtr, poffDisp, RTDBGSYMADDR_FLAGS_LESS_OR_EQUAL, pSymbol, &hMod); 1014 1014 if (RT_SUCCESS(rc)) 1015 1015 {
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器