forked from Imagelibrary/binutils-gdb
PR ld/12762
bfd/ * elflink.c (_bfd_elf_section_already_linked): Return matched status. Remove COFF comdat section handling. * linker.c (_bfd_generic_section_already_linked): Return matched status. Don't set SEC_GROUP in l_flags for plugin entries. (bfd_section_already_linked): Update prototype. * targets.c (_section_already_linked): Likewise. * elf-bfd.h (_bfd_elf_section_already_linked): Likewise. * libbfd-in.h (_bfd_generic_section_already_linked): Likewise. (_bfd_nolink_section_already_linked): Update. * libbfd.h: Regenerate. * bfd-in2.h: Regenerate. ld/ * plugin.c (add_symbols): Exclude comdat_key symbols from symbol table if already seen.
This commit is contained in:
12
ld/plugin.c
12
ld/plugin.c
@@ -380,10 +380,11 @@ add_symbols (void *handle, int nsyms, const struct ld_plugin_symbol *syms)
|
||||
{
|
||||
asymbol **symptrs;
|
||||
bfd *abfd = handle;
|
||||
int n;
|
||||
int n, k;
|
||||
|
||||
ASSERT (called_plugin);
|
||||
symptrs = xmalloc (nsyms * sizeof *symptrs);
|
||||
for (n = 0; n < nsyms; n++)
|
||||
for (n = 0, k = 0; n < nsyms; n++)
|
||||
{
|
||||
enum ld_plugin_status rv;
|
||||
asymbol *bfdsym;
|
||||
@@ -393,15 +394,16 @@ add_symbols (void *handle, int nsyms, const struct ld_plugin_symbol *syms)
|
||||
struct already_linked linked;
|
||||
linked.comdat_key = xstrdup (syms[n].comdat_key);
|
||||
linked.u.abfd = abfd;
|
||||
bfd_section_already_linked (abfd, &linked, &link_info);
|
||||
if (bfd_section_already_linked (abfd, &linked, &link_info))
|
||||
continue;
|
||||
}
|
||||
bfdsym = bfd_make_empty_symbol (abfd);
|
||||
symptrs[n] = bfdsym;
|
||||
symptrs[k++] = bfdsym;
|
||||
rv = asymbol_from_plugin_symbol (abfd, bfdsym, syms + n);
|
||||
if (rv != LDPS_OK)
|
||||
return rv;
|
||||
}
|
||||
bfd_set_symtab (abfd, symptrs, nsyms);
|
||||
bfd_set_symtab (abfd, symptrs, k);
|
||||
return LDPS_OK;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user