X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Felf32-h8300.c;h=388d2205c58dee7ec081f835127553e87c471ffa;hb=f6fbab7d1b396b1ee576937b53bb0858c8f895d5;hp=92c0a165b81526203a5f0b911d033f727718d236;hpb=84477db9a380a80437de9a77b5200e84fc759bad;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf32-h8300.c b/bfd/elf32-h8300.c index 92c0a165b8..388d2205c5 100644 --- a/bfd/elf32-h8300.c +++ b/bfd/elf32-h8300.c @@ -1,6 +1,6 @@ /* BFD back-end for Renesas H8/300 ELF binaries. Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010, 2012 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -52,12 +52,13 @@ static bfd_boolean elf32_h8_relocate_section bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **); static bfd_reloc_status_type special - (bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); /* This does not include any relocation information, but should be good enough for GDB or objdump to read the file. */ -static reloc_howto_type h8_elf_howto_table[] = { +static reloc_howto_type h8_elf_howto_table[] = +{ #define R_H8_NONE_X 0 HOWTO (R_H8_NONE, /* type */ 0, /* rightshift */ @@ -304,7 +305,7 @@ static bfd_reloc_status_type special (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry ATTRIBUTE_UNUSED, asymbol *symbol ATTRIBUTE_UNUSED, - PTR data ATTRIBUTE_UNUSED, + void * data ATTRIBUTE_UNUSED, asection *input_section ATTRIBUTE_UNUSED, bfd *output_bfd, char **error_message ATTRIBUTE_UNUSED) @@ -460,16 +461,9 @@ elf32_h8_relocate_section (bfd *output_bfd, struct bfd_link_info *info, unresolved_reloc, warned); } - if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + if (sec != NULL && discarded_section (sec)) + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, 1, relend, howto, 0, contents); if (info->relocatable) continue; @@ -706,7 +700,7 @@ elf32_h8_relax_section (bfd *abfd, asection *sec, /* Get a copy of the native relocations. */ internal_relocs = (_bfd_elf_link_read_relocs - (abfd, sec, (PTR) NULL, (Elf_Internal_Rela *) NULL, + (abfd, sec, NULL, (Elf_Internal_Rela *) NULL, link_info->keep_memory)); if (internal_relocs == NULL) goto error_return; @@ -724,10 +718,8 @@ elf32_h8_relax_section (bfd *abfd, asection *sec, { arelent bfd_reloc; - reloc_howto_type *h; elf32_h8_info_to_howto (abfd, &bfd_reloc, irel); - h = bfd_reloc.howto; } /* Keep track of the previous reloc so that we can delete some long jumps created by the compiler. */ @@ -1386,7 +1378,6 @@ elf32_h8_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count) unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel, *irelend; - Elf_Internal_Rela *irelalign; Elf_Internal_Sym *isym; Elf_Internal_Sym *isymend; bfd_vma toaddr; @@ -1398,10 +1389,6 @@ elf32_h8_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count) contents = elf_section_data (sec)->this_hdr.contents; - /* The deletion must stop at the next ALIGN reloc for an aligment - power larger than the number of bytes we are deleting. */ - - irelalign = NULL; toaddr = sec->size; irel = elf_section_data (sec)->relocs; @@ -1537,7 +1524,7 @@ elf32_h8_get_relocated_section_contents (bfd *output_bfd, bfd_size_type amt; internal_relocs = (_bfd_elf_link_read_relocs - (input_bfd, input_section, (PTR) NULL, + (input_bfd, input_section, NULL, (Elf_Internal_Rela *) NULL, FALSE)); if (internal_relocs == NULL) goto error_return;