[Lldb-commits] [lldb] Reapply "[lldb] Inherit DuplicateFileAction(HANDLE, HANDLE) handles on windows (#137978)" (PR #138896)
Martin Storsjö via lldb-commits
lldb-commits at lists.llvm.org
Tue May 13 01:39:16 PDT 2025
mstorsjo wrote:
Hi Pavel!
Unfortunately, it seems like this change has broken compilation of LLDB for mingw, on all architectures. With MSVC and clang-cl, it is broken for 32 bit platforms, while the issue only shows up as a warning for 64 bit architectures there.
On 64 bit mingw:
```
llvm-project/llvm/tools/lldb/tools/lldb-server/lldb-platform.cpp:277:41: error: cast from pointer to smaller type 'int' loses information
277 | launch_info.AppendDuplicateFileAction((int)shared_socket.GetSendableFD(),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
llvm-project/llvm/tools/lldb/tools/lldb-server/lldb-platform.cpp:278:41: error: cast from pointer to smaller type 'int' loses information
278 | (int)shared_socket.GetSendableFD());
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 errors generated.
```
On 32 bit mingw:
```
llvm-project/llvm/tools/lldb/source/Host/windows/ProcessLauncherWindows.cpp:103:3: error: no matching function for call to 'InitializeProcThreadAttributeList'
103 | InitializeProcThreadAttributeList(/*lpAttributeList=*/nullptr,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
llvm-mingw/i686-w64-mingw32/include/processthreadsapi.h:242:29: note: candidate function not viable: no known conversion from 'size_t *' (aka 'unsigned int *') to 'PSIZE_T' (aka 'unsigned long *') for 4th argument
242 | WINBASEAPI WINBOOL WINAPI InitializeProcThreadAttributeList (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, DWORD dwAttributeCount, DWORD dwFlags, PSIZE_T lpSize);
| ^ ~~~~~~~~~~~~~~
llvm-project/llvm/tools/lldb/source/Host/windows/ProcessLauncherWindows.cpp:111:8: error: no matching function for call to 'InitializeProcThreadAttributeList'
111 | if (!InitializeProcThreadAttributeList(startupinfoex.lpAttributeList,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
llvm-mingw/i686-w64-mingw32/include/processthreadsapi.h:242:29: note: candidate function not viable: no known conversion from 'size_t *' (aka 'unsigned int *') to 'PSIZE_T' (aka 'unsigned long *') for 4th argument
242 | WINBASEAPI WINBOOL WINAPI InitializeProcThreadAttributeList (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, DWORD dwAttributeCount, DWORD dwFlags, PSIZE_T lpSize);
| ^ ~~~~~~~~~~~~~~
2 errors generated.
```
On 32 bit clang-cl:
```
llvm-project\lldb\source\Host\windows\ProcessLauncherWindows.cpp(103,3): error: no matching function for call to 'InitializeProcThreadAttributeList'
InitializeProcThreadAttributeList(/*lpAttributeList=*/nullptr,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\um\processthreadsapi.h(673,1): note: candidate function not viable: no known conversion from 'size_t *' (aka 'unsigned int *') to 'PSIZE_T' (aka 'unsigned long *') for 4th argument
InitializeProcThreadAttributeList(
^
llvm-project\lldb\source\Host\windows\ProcessLauncherWindows.cpp(111,8): error: no matching function for call to 'InitializeProcThreadAttributeList'
if (!InitializeProcThreadAttributeList(startupinfoex.lpAttributeList,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\um\processthreadsapi.h(673,1): note: candidate function not viable: no known conversion from 'size_t *' (aka 'unsigned int *') to 'PSIZE_T' (aka 'unsigned long *') for 4th argument
InitializeProcThreadAttributeList(
^
2 errors generated.
```
32 bit MSVC:
```
llvm-project\lldb\source\Host\windows\ProcessLauncherWindows.cpp(103): error C2664: 'BOOL InitializeProcThreadAttributeList(LPPROC_THREAD_ATTRIBUTE_LIST,DWORD,DWORD,PSIZE_T)': cannot convert argument 4 from 'size_t *' to 'PSIZE_T'
llvm-project\lldb\source\Host\windows\ProcessLauncherWindows.cpp(105): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or parenthesized function-style cast
C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\um\processthreadsapi.h(673): note: see declaration of 'InitializeProcThreadAttributeList'
llvm-project\lldb\source\Host\windows\ProcessLauncherWindows.cpp(103): note: while trying to match the argument list '(nullptr, int, int, size_t *)'
llvm-project\lldb\source\Host\windows\ProcessLauncherWindows.cpp(111): error C2664: 'BOOL InitializeProcThreadAttributeList(LPPROC_THREAD_ATTRIBUTE_LIST,DWORD,DWORD,PSIZE_T)': cannot convert argument 4 from 'size_t *' to 'PSIZE_T'
llvm-project\lldb\source\Host\windows\ProcessLauncherWindows.cpp(113): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or parenthesized function-style cast
C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\um\processthreadsapi.h(673): note: see declaration of 'InitializeProcThreadAttributeList'
llvm-project\lldb\source\Host\windows\ProcessLauncherWindows.cpp(111): note: while trying to match the argument list '(LPPROC_THREAD_ATTRIBUTE_LIST, int, int, size_t *)'
ninja: build stopped: cannot make progress due to previous errors.
```
On 64 bit clang-cl, it is only a warning:
```
llvm-project\lldb\source\Plugins\Process\gdb-remote\GDBRemoteCommunication.cpp(927,43): warning: cast to smaller integer type 'int' from 'void *' [-Wvoid-pointer-to-int-cast]
launch_info.AppendDuplicateFileAction((int)pass_comm_fd, (int)pass_comm_fd);
^~~~~~~~~~~~~~~~~
llvm-project\lldb\source\Plugins\Process\gdb-remote\GDBRemoteCommunication.cpp(927,62): warning: cast to smaller integer type 'int' from 'void *' [-Wvoid-pointer-to-int-cast]
launch_info.AppendDuplicateFileAction((int)pass_comm_fd, (int)pass_comm_fd);
^~~~~~~~~~~~~~~~~
2 warnings generated.
llvm-project\lldb\tools\lldb-server\lldb-platform.cpp(277,41): warning: cast to smaller integer type 'int' from 'void *' [-Wvoid-pointer-to-int-cast]
launch_info.AppendDuplicateFileAction((int)shared_socket.GetSendableFD(),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
llvm-project\lldb\tools\lldb-server\lldb-platform.cpp(278,41): warning: cast to smaller integer type 'int' from 'void *' [-Wvoid-pointer-to-int-cast]
(int)shared_socket.GetSendableFD());
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
```
And the same for 64 bit MSVC:
```
llvm-project\lldb\source\Plugins\Process\gdb-remote\GDBRemoteCommunication.cpp(927): warning C4311: 'type cast': pointer truncation from 'lldb_private::shared_fd_t' to 'int'
llvm-project\lldb\source\Plugins\Process\gdb-remote\GDBRemoteCommunication.cpp(927): warning C4302: 'type cast': truncation from 'lldb_private::shared_fd_t' to 'int'
llvm-project\lldb\source\Plugins\Process\gdb-remote\GDBRemoteCommunication.cpp(927): warning C4311: 'type cast': pointer truncation from 'lldb_private::shared_fd_t' to 'int'
llvm-project\lldb\source\Plugins\Process\gdb-remote\GDBRemoteCommunication.cpp(927): warning C4302: 'type cast': truncation from 'lldb_private::shared_fd_t' to 'int'
llvm-project\lldb\tools\lldb-server\lldb-platform.cpp(277): warning C4311: 'type cast': pointer truncation from 'lldb_private::shared_fd_t' to 'int'
llvm-project\lldb\tools\lldb-server\lldb-platform.cpp(277): warning C4302: 'type cast': truncation from 'lldb_private::shared_fd_t' to 'int'
llvm-project\lldb\tools\lldb-server\lldb-platform.cpp(278): warning C4311: 'type cast': pointer truncation from 'lldb_private::shared_fd_t' to 'int'
llvm-project\lldb\tools\lldb-server\lldb-platform.cpp(278): warning C4302: 'type cast': truncation from 'lldb_private::shared_fd_t' to 'int'
```
https://github.com/llvm/llvm-project/pull/138896
More information about the lldb-commits
mailing list