diff options
author | Alan Modra <amodra@gmail.com> | 2011-04-20 00:22:08 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2011-04-20 00:22:08 +0000 |
commit | 02d002477b60cff9f0f5abbd5fc27e2889b13421 (patch) | |
tree | ddb5245de932bf699df9cd2dda541ad9c96eef26 /bfd/linker.c | |
parent | 24f58f47de96a6c061fc6eeb37a699c03dde970a (diff) | |
download | fsf-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.c | 10 |
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; |