diff --git a/src/base/SMPFunction.cpp b/src/base/SMPFunction.cpp index 689be030a425af3f4a6fd17d1ceb7a4acdebb2e1..e83219f9dbcf4f5c6fd9a4ee875d31995d8c626f 100644 --- a/src/base/SMPFunction.cpp +++ b/src/base/SMPFunction.cpp @@ -6610,6 +6610,10 @@ void SMPFunction::SetLinks(void) { // Mark CurrBlock as now being reachable, along with the blocks it dominates. CurrBlock->DepthFirstMark(); ++BlockIter; + + // Block could be IBTarget and thus actually be reachable. Cover our bases by emitting an IBT annotation. + SMPInstr *FirstInst = (*(CurrBlock->GetFirstInst())); + global_STARS_program->PrintUnknownCodeXref(CurrBlock->GetFirstAddr(), FirstInst->GetSize()); } changed = true; } // end if (processed) ... else ... diff --git a/src/base/SMPInstr.cpp b/src/base/SMPInstr.cpp index 57ce2ea4702e3f294b1e3da16320f3447ba10451..7effb673aa5fc362efb934b6351b47d86f75cbf9 100644 --- a/src/base/SMPInstr.cpp +++ b/src/base/SMPInstr.cpp @@ -2137,8 +2137,14 @@ void SMPInstr::PrintOperands(void) const { // Complete DEBUG printing. void SMPInstr::Dump(void) { - SMP_msg("%llx %zd SMPitype: %d SPOffset: %lld %s\n", (unsigned long long) this->GetAddr(), this->GetSize(), (int) this->type, - (long long) this->GetStackPtrOffset(), DisAsmText.GetDisAsm(this->GetAddr(), this->IsMarkerInst())); + if (this->IsMarkerInst()) { + SMP_msg("%llx 1 SMPitype: %d SPOffset: %lld fnop\n", (unsigned long long) this->GetAddr(), (int) this->type, + (long long) this->GetStackPtrOffset()); + } + else { + SMP_msg("%llx %zd SMPitype: %d SPOffset: %lld %s\n", (unsigned long long) this->GetAddr(), this->GetSize(), (int) this->type, + (long long) this->GetStackPtrOffset(), DisAsmText.GetDisAsm(this->GetAddr(), false)); + } #if STARS_DUMP_FG_INFO SMP_msg("USEs: "); if (NULL == this->GetBlock()) { // during early improvement of disasm