| Index: bfd/elf32-rx.c
|
| diff --git a/bfd/elf32-rx.c b/bfd/elf32-rx.c
|
| index 0ceed858a4e0e9928f17bc23a07f02d0712ac49a..771867f631887a78a1c800b5474f6000a2479712 100644
|
| --- a/bfd/elf32-rx.c
|
| +++ b/bfd/elf32-rx.c
|
| @@ -1,5 +1,5 @@
|
| /* Renesas RX specific support for 32-bit ELF.
|
| - Copyright (C) 2008, 2009, 2010, 2011
|
| + Copyright (C) 2008, 2009, 2010, 2011, 2012
|
| Free Software Foundation, Inc.
|
|
|
| This file is part of BFD, the Binary File Descriptor library.
|
| @@ -521,9 +521,9 @@ rx_elf_relocate_section
|
| name = h->root.root.string;
|
| }
|
|
|
| - if (sec != NULL && elf_discarded_section (sec))
|
| + if (sec != NULL && discarded_section (sec))
|
| RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
|
| - rel, relend, howto, contents);
|
| + rel, 1, relend, howto, 0, contents);
|
|
|
| if (info->relocatable)
|
| {
|
| @@ -1653,7 +1653,7 @@ rx_offset_for_reloc (bfd * abfd,
|
| if (ssec)
|
| {
|
| if ((ssec->flags & SEC_MERGE)
|
| - && ssec->sec_info_type == ELF_INFO_TYPE_MERGE)
|
| + && ssec->sec_info_type == SEC_INFO_TYPE_MERGE)
|
| symval = _bfd_merged_section_offset (abfd, & ssec,
|
| elf_section_data (ssec)->sec_info,
|
| symval);
|
| @@ -1926,14 +1926,14 @@ elf32_rx_relax_section (bfd * abfd,
|
| if (shndx_buf == NULL)
|
| goto error_return;
|
| if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0
|
| - || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt)
|
| + || bfd_bread (shndx_buf, amt, abfd) != amt)
|
| goto error_return;
|
| shndx_hdr->contents = (bfd_byte *) shndx_buf;
|
| }
|
|
|
| /* 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;
|
| @@ -2115,7 +2115,7 @@ elf32_rx_relax_section (bfd * abfd,
|
| /* Decodable bits. */
|
| && (insn[0] & 0xcc) == 0xcc
|
| /* Width. */
|
| - && (insn[0] & 0x30) != 3
|
| + && (insn[0] & 0x30) != 0x30
|
| /* Register MSBs. */
|
| && (insn[1] & 0x88) == 0x00)
|
| {
|
| @@ -2219,7 +2219,7 @@ elf32_rx_relax_section (bfd * abfd,
|
| /* Decodable bits. */
|
| && (insn[0] & 0xc3) == 0xc3
|
| /* Width. */
|
| - && (insn[0] & 0x30) != 3
|
| + && (insn[0] & 0x30) != 0x30
|
| /* Register MSBs. */
|
| && (insn[1] & 0x88) == 0x00)
|
| {
|
| @@ -3060,7 +3060,8 @@ rx_elf_object_p (bfd * abfd)
|
| {
|
| Elf_Internal_Shdr *sec = elf_tdata(abfd)->elf_sect_ptr[u];
|
|
|
| - if (phdr[i].p_offset <= (bfd_vma) sec->sh_offset
|
| + if (phdr[i].p_filesz
|
| + && phdr[i].p_offset <= (bfd_vma) sec->sh_offset
|
| && (bfd_vma)sec->sh_offset <= phdr[i].p_offset + (phdr[i].p_filesz - 1))
|
| {
|
| /* Found one! The difference between the two addresses,
|
| @@ -3084,7 +3085,8 @@ rx_elf_object_p (bfd * abfd)
|
| bsec = abfd->sections;
|
| while (bsec)
|
| {
|
| - if (phdr[i].p_vaddr <= bsec->vma
|
| + if (phdr[i].p_filesz
|
| + && phdr[i].p_vaddr <= bsec->vma
|
| && bsec->vma <= phdr[i].p_vaddr + (phdr[i].p_filesz - 1))
|
| {
|
| bsec->lma = phdr[i].p_paddr + (bsec->vma - phdr[i].p_vaddr);
|
|
|