X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Felf32-arc.c;h=06ee60ac409760286d98b6b9febf32260a9866f2;hb=0381901e629115f5f0d92a27fe74b1814f6f389a;hp=91537efd8410dde9bc51b0e9071323f4c7a93026;hpb=fd3619828e94a24a92cddec42cbc0ab33352eeb4;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c index 91537efd84..06ee60ac40 100644 --- a/bfd/elf32-arc.c +++ b/bfd/elf32-arc.c @@ -1,5 +1,5 @@ /* ARC-specific support for 32-bit ELF - Copyright (C) 1994-2019 Free Software Foundation, Inc. + Copyright (C) 1994-2020 Free Software Foundation, Inc. Contributed by Cupertino Miranda (cmiranda@synopsys.com). This file is part of BFD, the Binary File Descriptor library. @@ -184,9 +184,6 @@ struct elf_arc_link_hash_entry { struct elf_link_hash_entry root; - /* Track dynamic relocs copied for this symbol. */ - struct elf_dyn_relocs *dyn_relocs; - struct got_entry *got_ents; }; @@ -340,7 +337,6 @@ elf_arc_link_hash_newfunc (struct bfd_hash_entry *entry, table, string)); if (ret != NULL) { - ret->dyn_relocs = NULL; ret->got_ents = NULL; } @@ -1255,11 +1251,11 @@ arc_special_overflow_checks (const struct arc_relocation_data reloc_data, else \ ARC_DEBUG ("symbol_section->vma = NULL\n"); \ if (input_section->output_section != NULL) \ - ARC_DEBUG ("symbol_section->vma = %#lx\n", \ + ARC_DEBUG ("input_section->vma = %#lx\n", \ input_section->output_section->vma \ + input_section->output_offset); \ else \ - ARC_DEBUG ("symbol_section->vma = NULL\n"); \ + ARC_DEBUG ("input_section->vma = NULL\n"); \ ARC_DEBUG ("PCL = %#lx\n", P); \ ARC_DEBUG ("P = %#lx\n", P); \ ARC_DEBUG ("G = %#lx\n", G); \ @@ -1786,6 +1782,7 @@ elf_arc_relocate_section (bfd * output_bfd, case R_ARC_PC32: case R_ARC_32_PCREL: if (bfd_link_pic (info) + && (input_section->flags & SEC_ALLOC) != 0 && (!IS_ARC_PCREL_TYPE (r_type) || (h != NULL && h->dynindx != -1 @@ -3128,21 +3125,17 @@ arc_elf_relax_section (bfd *abfd, asection *sec, elf_section_data (sec)->this_hdr.contents = contents; } - if (internal_relocs != NULL - && elf_section_data (sec)->relocs != internal_relocs) + if (elf_section_data (sec)->relocs != internal_relocs) free (internal_relocs); return TRUE; error_return: - if (isymbuf != NULL - && symtab_hdr->contents != (unsigned char *) isymbuf) + if (symtab_hdr->contents != (unsigned char *) isymbuf) free (isymbuf); - if (contents != NULL - && elf_section_data (sec)->this_hdr.contents != contents) + if (elf_section_data (sec)->this_hdr.contents != contents) free (contents); - if (internal_relocs != NULL - && elf_section_data (sec)->relocs != internal_relocs) + if (elf_section_data (sec)->relocs != internal_relocs) free (internal_relocs); return FALSE;