\**********************************************************************/
HRESULT Runtime::CreateInstance(RuntimeConfiguration configuration, Runtime **ppRuntime)
{
- PCSTR runtimeModuleName = GetRuntimeModuleName(configuration);
+ PCSTR runtimeModuleName = ::GetRuntimeModuleName(configuration);
ULONG moduleIndex = 0;
ULONG64 moduleAddress = 0;
ULONG64 moduleSize = 0;
if (params.SymbolType == SymDeferred)
{
+ PCSTR runtimeDllName = ::GetRuntimeDllName(configuration);
std::string reloadCommand;
reloadCommand.append("/f ");
- reloadCommand.append(runtimeModuleName);
- reloadCommand.append(".dll");
+ reloadCommand.append(runtimeDllName);
g_ExtSymbols->Reload(reloadCommand.c_str());
g_ExtSymbols->GetModuleParameters(1, &moduleAddress, 0, ¶ms);
if (params.SymbolType != SymPdb && params.SymbolType != SymDia)
{
- ExtOut("PDB symbol for %s not loaded\n", runtimeModuleName);
+ ExtOut("Symbols for %s not loaded. Some SOS commands may not work.\n", runtimeDllName);
}
}
}
return nullptr;
}
// Parse off the file name
- char* lastSlash = strrchr(szModuleName, DIRECTORY_SEPARATOR_CHAR_A);
+ char* lastSlash = strrchr(szModuleName, GetTargetDirectorySeparatorW());
if (lastSlash != nullptr)
{
*lastSlash = '\0';
DWORD_PTR Value=0;
CMDValue arg[] =
- { // vptr, type
+ { // vptr, type;
{&Value, COHEX}
};
{
INIT_API();
MINIDUMP_NOT_SUPPORTED();
- ONLY_SUPPORTED_ON_WINDOWS_TARGET();
StringHolder DllName;
ULONG64 token = 0;
}
if (nArg!=2)
{
- ExtOut("Usage: !Token2EE module_name mdToken\n");
+ ExtOut("Usage: " SOSPrefix "Token2EE module_name mdToken\n");
ExtOut(" You can pass * for module_name to search all modules.\n");
return Status;
}
FileNameForModule(dwAddr, FileName);
// We'd like a short form for this output
- LPWSTR pszFilename = _wcsrchr (FileName, DIRECTORY_SEPARATOR_CHAR_W);
+ LPWSTR pszFilename = _wcsrchr (FileName, GetTargetDirectorySeparatorW());
if (pszFilename == NULL)
{
pszFilename = FileName;
FileNameForModule (dwAddr, FileName);
// We'd like a short form for this output
- LPWSTR pszFilename = _wcsrchr (FileName, DIRECTORY_SEPARATOR_CHAR_W);
+ LPWSTR pszFilename = _wcsrchr (FileName, GetTargetDirectorySeparatorW());
if (pszFilename == NULL)
{
pszFilename = FileName;
}
}
}
- ULONG Index;
+ ULONG index;
ULONG64 base;
- if (g_ExtSymbols->GetModuleByOffset(UL64_TO_CDA(addrInModule), 0, &Index, &base) == S_OK)
+ if (g_ExtSymbols->GetModuleByOffset(UL64_TO_CDA(addrInModule), 0, &index, &base) == S_OK)
{
ArrayHolder<char> szModuleName = new char[MAX_LONGPATH+1];
- if (g_ExtSymbols->GetModuleNames(Index, base, NULL, 0, NULL, szModuleName, MAX_LONGPATH, NULL, NULL, 0, NULL) == S_OK)
+ if (g_ExtSymbols->GetModuleNames(index, base, NULL, 0, NULL, szModuleName, MAX_LONGPATH, NULL, NULL, 0, NULL) == S_OK)
{
MultiByteToWideChar (CP_ACP, 0, szModuleName, MAX_LONGPATH, wszNameBuffer, MAX_LONGPATH);
DOAPPEND (wszNameBuffer);
bModuleNameWorked = TRUE;
}
}
- else
+ // If the dbgeng functions fail to get the module/assembly name, use the DAC API
+ if (!bModuleNameWorked)
{
if (g_sos->GetPEFileName(dmd.File, MAX_LONGPATH, wszNameBuffer, NULL) == S_OK)
{
if (wszNameBuffer[0] != W('\0'))
{
- WCHAR *pJustName = _wcsrchr(wszNameBuffer, DIRECTORY_SEPARATOR_CHAR_W);
+ WCHAR *pJustName = _wcsrchr(wszNameBuffer, GetTargetDirectorySeparatorW());
if (pJustName == NULL)
pJustName = wszNameBuffer - 1;