From b794fc1d1c3a3dfb65b74a36fe96c474fee65000 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 28 Jul 2014 22:18:25 +0930 Subject: [PATCH] Warn for ar/nm/ranlib/ld on lto objects without plugin PR 13227 bfd/ * archive.c (_bfd_compute_and_write_armap): Warn on adding __gnu_lto_slim to armap. * linker.c (_bfd_generic_link_add_one_symbol): Warn on adding __gnu_lto_slim to linker hash table. binutils/ * nm.c (filter_symbols): Warn on __gnu_lto_slim. --- bfd/ChangeLog | 8 ++++++++ bfd/archive.c | 4 ++++ bfd/linker.c | 8 +++++++- binutils/ChangeLog | 5 +++++ binutils/nm.c | 4 ++++ 5 files changed, 28 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f18776175c..944481242c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2014-07-28 Alan Modra + + PR 13227 + * archive.c (_bfd_compute_and_write_armap): Warn on adding + __gnu_lto_slim to armap. + * linker.c (_bfd_generic_link_add_one_symbol): Warn on adding + __gnu_lto_slim to linker hash table. + 2014-07-27 Anthony Green * config.bfd: Add moxie-*-moxiebox*. diff --git a/bfd/archive.c b/bfd/archive.c index 1c3ad5240f..40a3395ba0 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -2357,6 +2357,10 @@ _bfd_compute_and_write_armap (bfd *arch, unsigned int elength) map = new_map; } + if (strcmp (syms[src_count]->name, "__gnu_lto_slim") == 0) + (*_bfd_error_handler) + (_("%s: plugin needed to handle lto object"), + bfd_get_filename (current)); namelen = strlen (syms[src_count]->name); amt = sizeof (char *); map[orl_count].name = (char **) bfd_alloc (arch, amt); diff --git a/bfd/linker.c b/bfd/linker.c index f6ae4e2c62..5ad7988f42 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -1642,7 +1642,13 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info, else if ((flags & BSF_WEAK) != 0) row = DEFW_ROW; else if (bfd_is_com_section (section)) - row = COMMON_ROW; + { + row = COMMON_ROW; + if (strcmp (name, "__gnu_lto_slim") == 0) + (*_bfd_error_handler) + (_("%s: plugin needed to handle lto object"), + bfd_get_filename (abfd)); + } else row = DEF_ROW; diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 58d698407a..cf01c909ab 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2014-07-28 Alan Modra + + PR 13227 + * nm.c (filter_symbols): Warn on __gnu_lto_slim. + 2014-07-07 Nick Clifton * readelf.c (get_symbol_type): Revert accidental change to diff --git a/binutils/nm.c b/binutils/nm.c index 2a44a84600..ecd147e040 100644 --- a/binutils/nm.c +++ b/binutils/nm.c @@ -434,6 +434,10 @@ filter_symbols (bfd *abfd, bfd_boolean is_dynamic, void *minisyms, if (sym == NULL) bfd_fatal (bfd_get_filename (abfd)); + if (strcmp (sym->name, "__gnu_lto_slim") == 0) + non_fatal (_("%s: plugin needed to handle lto object"), + bfd_get_filename (abfd)); + if (undefined_only) keep = bfd_is_und_section (sym->section); else if (external_only)