Index: llvm/lib/Support/Windows/Signals.inc =================================================================== --- llvm/lib/Support/Windows/Signals.inc +++ llvm/lib/Support/Windows/Signals.inc @@ -355,18 +355,6 @@ continue; } - IMAGEHLP_MODULE64 M; - memset(&M, 0, sizeof(IMAGEHLP_MODULE64)); - M.SizeOfStruct = sizeof(IMAGEHLP_MODULE64); - if (fSymGetModuleInfo64(hProcess, fSymGetModuleBase64(hProcess, PC), &M)) { - DWORD64 const disp = PC - M.BaseOfImage; - OS << format(", %s(0x%016llX) + 0x%llX byte(s)", - static_cast(M.ImageName), M.BaseOfImage, - static_cast(disp)); - } else { - OS << ", "; - } - // Print the symbol name. char buffer[512]; IMAGEHLP_SYMBOL64 *symbol = reinterpret_cast(buffer); @@ -381,16 +369,20 @@ } buffer[511] = 0; - OS << format(", %s() + 0x%llX byte(s)", static_cast(symbol->Name), - static_cast(dwDisp)); + if (dwDisp > 0) + OS << format(", %s() + 0x%llX bytes(s)", (const char*)symbol->Name, + dwDisp); + else + OS << format(", %s", (const char*)symbol->Name); // Print the source file and line number information. IMAGEHLP_LINE64 line = {}; DWORD dwLineDisp; line.SizeOfStruct = sizeof(line); if (fSymGetLineFromAddr64(hProcess, PC, &dwLineDisp, &line)) { - OS << format(", %s, line %lu + 0x%lX byte(s)", line.FileName, - line.LineNumber, dwLineDisp); + OS << format(", %s, line %lu", line.FileName, line.LineNumber); + if (dwLineDisp > 0) + OS << format(" + 0x%lX byte(s)", dwLineDisp); } OS << '\n';