Skip to content

Commit

Permalink
[Support] Silence warnings when retrieving exported functions (llvm#9…
Browse files Browse the repository at this point in the history
…7905)

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
llvm@593f708#commitcomment-143905744

(cherry picked from commit 39e192b)
  • Loading branch information
aganea authored and llvmbot committed Jul 31, 2024
1 parent 3389604 commit 91be3db
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 18 deletions.
3 changes: 2 additions & 1 deletion llvm/lib/Support/Windows/Process.inc
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,8 @@ static RTL_OSVERSIONINFOEXW GetWindowsVer() {
HMODULE hMod = ::GetModuleHandleW(L"ntdll.dll");
assert(hMod);

auto getVer = (RtlGetVersionPtr)::GetProcAddress(hMod, "RtlGetVersion");
auto getVer =
(RtlGetVersionPtr)(void *)::GetProcAddress(hMod, "RtlGetVersion");
assert(getVer);

RTL_OSVERSIONINFOEXW info{};
Expand Down
38 changes: 21 additions & 17 deletions llvm/lib/Support/Windows/Signals.inc
Original file line number Diff line number Diff line change
Expand Up @@ -171,23 +171,27 @@ static bool load64BitDebugHelp(void) {
HMODULE hLib =
::LoadLibraryExA("Dbghelp.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (hLib) {
fMiniDumpWriteDump =
(fpMiniDumpWriteDump)::GetProcAddress(hLib, "MiniDumpWriteDump");
fStackWalk64 = (fpStackWalk64)::GetProcAddress(hLib, "StackWalk64");
fSymGetModuleBase64 =
(fpSymGetModuleBase64)::GetProcAddress(hLib, "SymGetModuleBase64");
fSymGetSymFromAddr64 =
(fpSymGetSymFromAddr64)::GetProcAddress(hLib, "SymGetSymFromAddr64");
fSymGetLineFromAddr64 =
(fpSymGetLineFromAddr64)::GetProcAddress(hLib, "SymGetLineFromAddr64");
fSymGetModuleInfo64 =
(fpSymGetModuleInfo64)::GetProcAddress(hLib, "SymGetModuleInfo64");
fSymFunctionTableAccess64 = (fpSymFunctionTableAccess64)::GetProcAddress(
hLib, "SymFunctionTableAccess64");
fSymSetOptions = (fpSymSetOptions)::GetProcAddress(hLib, "SymSetOptions");
fSymInitialize = (fpSymInitialize)::GetProcAddress(hLib, "SymInitialize");
fEnumerateLoadedModules = (fpEnumerateLoadedModules)::GetProcAddress(
hLib, "EnumerateLoadedModules64");
fMiniDumpWriteDump = (fpMiniDumpWriteDump)(void *)::GetProcAddress(
hLib, "MiniDumpWriteDump");
fStackWalk64 = (fpStackWalk64)(void *)::GetProcAddress(hLib, "StackWalk64");
fSymGetModuleBase64 = (fpSymGetModuleBase64)(void *)::GetProcAddress(
hLib, "SymGetModuleBase64");
fSymGetSymFromAddr64 = (fpSymGetSymFromAddr64)(void *)::GetProcAddress(
hLib, "SymGetSymFromAddr64");
fSymGetLineFromAddr64 = (fpSymGetLineFromAddr64)(void *)::GetProcAddress(
hLib, "SymGetLineFromAddr64");
fSymGetModuleInfo64 = (fpSymGetModuleInfo64)(void *)::GetProcAddress(
hLib, "SymGetModuleInfo64");
fSymFunctionTableAccess64 =
(fpSymFunctionTableAccess64)(void *)::GetProcAddress(
hLib, "SymFunctionTableAccess64");
fSymSetOptions =
(fpSymSetOptions)(void *)::GetProcAddress(hLib, "SymSetOptions");
fSymInitialize =
(fpSymInitialize)(void *)::GetProcAddress(hLib, "SymInitialize");
fEnumerateLoadedModules =
(fpEnumerateLoadedModules)(void *)::GetProcAddress(
hLib, "EnumerateLoadedModules64");
}
return isDebugHelpInitialized();
}
Expand Down

0 comments on commit 91be3db

Please sign in to comment.