diff options
author | Alan Modra <amodra@bigpond.net.au> | 2011-04-20 00:22:07 +0000 |
---|---|---|
committer | Alan Modra <amodra@bigpond.net.au> | 2011-04-20 00:22:07 +0000 |
commit | 33240c08520befe8483f59d93a0629f282617798 (patch) | |
tree | 2c73a20c0d4d7c785c8a0560f9a9703b0038d906 /bfd/linker.c | |
parent | 03b9ecd2c9ea9ed1fd5dbd6a1af9d55719b00132 (diff) | |
download | binutils-redhat-33240c08520befe8483f59d93a0629f282617798.tar.gz |
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 8c577f2722..9f2bac3c44 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; |