Changeset 64507 in vbox for trunk/src/VBox/VMM/VMMR3/DBGFR3Cfg.cpp
- Timestamp:
- Nov 1, 2016 12:05:15 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/DBGFR3Cfg.cpp
r64503 r64507 464 464 { 465 465 /* Move instructions over. */ 466 pCfgBbNew->cInstr = cInstrNew;467 pCfgBbNew->AddrEnd = pCfgBb->AddrEnd;466 pCfgBbNew->cInstr = cInstrNew; 467 pCfgBbNew->AddrEnd = pCfgBb->AddrEnd; 468 468 pCfgBbNew->enmEndType = pCfgBb->enmEndType; 469 pCfgBbNew->fFlags = pCfgBb->fFlags & ~DBGF_CFG_BB_F_ENTRY; 470 471 /* Move any error to the new basic block and clear them in the old basic block. */ 472 pCfgBbNew->rcError = pCfgBb->rcError; 473 pCfgBbNew->pszErr = pCfgBb->pszErr; 474 pCfgBb->rcError = VINF_SUCCESS; 475 pCfgBb->pszErr = NULL; 476 pCfgBb->fFlags &= ~DBGF_CFG_BB_F_INCOMPLETE_ERR; 469 477 470 478 memcpy(&pCfgBbNew->aInstr[0], &pCfgBb->aInstr[idxInstrSplit], cInstrNew * sizeof(DBGFCFGBBINSTR)); 471 479 pCfgBb->cInstr = idxInstrSplit; 472 480 pCfgBb->enmEndType = DBGFCFGBBENDTYPE_UNCOND; 473 pCfgBb->AddrEnd = pCfgBb->aInstr[idxInstrSplit ].AddrInstr;481 pCfgBb->AddrEnd = pCfgBb->aInstr[idxInstrSplit-1].AddrInstr; 474 482 pCfgBb->AddrTarget = pCfgBbNew->AddrStart; 475 DBGFR3AddrAdd(&pCfgBb->AddrEnd, pCfgBb->aInstr[idxInstrSplit ].cbInstr - 1);483 DBGFR3AddrAdd(&pCfgBb->AddrEnd, pCfgBb->aInstr[idxInstrSplit-1].cbInstr - 1); 476 484 RT_BZERO(&pCfgBb->aInstr[idxInstrSplit], cInstrNew * sizeof(DBGFCFGBBINSTR)); 477 485 … … 584 592 break; 585 593 } 594 595 pCfgBb->fFlags &= ~DBGF_CFG_BB_F_EMPTY; 586 596 587 597 rc = dbgfR3DisasInstrStateEx(pUVM, idCpu, &AddrDisasm, fFlags, … … 610 620 PDBGFCFGBBINSTR pInstr = &pCfgBb->aInstr[pCfgBb->cInstr]; 611 621 612 pCfgBb->fFlags &= ~DBGF_CFG_BB_F_EMPTY;613 614 622 pInstr->AddrInstr = AddrDisasm; 615 623 pInstr->cbInstr = DisState.cbInstr; … … 618 626 619 627 pCfgBb->AddrEnd = AddrDisasm; 620 DBGFR3Addr Sub(&pCfgBb->AddrEnd,1);628 DBGFR3AddrAdd(&pCfgBb->AddrEnd, pInstr->cbInstr - 1); 621 629 DBGFR3AddrAdd(&AddrDisasm, pInstr->cbInstr); 622 630 … … 1007 1015 pDumpBb->pCfgBb = pCfgBb; 1008 1016 pDumpBb->cchHeight = pCfgBb->cInstr + 4; /* Include spacing and border top and bottom. */ 1017 pDumpBb->cchWidth = 0; 1009 1018 if ( RT_FAILURE(pCfgBb->rcError) 1010 1019 && pCfgBb->pszErr) … … 1013 1022 pDumpBb->cchWidth = RT_MAX(pDumpBb->cchWidth, (uint32_t)strlen(pCfgBb->pszErr)); 1014 1023 } 1015 pDumpBb->cchWidth = 0;1016 1024 for (unsigned i = 0; i < pCfgBb->cInstr; i++) 1017 1025 pDumpBb->cchWidth = RT_MAX(pDumpBb->cchWidth, (uint32_t)strlen(pCfgBb->aInstr[i].pszInstr)); … … 1178 1186 cchWidth = RT_MAX(cchWidth, pDumpBb->cchWidth); 1179 1187 cchHeight += pDumpBb->cchHeight; 1188 1189 /* Incomplete blocks don't have a successor. */ 1190 if (pDumpBb->pCfgBb->fFlags & DBGF_CFG_BB_F_INCOMPLETE_ERR) 1191 continue; 1192 1180 1193 switch (pDumpBb->pCfgBb->enmEndType) 1181 1194 { … … 1222 1235 uY += paDumpBb[i].cchHeight; 1223 1236 1237 /* Incomplete blocks don't have a successor. */ 1238 if (paDumpBb[i].pCfgBb->fFlags & DBGF_CFG_BB_F_INCOMPLETE_ERR) 1239 continue; 1240 1224 1241 switch (paDumpBb[i].pCfgBb->enmEndType) 1225 1242 { … … 1247 1264 { 1248 1265 PDBGFCFGDUMPBB pDumpBb = &paDumpBb[i]; 1266 1267 /* Incomplete blocks don't have a successor. */ 1268 if (pDumpBb->pCfgBb->fFlags & DBGF_CFG_BB_F_INCOMPLETE_ERR) 1269 continue; 1249 1270 1250 1271 switch (pDumpBb->pCfgBb->enmEndType)
Note:
See TracChangeset
for help on using the changeset viewer.