Index: lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc =================================================================== --- lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc +++ lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc @@ -80,8 +80,8 @@ char *outputBuffer, size_t *outputBufferSize, uint32_t flags); - swift_demangle_ft swift_demangle_f = - (swift_demangle_ft) dlsym(RTLD_DEFAULT, "swift_demangle"); + swift_demangle_ft swift_demangle_f; + *(void**)&swift_demangle_f = dlsym(RTLD_DEFAULT, "swift_demangle"); if (swift_demangle_f) return swift_demangle_f(name, internal_strlen(name), 0, 0, 0); Index: lib/stats/stats_client.cc =================================================================== --- lib/stats/stats_client.cc +++ lib/stats/stats_client.cc @@ -30,11 +30,13 @@ namespace { -void *LookupSymbolFromMain(const char *name) { +void (*LookupSymbolFromMain(const char *name))() { #ifdef _WIN32 - return reinterpret_cast(GetProcAddress(GetModuleHandle(0), name)); + return reinterpret_cast(GetProcAddress(GetModuleHandle(0), name)); #else - return dlsym(RTLD_DEFAULT, name); + void (*f)(); + *(void**)&f = dlsym(RTLD_DEFAULT, name); + return f; #endif }