summaryrefslogtreecommitdiff
path: root/src/debug/daccess/nidump.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug/daccess/nidump.cpp')
-rw-r--r--src/debug/daccess/nidump.cpp29
1 files changed, 23 insertions, 6 deletions
diff --git a/src/debug/daccess/nidump.cpp b/src/debug/daccess/nidump.cpp
index 7812bd72f0..dca36b97eb 100644
--- a/src/debug/daccess/nidump.cpp
+++ b/src/debug/daccess/nidump.cpp
@@ -3479,7 +3479,15 @@ size_t NativeImageDumper::TranslateSymbol(IXCLRDisassemblySupport *dis,
case PRECODE_INVALID:
precodeName = "InvalidPrecode"; break;
case PRECODE_STUB:
+#ifdef HAS_RELATIVE_STUB_PRECODE
+ _ASSERTE(!"unreachable"); break;
+#else // HAS_RELATIVE_STUB_PRECODE
precodeName = "StubPrecode"; break;
+#endif // HAS_RELATIVE_STUB_PRECODE
+#ifdef HAS_RELATIVE_STUB_PRECODE
+ case PRECODE_RELATIVE_STUB:
+ precodeName = "RelativeStubPrecode"; break;
+#endif // HAS_RELATIVE_STUB_PRECODE
#ifdef HAS_NDIRECT_IMPORT_PRECODE
case PRECODE_NDIRECT_IMPORT:
precodeName = "NDirectImportPrecode"; break;
@@ -7490,15 +7498,16 @@ void NativeImageDumper::DumpPrecode( PTR_Precode precode, PTR_Module module )
PrecodeType pType = precode->GetType();
switch(pType)
{
-#define DISPLAY_PRECODE(type) \
+#define DISPLAY_PRECODE(type, field) \
IF_OPT_AND(PRECODES, METHODDESCS) \
{ \
PTR_ ## type p( precode->As ## type () ); \
DisplayStartStructure( # type, \
DPtrToPreferredAddr(p), \
sizeof(*p), ALWAYS ); \
- WriteFieldMethodDesc( m_pMethodDesc, \
- p->m_pMethodDesc, \
+ PTR_MethodDesc precodeMD(p->GetMethodDesc()); \
+ WriteFieldMethodDesc( field, \
+ precodeMD, \
type, ALWAYS ); \
TADDR target = p->GetTarget(); \
DisplayWriteElementPointer("Target",\
@@ -7508,10 +7517,18 @@ void NativeImageDumper::DumpPrecode( PTR_Precode precode, PTR_Module module )
}
case PRECODE_STUB:
- DISPLAY_PRECODE(StubPrecode); break;
+#ifdef HAS_RELATIVE_STUB_PRECODE
+ _ASSERTE(!"unreachable"); break;
+#else // HAS_RELATIVE_STUB_PRECODE
+ DISPLAY_PRECODE(StubPrecode, m_pMethodDesc); break;
+#endif // HAS_RELATIVE_STUB_PRECODE
+#ifdef HAS_RELATIVE_STUB_PRECODE
+ case PRECODE_RELATIVE_STUB:
+ DISPLAY_PRECODE(RelativeStubPrecode, m_pMethodDescOffset); break;
+#endif // HAS_RELATIVE_STUB_PRECODE
#ifdef HAS_NDIRECT_IMPORT_PRECODE
case PRECODE_NDIRECT_IMPORT:
- DISPLAY_PRECODE(NDirectImportPrecode); break;
+ DISPLAY_PRECODE(NDirectImportPrecode, m_pMethodDesc); break;
#endif
#ifdef HAS_FIXUP_PRECODE
case PRECODE_FIXUP:
@@ -7621,7 +7638,7 @@ void NativeImageDumper::DumpPrecode( PTR_Precode precode, PTR_Module module )
#endif // HAS_RELATIVE_FIXUP_PRECODE
#ifdef HAS_THISPTR_RETBUF_PRECODE
case PRECODE_THISPTR_RETBUF:
- DISPLAY_PRECODE(ThisPtrRetBufPrecode); break;
+ DISPLAY_PRECODE(ThisPtrRetBufPrecode, m_pMethodDesc); break;
#endif
default:
_ASSERTE( !"Unsupported precode type" );