summaryrefslogtreecommitdiffstats
path: root/binutils-2.25/bfd/elf32-metag.c
diff options
context:
space:
mode:
Diffstat (limited to 'binutils-2.25/bfd/elf32-metag.c')
-rw-r--r--binutils-2.25/bfd/elf32-metag.c50
1 files changed, 27 insertions, 23 deletions
diff --git a/binutils-2.25/bfd/elf32-metag.c b/binutils-2.25/bfd/elf32-metag.c
index 88518453..47ca5deb 100644
--- a/binutils-2.25/bfd/elf32-metag.c
+++ b/binutils-2.25/bfd/elf32-metag.c
@@ -1,5 +1,5 @@
/* Meta support for 32-bit ELF
- Copyright (C) 2013 Free Software Foundation, Inc.
+ Copyright (C) 2013-2014 Free Software Foundation, Inc.
Contributed by Imagination Technologies Ltd.
This file is part of BFD, the Binary File Descriptor library.
@@ -1017,6 +1017,18 @@ metag_link_hash_newfunc (struct bfd_hash_entry *entry,
return entry;
}
+/* Free the derived linker hash table. */
+
+static void
+elf_metag_link_hash_table_free (bfd *obfd)
+{
+ struct elf_metag_link_hash_table *htab
+ = (struct elf_metag_link_hash_table *) obfd->link.hash;
+
+ bfd_hash_table_free (&htab->bstab);
+ _bfd_elf_link_hash_table_free (obfd);
+}
+
/* Create the derived linker hash table. The Meta ELF port uses the derived
hash table to keep information specific to the Meta ELF linker (without
using static variables). */
@@ -1043,23 +1055,15 @@ elf_metag_link_hash_table_create (bfd *abfd)
/* Init the stub hash table too. */
if (!bfd_hash_table_init (&htab->bstab, stub_hash_newfunc,
sizeof (struct elf_metag_stub_hash_entry)))
- return NULL;
+ {
+ _bfd_elf_link_hash_table_free (abfd);
+ return NULL;
+ }
+ htab->etab.root.hash_table_free = elf_metag_link_hash_table_free;
return &htab->etab.root;
}
-/* Free the derived linker hash table. */
-
-static void
-elf_metag_link_hash_table_free (struct bfd_link_hash_table *btab)
-{
- struct elf_metag_link_hash_table *htab
- = (struct elf_metag_link_hash_table *) btab;
-
- bfd_hash_table_free (&htab->bstab);
- _bfd_elf_link_hash_table_free (btab);
-}
-
/* Section name for stubs is the associated section name plus this
string. */
#define STUB_SUFFIX ".stub"
@@ -1536,12 +1540,12 @@ elf_metag_relocate_section (bfd *output_bfd,
else
{
struct elf_link_hash_entry *eh;
- bfd_boolean unresolved_reloc, warned;
+ bfd_boolean unresolved_reloc, warned, ignored;
RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
r_symndx, symtab_hdr, eh_syms,
eh, sec, relocation,
- unresolved_reloc, warned);
+ unresolved_reloc, warned, ignored);
name = eh->root.root.string;
hh = (struct elf_metag_link_hash_entry *) eh;
@@ -2847,7 +2851,7 @@ elf_metag_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
/* Set up .got offsets for local syms, and space for local dynamic
relocs. */
- for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
+ for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
{
bfd_signed_vma *local_got;
bfd_signed_vma *end_local_got;
@@ -3249,10 +3253,11 @@ elf_metag_finish_dynamic_symbol (bfd *output_bfd,
/* Set the Meta ELF ABI version. */
static void
-elf_metag_post_process_headers (bfd * abfd, struct bfd_link_info * link_info ATTRIBUTE_UNUSED)
+elf_metag_post_process_headers (bfd * abfd, struct bfd_link_info * link_info)
{
Elf_Internal_Ehdr * i_ehdrp; /* ELF file header, internal form. */
+ _bfd_elf_post_process_headers (abfd, link_info);
i_ehdrp = elf_elfheader (abfd);
i_ehdrp->e_ident[EI_ABIVERSION] = METAG_ELF_ABI_VERSION;
}
@@ -3724,7 +3729,7 @@ elf_metag_setup_section_lists (bfd *output_bfd, struct bfd_link_info *info)
/* Count the number of input BFDs and find the top input section id. */
for (input_bfd = info->input_bfds, bfd_count = 0, top_id = 0;
input_bfd != NULL;
- input_bfd = input_bfd->link_next)
+ input_bfd = input_bfd->link.next)
{
bfd_count += 1;
for (section = input_bfd->sections;
@@ -3906,7 +3911,7 @@ get_local_syms (bfd *output_bfd ATTRIBUTE_UNUSED, bfd *input_bfd,
/* Walk over all the input BFDs, swapping in local symbols. */
for (bfd_indx = 0;
input_bfd != NULL;
- input_bfd = input_bfd->link_next, bfd_indx++)
+ input_bfd = input_bfd->link.next, bfd_indx++)
{
Elf_Internal_Shdr *symtab_hdr;
@@ -4003,7 +4008,7 @@ elf_metag_size_stubs(bfd *output_bfd, bfd *stub_bfd,
for (input_bfd = info->input_bfds, bfd_indx = 0;
input_bfd != NULL;
- input_bfd = input_bfd->link_next, bfd_indx++)
+ input_bfd = input_bfd->link.next, bfd_indx++)
{
Elf_Internal_Shdr *symtab_hdr;
asection *section;
@@ -4283,7 +4288,7 @@ elf_metag_plt_sym_val (bfd_vma i, const asection *plt,
#define ELF_MAXPAGESIZE 0x4000
#define ELF_COMMONPAGESIZE 0x1000
-#define TARGET_LITTLE_SYM bfd_elf32_metag_vec
+#define TARGET_LITTLE_SYM metag_elf32_vec
#define TARGET_LITTLE_NAME "elf32-metag"
#define elf_symbol_leading_char '_'
@@ -4294,7 +4299,6 @@ elf_metag_plt_sym_val (bfd_vma i, const asection *plt,
#define bfd_elf32_bfd_is_local_label_name elf_metag_is_local_label_name
#define bfd_elf32_bfd_link_hash_table_create \
elf_metag_link_hash_table_create
-#define bfd_elf32_bfd_link_hash_table_free elf_metag_link_hash_table_free
#define elf_backend_relocate_section elf_metag_relocate_section
#define elf_backend_gc_mark_hook elf_metag_gc_mark_hook
#define elf_backend_gc_sweep_hook elf_metag_gc_sweep_hook