* plugin.cc (Plugin::load): Don't cast from void* to a function

pointer.
This commit is contained in:
Ian Lance Taylor 2009-12-10 07:44:28 +00:00
parent 8a2c8fef19
commit b59befec8e
2 changed files with 10 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2009-12-09 Ian Lance Taylor <iant@google.com>
* plugin.cc (Plugin::load): Don't cast from void* to a function
pointer.
2009-12-09 Ian Lance Taylor <iant@google.com>
* dynobj.cc (Sized_dynobj::do_read_symbols): Clear version

View file

@ -109,14 +109,16 @@ Plugin::load()
}
// Find the plugin's onload entry point.
ld_plugin_onload onload = reinterpret_cast<ld_plugin_onload>
(dlsym(this->handle_, "onload"));
if (onload == NULL)
void* ptr = dlsym(this->handle_, "onload");
if (ptr == NULL)
{
gold_error(_("%s: could not find onload entry point"),
this->filename_.c_str());
return;
}
ld_plugin_onload onload;
gold_assert(sizeof(onload) == sizeof(ptr));
memcpy(&onload, &ptr, sizeof(ptr));
// Get the linker's version number.
const char* ver = get_version_string();