Skip to content

Commit c300403

Browse files
aganeatru
authored andcommitted
[Support] Silence warnings when retrieving exported functions (#97905)
Since functions exported from DLLs are type-erased, before this patch I was seeing the new Clang 19 warning `-Wcast-function-type-mismatch`. This happens when building LLVM on Windows. Following discussion in 593f708#commitcomment-143905744 (cherry picked from commit 39e192b)
1 parent 0e61520 commit c300403

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

llvm/lib/Support/Windows/Process.inc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,8 @@ static RTL_OSVERSIONINFOEXW GetWindowsVer() {
482482
HMODULE hMod = ::GetModuleHandleW(L"ntdll.dll");
483483
assert(hMod);
484484

485-
auto getVer = (RtlGetVersionPtr)::GetProcAddress(hMod, "RtlGetVersion");
485+
auto getVer =
486+
(RtlGetVersionPtr)(void *)::GetProcAddress(hMod, "RtlGetVersion");
486487
assert(getVer);
487488

488489
RTL_OSVERSIONINFOEXW info{};

llvm/lib/Support/Windows/Signals.inc

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -171,23 +171,27 @@ static bool load64BitDebugHelp(void) {
171171
HMODULE hLib =
172172
::LoadLibraryExA("Dbghelp.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
173173
if (hLib) {
174-
fMiniDumpWriteDump =
175-
(fpMiniDumpWriteDump)::GetProcAddress(hLib, "MiniDumpWriteDump");
176-
fStackWalk64 = (fpStackWalk64)::GetProcAddress(hLib, "StackWalk64");
177-
fSymGetModuleBase64 =
178-
(fpSymGetModuleBase64)::GetProcAddress(hLib, "SymGetModuleBase64");
179-
fSymGetSymFromAddr64 =
180-
(fpSymGetSymFromAddr64)::GetProcAddress(hLib, "SymGetSymFromAddr64");
181-
fSymGetLineFromAddr64 =
182-
(fpSymGetLineFromAddr64)::GetProcAddress(hLib, "SymGetLineFromAddr64");
183-
fSymGetModuleInfo64 =
184-
(fpSymGetModuleInfo64)::GetProcAddress(hLib, "SymGetModuleInfo64");
185-
fSymFunctionTableAccess64 = (fpSymFunctionTableAccess64)::GetProcAddress(
186-
hLib, "SymFunctionTableAccess64");
187-
fSymSetOptions = (fpSymSetOptions)::GetProcAddress(hLib, "SymSetOptions");
188-
fSymInitialize = (fpSymInitialize)::GetProcAddress(hLib, "SymInitialize");
189-
fEnumerateLoadedModules = (fpEnumerateLoadedModules)::GetProcAddress(
190-
hLib, "EnumerateLoadedModules64");
174+
fMiniDumpWriteDump = (fpMiniDumpWriteDump)(void *)::GetProcAddress(
175+
hLib, "MiniDumpWriteDump");
176+
fStackWalk64 = (fpStackWalk64)(void *)::GetProcAddress(hLib, "StackWalk64");
177+
fSymGetModuleBase64 = (fpSymGetModuleBase64)(void *)::GetProcAddress(
178+
hLib, "SymGetModuleBase64");
179+
fSymGetSymFromAddr64 = (fpSymGetSymFromAddr64)(void *)::GetProcAddress(
180+
hLib, "SymGetSymFromAddr64");
181+
fSymGetLineFromAddr64 = (fpSymGetLineFromAddr64)(void *)::GetProcAddress(
182+
hLib, "SymGetLineFromAddr64");
183+
fSymGetModuleInfo64 = (fpSymGetModuleInfo64)(void *)::GetProcAddress(
184+
hLib, "SymGetModuleInfo64");
185+
fSymFunctionTableAccess64 =
186+
(fpSymFunctionTableAccess64)(void *)::GetProcAddress(
187+
hLib, "SymFunctionTableAccess64");
188+
fSymSetOptions =
189+
(fpSymSetOptions)(void *)::GetProcAddress(hLib, "SymSetOptions");
190+
fSymInitialize =
191+
(fpSymInitialize)(void *)::GetProcAddress(hLib, "SymInitialize");
192+
fEnumerateLoadedModules =
193+
(fpEnumerateLoadedModules)(void *)::GetProcAddress(
194+
hLib, "EnumerateLoadedModules64");
191195
}
192196
return isDebugHelpInitialized();
193197
}

0 commit comments

Comments
 (0)