X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fdebug%2Fdaccess%2Fnidump.cpp;h=7812bd72f0fd391660763b71cf6a9d82a3502cbd;hb=676b3e46459a5138d05ac31bb697a54a8a8f685c;hp=c7509691720803c8f84775021655797ca3234f6b;hpb=7a0186fe2611e00cd8019adced7af3a269e2e7f4;p=platform%2Fupstream%2Fcoreclr.git diff --git a/src/debug/daccess/nidump.cpp b/src/debug/daccess/nidump.cpp index c750969..7812bd7 100644 --- a/src/debug/daccess/nidump.cpp +++ b/src/debug/daccess/nidump.cpp @@ -3486,8 +3486,16 @@ size_t NativeImageDumper::TranslateSymbol(IXCLRDisassemblySupport *dis, #endif // HAS_NDIRECT_IMPORT_PRECODE #ifdef HAS_FIXUP_PRECODE case PRECODE_FIXUP: +#ifdef HAS_RELATIVE_FIXUP_PRECODE + _ASSERTE(!"unreachable"); break; +#else // HAS_RELATIVE_FIXUP_PRECODE precodeName = "FixupPrecode"; break; +#endif // HAS_RELATIVE_FIXUP_PRECODE #endif // HAS_FIXUP_PRECODE +#ifdef HAS_RELATIVE_FIXUP_PRECODE + case PRECODE_RELATIVE_FIXUP: + precodeName = "RelativeFixupPrecode"; break; +#endif // HAS_RELATIVE_FIXUP_PRECODE #ifdef HAS_THISPTR_RETBUF_PRECODE case PRECODE_THISPTR_RETBUF: precodeName = "ThisPtrRetBufPrecode"; break; @@ -7507,6 +7515,9 @@ void NativeImageDumper::DumpPrecode( PTR_Precode precode, PTR_Module module ) #endif #ifdef HAS_FIXUP_PRECODE case PRECODE_FIXUP: +#ifdef HAS_RELATIVE_FIXUP_PRECODE + _ASSERTE(!"unreachable"); break; +#else // HAS_RELATIVE_FIXUP_PRECODE IF_OPT_AND(PRECODES, METHODDESCS) { PTR_FixupPrecode p( precode->AsFixupPrecode() ); @@ -7558,7 +7569,56 @@ void NativeImageDumper::DumpPrecode( PTR_Precode precode, PTR_Module module ) DisplayEndStructure( ALWAYS ); //FixupPrecode } break; -#endif +#endif // HAS_RELATIVE_FIXUP_PRECODE +#endif // HAS_FIXUP_PRECODE +#ifdef HAS_RELATIVE_FIXUP_PRECODE + case PRECODE_RELATIVE_FIXUP: + IF_OPT_AND(PRECODES, METHODDESCS) + { + PTR_RelativeFixupPrecode p( precode->AsRelativeFixupPrecode() ); + DisplayStartStructure( "RelativeFixupPrecode", + DPtrToPreferredAddr(p), + sizeof(*p), + ALWAYS ); + PTR_MethodDesc precodeMD(p->GetMethodDesc()); + { + DisplayWriteFieldInt( m_MethodDescChunkIndex, + p->m_MethodDescChunkIndex, RelativeFixupPrecode, + ALWAYS ); + DisplayWriteFieldInt( m_PrecodeChunkIndex, + p->m_PrecodeChunkIndex, RelativeFixupPrecode, + ALWAYS ); + if( p->m_PrecodeChunkIndex == 0 ) + { + //dump the location of the Base + DisplayWriteElementAddress( "PrecodeChunkBase", + DataPtrToDisplay(p->GetBase()), + sizeof(void*), ALWAYS ); + } + //Make sure I align up if there is no code slot to make + //sure that I get the padding + TADDR mdPtrStart = p->GetBase() + + (p->m_MethodDescChunkIndex * MethodDesc::ALIGNMENT); + TADDR mdPtrEnd = ALIGN_UP( mdPtrStart + sizeof(MethodDesc*), + 8 ); + CoverageRead( mdPtrStart, (ULONG32)(mdPtrEnd - mdPtrStart) ); + TADDR precodeMDSlot = p->GetBase() + + p->m_MethodDescChunkIndex * MethodDesc::ALIGNMENT; + DoWriteFieldMethodDesc( "MethodDesc", + (DWORD)(precodeMDSlot - PTR_TO_TADDR(p)), + sizeof(TADDR), precodeMD ); + } + TADDR target = p->GetTarget(); + DisplayWriteElementPointer("Target", + DataPtrToDisplay(target), + ALWAYS ); + /* REVISIT_TODO Thu 01/05/2006 + * dump slot with offset if it is here + */ + DisplayEndStructure( ALWAYS ); //RelativeFixupPrecode + } + break; +#endif // HAS_RELATIVE_FIXUP_PRECODE #ifdef HAS_THISPTR_RETBUF_PRECODE case PRECODE_THISPTR_RETBUF: DISPLAY_PRECODE(ThisPtrRetBufPrecode); break;