diff options
author | Gleb Balykov <g.balykov@samsung.com> | 2020-09-14 13:30:50 +0300 |
---|---|---|
committer | Alexander Soldatov/Platform Lab /SRR/Staff Engineer/Samsung Electronics <soldatov.a@samsung.com> | 2020-09-21 20:04:27 +0300 |
commit | 676b3e46459a5138d05ac31bb697a54a8a8f685c (patch) | |
tree | 9a5d32deb41da42d98bf125b6a1ec9dee8359ce8 /src/debug/daccess/nidump.cpp | |
parent | 7a0186fe2611e00cd8019adced7af3a269e2e7f4 (diff) | |
download | coreclr-accepted/tizen/unified/20200922.034817.tar.gz coreclr-accepted/tizen/unified/20200922.034817.tar.bz2 coreclr-accepted/tizen/unified/20200922.034817.zip |
[Tizen] Add RelativeFixupPrecode for arm64, which replaces FixupPrecode in FNV imagessubmit/tizen/20200921.230336accepted/tizen/unified/20200922.034817
Diffstat (limited to 'src/debug/daccess/nidump.cpp')
-rw-r--r-- | src/debug/daccess/nidump.cpp | 62 |
1 files changed, 61 insertions, 1 deletions
diff --git a/src/debug/daccess/nidump.cpp b/src/debug/daccess/nidump.cpp index c750969172..7812bd72f0 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; |