diff options
author | Alan Modra <amodra@gmail.com> | 2014-08-12 10:31:41 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2014-08-12 10:31:41 +0930 |
commit | 61f41c3c243bbcc0ab2e5adb3157ce00dc11fc27 (patch) | |
tree | 263819710f1f69db79253b1253e037843e69531e | |
parent | d769e349bc2c28261d4b2391b58eb7dc3f452e99 (diff) | |
download | binutils-61f41c3c243bbcc0ab2e5adb3157ce00dc11fc27.zip binutils-61f41c3c243bbcc0ab2e5adb3157ce00dc11fc27.tar.gz binutils-61f41c3c243bbcc0ab2e5adb3157ce00dc11fc27.tar.bz2 |
Fix non-plugin warning symbol handling
PR ld/16746
include/
* bfdlink.h (struct bfd_link_info): Add lto_plugin_active.
bfd/
* linker.c (_bfd_generic_link_add_one_symbol <WARN>): Handle
!lto_plugin_active.
ld/
* plugin.c (plugin_load_plugins): Set link_info.lto_plugin_active.
-rw-r--r-- | bfd/linker.c | 4 | ||||
-rw-r--r-- | include/bfdlink.h | 3 | ||||
-rw-r--r-- | ld/plugin.c | 1 |
3 files changed, 7 insertions, 1 deletions
diff --git a/bfd/linker.c b/bfd/linker.c index d4b053c..1a5ecef 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -1806,7 +1806,9 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info, case WARN: /* Warn if this symbol has been referenced already from non-IR, otherwise add a warning. */ - if (h->non_ir_ref) + if ((!info->lto_plugin_active + && (h->u.undef.next != NULL || info->hash->undefs_tail == h)) + || h->non_ir_ref) { if (! (*info->callbacks->warning) (info, string, h->root.string, hash_entry_bfd (h), NULL, 0)) diff --git a/include/bfdlink.h b/include/bfdlink.h index fc14a9f..58dba2a 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -292,6 +292,9 @@ struct bfd_link_info callback. */ unsigned int notice_all: 1; + /* TRUE if the LTO plugin is active. */ + unsigned int lto_plugin_active: 1; + /* TRUE if we are loading LTO outputs. */ unsigned int loading_lto_outputs: 1; diff --git a/ld/plugin.c b/ld/plugin.c index f10c273..8d6ae05 100644 --- a/ld/plugin.c +++ b/ld/plugin.c @@ -841,6 +841,7 @@ plugin_load_plugins (void) plugin_callbacks = *orig_callbacks; plugin_callbacks.notice = &plugin_notice; link_info.notice_all = TRUE; + link_info.lto_plugin_active = TRUE; link_info.callbacks = &plugin_callbacks; } |