diff options
author | Ian Lance Taylor <ian@airs.com> | 2009-12-10 07:44:28 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2009-12-10 07:44:28 +0000 |
commit | b59befec8e8a9bec906f2a0ae623db822c9ef2cd (patch) | |
tree | 5f5fd1f115c7e979c1d3e63f0d1fb16b17ab372f | |
parent | 8a2c8fef1949ad6eb7bd0deb84c9caf7f141c304 (diff) | |
download | gdb-b59befec8e8a9bec906f2a0ae623db822c9ef2cd.zip gdb-b59befec8e8a9bec906f2a0ae623db822c9ef2cd.tar.gz gdb-b59befec8e8a9bec906f2a0ae623db822c9ef2cd.tar.bz2 |
* plugin.cc (Plugin::load): Don't cast from void* to a function
pointer.
-rw-r--r-- | gold/ChangeLog | 5 | ||||
-rw-r--r-- | gold/plugin.cc | 8 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 1e6d07c..339d6e1 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,5 +1,10 @@ 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 information fields. diff --git a/gold/plugin.cc b/gold/plugin.cc index 317fb7d..ff9f98f 100644 --- a/gold/plugin.cc +++ b/gold/plugin.cc @@ -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(); |