From: Alan Modra Date: Wed, 25 Oct 2017 05:02:52 +0000 (+1030) Subject: Allow for __gnu_lto_slim prefixed with extra "_" X-Git-Tag: users/ARM/embedded-binutils-master-2017q4~458 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;ds=sidebyside;h=e601d38b7cc222345d4128f45db18529b9fb477b;p=external%2Fbinutils.git Allow for __gnu_lto_slim prefixed with extra "_" Some targets prefix global symbols with "_". bfd/ * archive.c (_bfd_compute_and_write_armap): Match "__gnu_lto_slim" optionally prefixed with "_". * linker.c (_bfd_generic_link_add_one_symbol): Likewise. binutils/ * nm.c (filter_symbols): Match "__gnu_lto_slim" optionally prefixed with "_". gold/ * symtab.cc (Symbol_table::add_from_relobj): Match "__gnu_lto_slim" optionally prefixed with "_". ld/ * testsuite/ld-plugin/lto-3r.d: Match "__gnu_lto_v" optionally prefixed with "_". * testsuite/ld-plugin/lto-5r.d: Likewise. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 6f2f5e3..ca780aa 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2017-10-25 Alan Modra + + * archive.c (_bfd_compute_and_write_armap): Match "__gnu_lto_slim" + optionally prefixed with "_". + * linker.c (_bfd_generic_link_add_one_symbol): Likewise. + 2017-10-24 Andrew Waterman * elfnn-riscv.c (_bfd_riscv_relax_lui): Don't relax to c.lui diff --git a/bfd/archive.c b/bfd/archive.c index 1e87685..0b98df3 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -2411,7 +2411,11 @@ _bfd_compute_and_write_armap (bfd *arch, unsigned int elength) map = new_map; } - if (strcmp (syms[src_count]->name, "__gnu_lto_slim") == 0) + if (syms[src_count]->name[0] == '_' + && syms[src_count]->name[1] == '_' + && strcmp (syms[src_count]->name + + (syms[src_count]->name[2] == '_'), + "__gnu_lto_slim") == 0) _bfd_error_handler (_("%B: plugin needed to handle lto object"), current); diff --git a/bfd/linker.c b/bfd/linker.c index 72d5705..a96c6ed 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -1403,7 +1403,9 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info, { row = COMMON_ROW; if (!bfd_link_relocatable (info) - && strcmp (name, "__gnu_lto_slim") == 0) + && name[0] == '_' + && name[1] == '_' + && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0) _bfd_error_handler (_("%B: plugin needed to handle lto object"), abfd); } diff --git a/binutils/ChangeLog b/binutils/ChangeLog index ee0b81e..ad9d33b 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2017-10-25 Alan Modra + + * nm.c (filter_symbols): Match "__gnu_lto_slim" optionally prefixed + with "_". + 2017-10-18 Eric Botcazou * MAINTAINERS: Add myself as Visium maintainer. diff --git a/binutils/nm.c b/binutils/nm.c index 3328812..5b421785 100644 --- a/binutils/nm.c +++ b/binutils/nm.c @@ -478,7 +478,9 @@ 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) + if (sym->name[0] == '_' + && sym->name[1] == '_' + && strcmp (sym->name + (sym->name[2] == '_'), "__gnu_lto_slim") == 0) non_fatal (_("%s: plugin needed to handle lto object"), bfd_get_filename (abfd)); diff --git a/gold/ChangeLog b/gold/ChangeLog index 2184e9a..4ab533d 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2017-10-25 Alan Modra + + * symtab.cc (Symbol_table::add_from_relobj): Match "__gnu_lto_slim" + optionally prefixed with "_". + 2017-10-20 Sriraman Tallam * options.h (-z,text_unlikely_segment): New option. diff --git a/gold/symtab.cc b/gold/symtab.cc index 1555de6..7ebcd6b 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -1185,7 +1185,9 @@ Symbol_table::add_from_relobj( const char* name = sym_names + st_name; if (!parameters->options().relocatable() - && strcmp (name, "__gnu_lto_slim") == 0) + && name[0] == '_' + && name[1] == '_' + && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0) gold_info(_("%s: plugin needed to handle lto object"), relobj->name().c_str()); diff --git a/ld/ChangeLog b/ld/ChangeLog index 368a496..27024b6 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2017-10-25 Alan Modra + + * testsuite/ld-plugin/lto-3r.d: Match "__gnu_lto_v" optionally + prefixed with "_". + * testsuite/ld-plugin/lto-5r.d: Likewise. + 2017-10-25 Hans-Peter Nilsson * testsuite/ld-riscv-elf/ld-riscv-elf.exp: Fix typo for istarget. diff --git a/ld/testsuite/ld-plugin/lto-3r.d b/ld/testsuite/ld-plugin/lto-3r.d index 1d1befe..3726718 100644 --- a/ld/testsuite/ld-plugin/lto-3r.d +++ b/ld/testsuite/ld-plugin/lto-3r.d @@ -3,5 +3,5 @@ #nm: -p #... -[0-9a-f]+ C __gnu_lto_v.* +[0-9a-f]+ C _?__gnu_lto_v.* #pass diff --git a/ld/testsuite/ld-plugin/lto-5r.d b/ld/testsuite/ld-plugin/lto-5r.d index 43e9a5c..ad1da70 100644 --- a/ld/testsuite/ld-plugin/lto-5r.d +++ b/ld/testsuite/ld-plugin/lto-5r.d @@ -3,5 +3,5 @@ #nm: -p #... -[0-9a-f]+ C __gnu_lto_v.* +[0-9a-f]+ C _?__gnu_lto_v.* #pass