InternalFrameManager internalFrameManager;
IfFailRet(internalFrameManager.Init(pThread3));
- #if defined(_AMD64_)
+ #if defined(_AMD64_) || defined(_ARM64_)
ExtOut("%-16s %-16s %s\n", "Child SP", "IP", "Call Site");
- #elif defined(_X86_)
+ #elif defined(_X86_) || defined(_ARM_)
ExtOut("%-8s %-8s %s\n", "Child SP", "IP", "Call Site");
#endif
ToRelease<ISymUnmanagedBinder3> pSymBinder;
if (FAILED(Status = CreateInstanceCustom(CLSID_CorSymBinder_SxS,
IID_ISymUnmanagedBinder3,
- W("diasymreader.dll"),
+ NATIVE_SYMBOL_READER_DLL,
cciLatestFx|cciDacColocated|cciDbgPath,
(void**)&pSymBinder)))
{
ExtOut("SOS Error: Unable to CoCreateInstance class=CLSID_CorSymBinder_SxS, interface=IID_ISymUnmanagedBinder3, hr=0x%x\n", Status);
- ExtOut("This usually means the installation of .Net Framework on your machine is missing or needs repair\n");
+ ExtOut("This usually means SOS was unable to locate a suitable version of DiaSymReader. The dll searched for was '%S'\n", NATIVE_SYMBOL_READER_DLL);
return Status;
}
do { if (!(expr) ) { ExtOut(reason); ExtOut(msg); ExtOut(#expr); DebugBreak(); } } while (0)
#endif
+// The native symbol reader dll name
+#if defined(_AMD64_)
+#define NATIVE_SYMBOL_READER_DLL W("Microsoft.DiaSymReader.Native.amd64.dll")
+#elif defined(_X86_)
+#define NATIVE_SYMBOL_READER_DLL W("Microsoft.DiaSymReader.Native.x86.dll")
+#elif defined(_ARM_)
+#define NATIVE_SYMBOL_READER_DLL W("Microsoft.DiaSymReader.Native.arm.dll")
+#elif defined(_ARM64_)
+// Use diasymreader until the package has an arm64 version - issue #7360
+//#define NATIVE_SYMBOL_READER_DLL W("Microsoft.DiaSymReader.Native.arm64.dll")
+#define NATIVE_SYMBOL_READER_DLL W("diasymreader.dll")
+#endif
+
// PREFIX macros - Begin
// SOS does not have support for Contracts. Therefore we needed to duplicate