aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
diff options
context:
space:
mode:
authornerix <nerixdev@outlook.de>2025-05-27 22:16:03 +0200
committerGitHub <noreply@github.com>2025-05-27 13:16:03 -0700
commitc0a87231069452dfeaf9f2601bb30a3f5e7eb840 (patch)
treefeabc1e90086b5870787f53b37cf08d1e3480cf4 /llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
parent317f3bdcc1f96586489a9e48b494e593592b68cf (diff)
downloadllvm-c0a87231069452dfeaf9f2601bb30a3f5e7eb840.zip
llvm-c0a87231069452dfeaf9f2601bb30a3f5e7eb840.tar.gz
llvm-c0a87231069452dfeaf9f2601bb30a3f5e7eb840.tar.bz2
[LLDB] Show exit code on Windows if process can't launch (#141290)
When running a process that would exit before LLDB could stop the target, it would try to interpret (and subsequently format) the exit code as a Win32 error. However, processes on Windows won't return Win32 errors in that case. They will often return an [NTSTATUS](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55). One common case for this to occur is when a DLL is missing. In that case, the process will start successfully, but it will exit with `STATUS_DLL_NOT_FOUND`. LLDB would previously return "unknown error", because it tried to [`FormatMessage`](https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-formatmessage) `0xC0000135` which doesn't work, so it fell back to "unknown error". This PR changes the error to be the string "Process prematurely exited with {0:x}" and doesn't try to format the exit code. One could `FormatMessage` an `NTSTATUS` by passing `FORMAT_MESSAGE_FROM_HMODULE` and a handle to `ntdll.dll`, however, I don't think we can get the required format arguments (e.g. the missing DLL name - `%hs`).
Diffstat (limited to 'llvm/lib/Analysis/ModuleSummaryAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions