aboutsummaryrefslogtreecommitdiff
path: root/bfd/linker.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2011-04-20 00:22:08 +0000
committerAlan Modra <amodra@gmail.com>2011-04-20 00:22:08 +0000
commit02d002477b60cff9f0f5abbd5fc27e2889b13421 (patch)
treeddb5245de932bf699df9cd2dda541ad9c96eef26 /bfd/linker.c
parent24f58f47de96a6c061fc6eeb37a699c03dde970a (diff)
downloadfsf-binutils-gdb-02d002477b60cff9f0f5abbd5fc27e2889b13421.zip
fsf-binutils-gdb-02d002477b60cff9f0f5abbd5fc27e2889b13421.tar.gz
fsf-binutils-gdb-02d002477b60cff9f0f5abbd5fc27e2889b13421.tar.bz2
PR ld/12365
bfd/ * elfcode.h (elf_slurp_symbol_table): Put common plugin IR symbols in their own common section. * elflink.c (elf_link_add_object_symbols): Likewise. * linker.c (generic_link_check_archive_element): Don't lose flags if common section is pre-existing. (_bfd_generic_link_add_one_symbol): Likewise. ld/ * ldfile.c (ldfile_try_open_bfd): Move code creating and switching to plugin IR BFD.. * ldmain.c (add_archive_element): ..and similar code here.. * plugin.c (plugin_maybe_claim): ..to here. New function. (plugin_call_claim_file): Make static. (asymbol_from_plugin_symbol): Set ELF st_shndx for common syms. (plugin_multiple_common): New function. (plugin_call_all_symbols_read): Hook in plugin_multiple_common. * plugin.h (plugin_call_claim_file): Don't declare. (plugin_maybe_claim): Declare.
Diffstat (limited to 'bfd/linker.c')
-rw-r--r--bfd/linker.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/bfd/linker.c b/bfd/linker.c
index 8c577f2..9f2bac3 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -1296,7 +1296,7 @@ generic_link_check_archive_element (bfd *abfd,
else
h->u.c.p->section = bfd_make_section_old_way (symbfd,
p->section->name);
- h->u.c.p->section->flags = SEC_ALLOC;
+ h->u.c.p->section->flags |= SEC_ALLOC;
}
else
{
@@ -1756,13 +1756,13 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
if (section == bfd_com_section_ptr)
{
h->u.c.p->section = bfd_make_section_old_way (abfd, "COMMON");
- h->u.c.p->section->flags = SEC_ALLOC;
+ h->u.c.p->section->flags |= SEC_ALLOC;
}
else if (section->owner != abfd)
{
h->u.c.p->section = bfd_make_section_old_way (abfd,
section->name);
- h->u.c.p->section->flags = SEC_ALLOC;
+ h->u.c.p->section->flags |= SEC_ALLOC;
}
else
h->u.c.p->section = section;
@@ -1803,13 +1803,13 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
{
h->u.c.p->section
= bfd_make_section_old_way (abfd, "COMMON");
- h->u.c.p->section->flags = SEC_ALLOC;
+ h->u.c.p->section->flags |= SEC_ALLOC;
}
else if (section->owner != abfd)
{
h->u.c.p->section
= bfd_make_section_old_way (abfd, section->name);
- h->u.c.p->section->flags = SEC_ALLOC;
+ h->u.c.p->section->flags |= SEC_ALLOC;
}
else
h->u.c.p->section = section;