12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
- index fba58cb..d99da93 100644
- --- a/bfd/elf32-arc.c
- +++ b/bfd/elf32-arc.c
- @@ -70,13 +70,7 @@ name_for_global_symbol (struct elf_link_hash_entry *h)
- struct dynamic_sections
- {
- bfd_boolean initialized;
- - asection * sgot;
- - asection * srelgot;
- - asection * sgotplt;
- - asection * srelgotplt;
- asection * sdyn;
- - asection * splt;
- - asection * srelplt;
- };
-
- enum dyn_section_types
- @@ -1578,13 +1572,7 @@ arc_create_dynamic_sections (bfd * abfd, struct bfd_link_info *info)
- struct dynamic_sections ds =
- {
- .initialized = FALSE,
- - .sgot = NULL,
- - .srelgot = NULL,
- - .sgotplt = NULL,
- - .srelgotplt = NULL,
- .sdyn = NULL,
- - .splt = NULL,
- - .srelplt = NULL
- };
-
- htab = elf_hash_table (info);
- @@ -1592,7 +1580,7 @@ arc_create_dynamic_sections (bfd * abfd, struct bfd_link_info *info)
-
- /* Create dynamic sections for relocatable executables so that we
- can copy relocations. */
- - if (! htab->dynamic_sections_created && bfd_link_pic (info))
- + if (! htab->dynamic_sections_created)
- {
- if (! _bfd_elf_link_create_dynamic_sections (abfd, info))
- BFD_ASSERT (0);
- @@ -1600,18 +1588,6 @@ arc_create_dynamic_sections (bfd * abfd, struct bfd_link_info *info)
-
- dynobj = (elf_hash_table (info))->dynobj;
-
- - if (dynobj)
- - {
- - ds.sgot = htab->sgot;
- - ds.srelgot = htab->srelgot;
- -
- - ds.sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
- - ds.srelgotplt = ds.srelplt;
- -
- - ds.splt = bfd_get_section_by_name (dynobj, ".plt");
- - ds.srelplt = bfd_get_section_by_name (dynobj, ".rela.plt");
- - }
- -
- if (htab->dynamic_sections_created)
- {
- ds.sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
- @@ -1634,10 +1610,20 @@ elf_arc_check_relocs (bfd * abfd,
- const Elf_Internal_Rela * rel_end;
- bfd * dynobj;
- asection * sreloc = NULL;
- + struct elf_link_hash_table * htab = elf_hash_table (info);
-
- if (bfd_link_relocatable (info))
- return TRUE;
-
- + if (htab->dynobj == NULL)
- + htab->dynobj = abfd;
- +
- + if (! htab->dynamic_sections_created)
- + {
- + if (! _bfd_elf_link_create_dynamic_sections (abfd, info))
- + return FALSE;
- + }
- +
- dynobj = (elf_hash_table (info))->dynobj;
- symtab_hdr = &((elf_tdata (abfd))->symtab_hdr);
- sym_hashes = elf_sym_hashes (abfd);
- @@ -1659,15 +1645,6 @@ elf_arc_check_relocs (bfd * abfd,
- }
- howto = arc_elf_howto (r_type);
-
- - if (dynobj == NULL
- - && (is_reloc_for_GOT (howto) == TRUE
- - || is_reloc_for_TLS (howto) == TRUE))
- - {
- - dynobj = elf_hash_table (info)->dynobj = abfd;
- - if (! _bfd_elf_create_got_section (abfd, info))
- - return FALSE;
- - }
- -
- /* Load symbol information. */
- r_symndx = ELF32_R_SYM (rel->r_info);
- if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */
|