X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Felf-m10300.c;h=f151c21d278723de1e0e46d6d7e7b4e2b9d799c2;hb=c7e2358a8849d7540212543e1a2acbac648cb973;hp=4a9d4b051e0df36505cff1b86747444d82349091;hpb=91d6fa6a035cc7d0b7be5c99c194a64cb80924b0;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c index 4a9d4b051e..f151c21d27 100644 --- a/bfd/elf-m10300.c +++ b/bfd/elf-m10300.c @@ -1,6 +1,6 @@ /* Matsushita 10300 specific support for 32-bit ELF Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -98,7 +98,8 @@ struct elf32_mn10300_link_hash_table /* Get the MN10300 ELF linker hash table from a link_info structure. */ #define elf32_mn10300_hash_table(p) \ - ((struct elf32_mn10300_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == MN10300_ELF_DATA ? ((struct elf32_mn10300_link_hash_table *) ((p)->hash)) : NULL) #define elf32_mn10300_link_hash_traverse(table, func, info) \ (elf_link_hash_traverse \ @@ -986,14 +987,11 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto, unsigned long r_type = howto->type; bfd_byte * hit_data = contents + offset; bfd * dynobj; - bfd_vma * local_got_offsets; asection * sgot; asection * splt; asection * sreloc; dynobj = elf_hash_table (info)->dynobj; - local_got_offsets = elf_local_got_offsets (input_bfd); - sgot = NULL; splt = NULL; sreloc = NULL; @@ -2076,6 +2074,8 @@ mn10300_elf_relax_section (bfd *abfd, /* We need a pointer to the mn10300 specific hash table. */ hash_table = elf32_mn10300_hash_table (link_info); + if (hash_table == NULL) + return FALSE; /* Initialize fields in each hash table entry the first time through. */ if ((hash_table->flags & MN10300_HASH_ENTRIES_INITIALIZED) == 0) @@ -2106,7 +2106,6 @@ mn10300_elf_relax_section (bfd *abfd, section = section->next) { struct elf32_mn10300_link_hash_entry *hash; - Elf_Internal_Sym *sym; asection *sym_sec = NULL; const char *sym_name; char *new_name; @@ -2160,7 +2159,6 @@ mn10300_elf_relax_section (bfd *abfd, /* We need the name and hash table entry of the target symbol! */ hash = NULL; - sym = NULL; sym_sec = NULL; if (r_index < symtab_hdr->sh_info) @@ -3977,7 +3975,8 @@ elf32_mn10300_link_hash_table_create (bfd *abfd) if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, elf32_mn10300_link_hash_newfunc, - sizeof (struct elf32_mn10300_link_hash_entry))) + sizeof (struct elf32_mn10300_link_hash_entry), + MN10300_ELF_DATA)) { free (ret); return NULL; @@ -3994,7 +3993,8 @@ elf32_mn10300_link_hash_table_create (bfd *abfd) if (!_bfd_elf_link_hash_table_init (&ret->static_hash_table->root, abfd, elf32_mn10300_link_hash_newfunc, - sizeof (struct elf32_mn10300_link_hash_entry))) + sizeof (struct elf32_mn10300_link_hash_entry), + MN10300_ELF_DATA)) { free (ret->static_hash_table); free (ret);