mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-03-04 07:27:54 +00:00
Warn and return for duplicated plugin
If a plugin has been loaded already, we should warn and return, instead of adding it on the plugin list. PR ld/20321 * plugin.c (plugin_opt_plugin): Warn and return if plugin has been loaded already. * testsuite/ld-plugin/lto.exp: Run PR ld/20321 test. * testsuite/ld-plugin/pr20321.c: New file.
This commit is contained in:
parent
1dc8bf195d
commit
c3e1c28ebf
@ -1,3 +1,11 @@
|
||||
2016-07-04 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/20321
|
||||
* plugin.c (plugin_opt_plugin): Warn and return if plugin has
|
||||
been loaded already.
|
||||
* testsuite/ld-plugin/lto.exp: Run PR ld/20321 test.
|
||||
* testsuite/ld-plugin/pr20321.c: New file.
|
||||
|
||||
2016-07-04 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* scripttempl/ft32.sc (__PMSIZE_): If not defined, set to 256K.
|
||||
|
13
ld/plugin.c
13
ld/plugin.c
@ -237,6 +237,7 @@ void
|
||||
plugin_opt_plugin (const char *plugin)
|
||||
{
|
||||
plugin_t *newplug;
|
||||
plugin_t *curplug = plugins_list;
|
||||
|
||||
newplug = xmalloc (sizeof *newplug);
|
||||
memset (newplug, 0, sizeof *newplug);
|
||||
@ -245,6 +246,18 @@ plugin_opt_plugin (const char *plugin)
|
||||
if (!newplug->dlhandle)
|
||||
einfo (_("%P%F: %s: error loading plugin: %s\n"), plugin, dlerror ());
|
||||
|
||||
/* Check if plugin has been loaded already. */
|
||||
while (curplug)
|
||||
{
|
||||
if (newplug->dlhandle == curplug->dlhandle)
|
||||
{
|
||||
einfo (_("%P: %s: duplicated plugin\n"), plugin);
|
||||
free (newplug);
|
||||
return;
|
||||
}
|
||||
curplug = curplug->next;
|
||||
}
|
||||
|
||||
/* Chain on end, so when we run list it is in command-line order. */
|
||||
*plugins_tail_chain_ptr = newplug;
|
||||
plugins_tail_chain_ptr = &newplug->next;
|
||||
|
@ -198,6 +198,9 @@ set lto_link_tests [list \
|
||||
[list "Build libpr20267b.a" \
|
||||
"$plug_opt" "-flto $lto_no_fat" \
|
||||
{pr20267b.c} {} "libpr20267b.a"] \
|
||||
[list "Build pr20321" \
|
||||
"-Wl,-plugin,$plug_so" "-flto" \
|
||||
{pr20321.c} {} "pr20321" "c" ".*: duplicated plugin"] \
|
||||
]
|
||||
|
||||
if { [at_least_gcc_version 4 7] } {
|
||||
|
4
ld/testsuite/ld-plugin/pr20321.c
Normal file
4
ld/testsuite/ld-plugin/pr20321.c
Normal file
@ -0,0 +1,4 @@
|
||||
int main(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user