Author: majnemer Date: Tue Jul 22 16:59:22 2014 New Revision: 213691 URL: http://llvm.org/viewvc/llvm-project?rev=213691&view=rev Log: PluginManager: Don't cast from void-pointer to pointer-to-function
GCC warns on reinterpret_cast expressions involving a void-pointer source and a pointer-to-function destination. Take a detour through intptr_t to silence it. Differential Revision: http://reviews.llvm.org/D4626 Modified: lldb/trunk/source/Core/PluginManager.cpp Modified: lldb/trunk/source/Core/PluginManager.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/PluginManager.cpp?rev=213691&r1=213690&r2=213691&view=diff ============================================================================== --- lldb/trunk/source/Core/PluginManager.cpp (original) +++ lldb/trunk/source/Core/PluginManager.cpp Tue Jul 22 16:59:22 2014 @@ -79,6 +79,12 @@ SetPluginInfo (const FileSpec &plugin_fi plugin_map[plugin_file_spec] = plugin_info; } +template <typename FPtrTy> +static FPtrTy +CastToFPtr (void *VPtr) +{ + return reinterpret_cast<FPtrTy>(reinterpret_cast<intptr_t>(VPtr)); +} static FileSpec::EnumerateDirectoryResult LoadPluginCallback @@ -115,7 +121,11 @@ LoadPluginCallback if (plugin_info.plugin_handle) { bool success = false; - plugin_info.plugin_init_callback = (PluginInitCallback)Host::DynamicLibraryGetSymbol (plugin_info.plugin_handle, "LLDBPluginInitialize", error); + plugin_info.plugin_init_callback = + CastToFPtr<PluginInitCallback>( + Host::DynamicLibraryGetSymbol(plugin_info.plugin_handle, + "LLDBPluginInitialize", + error)); if (plugin_info.plugin_init_callback) { // Call the plug-in "bool LLDBPluginInitialize(void)" function @@ -125,7 +135,11 @@ LoadPluginCallback if (success) { // It is ok for the "LLDBPluginTerminate" symbol to be NULL - plugin_info.plugin_term_callback = (PluginTermCallback)Host::DynamicLibraryGetSymbol (plugin_info.plugin_handle, "LLDBPluginTerminate", error); + plugin_info.plugin_term_callback = + CastToFPtr<PluginTermCallback>( + Host::DynamicLibraryGetSymbol( + plugin_info.plugin_handle, "LLDBPluginTerminate", + error)); } else { _______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
