gas: avoid spurious failures in non-ELF targets in the SPARC testsuite.
[deliverable/binutils-gdb.git] / bfd / elf32-rx.c
index e1856a9591d4446feada83fabf6d2e5215d3b9cc..49556d2831ec79c709cebde23a9cf7370a62e4f6 100644 (file)
@@ -1,5 +1,5 @@
 /* Renesas RX specific support for 32-bit ELF.
 /* Renesas RX specific support for 32-bit ELF.
-   Copyright (C) 2008-2014 Free Software Foundation, Inc.
+   Copyright (C) 2008-2016 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -49,7 +49,7 @@ void rx_dump_symtab (bfd *, void *, void *);
 
 static reloc_howto_type rx_elf_howto_table [] =
 {
 
 static reloc_howto_type rx_elf_howto_table [] =
 {
-  RXREL (NONE,         0,  0, 0, dont,     FALSE),
+  RXREL (NONE,         3,  0, 0, dont,     FALSE),
   RXREL (DIR32,        2, 32, 0, signed,   FALSE),
   RXREL (DIR24S,       2, 24, 0, signed,   FALSE),
   RXREL (DIR16,        1, 16, 0, dont,     FALSE),
   RXREL (DIR32,        2, 32, 0, signed,   FALSE),
   RXREL (DIR24S,       2, 24, 0, signed,   FALSE),
   RXREL (DIR16,        1, 16, 0, dont,     FALSE),
@@ -277,7 +277,7 @@ rx_reloc_type_lookup (bfd *                    abfd ATTRIBUTE_UNUSED,
   if (code == BFD_RELOC_RX_32_OP)
     return rx_elf_howto_table + R_RX_DIR32;
 
   if (code == BFD_RELOC_RX_32_OP)
     return rx_elf_howto_table + R_RX_DIR32;
 
-  for (i = ARRAY_SIZE (rx_reloc_map); --i;)
+  for (i = ARRAY_SIZE (rx_reloc_map); i--;)
     if (rx_reloc_map [i].bfd_reloc_val == code)
       return rx_elf_howto_table + rx_reloc_map[i].rx_reloc_val;
 
     if (rx_reloc_map [i].bfd_reloc_val == code)
       return rx_elf_howto_table + rx_reloc_map[i].rx_reloc_val;
 
@@ -307,13 +307,16 @@ rx_info_to_howto_rela (bfd *               abfd ATTRIBUTE_UNUSED,
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
-  BFD_ASSERT (r_type < (unsigned int) R_RX_max);
+  if (r_type >= (unsigned int) R_RX_max)
+    {
+      _bfd_error_handler (_("%B: invalid RX reloc number: %d"), abfd, r_type);
+      r_type = 0;
+    }
   cache_ptr->howto = rx_elf_howto_table + r_type;
 }
 \f
 static bfd_vma
 get_symbol_value (const char *            name,
   cache_ptr->howto = rx_elf_howto_table + r_type;
 }
 \f
 static bfd_vma
 get_symbol_value (const char *            name,
-                 bfd_reloc_status_type * status,
                  struct bfd_link_info *  info,
                  bfd *                   input_bfd,
                  asection *              input_section,
                  struct bfd_link_info *  info,
                  bfd *                   input_bfd,
                  asection *              input_section,
@@ -327,7 +330,7 @@ get_symbol_value (const char *            name,
   if (h == NULL
       || (h->type != bfd_link_hash_defined
          && h->type != bfd_link_hash_defweak))
   if (h == NULL
       || (h->type != bfd_link_hash_defined
          && h->type != bfd_link_hash_defweak))
-    * status = info->callbacks->undefined_symbol
+    (*info->callbacks->undefined_symbol)
       (info, name, input_bfd, input_section, offset, TRUE);
   else
     value = (h->u.def.value
       (info, name, input_bfd, input_section, offset, TRUE);
   else
     value = (h->u.def.value
@@ -336,6 +339,7 @@ get_symbol_value (const char *            name,
 
   return value;
 }
 
   return value;
 }
+
 static bfd_vma
 get_symbol_value_maybe (const char *            name,
                        struct bfd_link_info *  info)
 static bfd_vma
 get_symbol_value_maybe (const char *            name,
                        struct bfd_link_info *  info)
@@ -358,8 +362,7 @@ get_symbol_value_maybe (const char *            name,
 }
 
 static bfd_vma
 }
 
 static bfd_vma
-get_gp (bfd_reloc_status_type * status,
-       struct bfd_link_info *  info,
+get_gp (struct bfd_link_info *  info,
        bfd *                   abfd,
        asection *              sec,
        int                     offset)
        bfd *                   abfd,
        asection *              sec,
        int                     offset)
@@ -369,15 +372,14 @@ get_gp (bfd_reloc_status_type * status,
 
   if (!cached)
     {
 
   if (!cached)
     {
-      cached_value = get_symbol_value ("__gp", status, info, abfd, sec, offset);
+      cached_value = get_symbol_value ("__gp", info, abfd, sec, offset);
       cached = TRUE;
     }
   return cached_value;
 }
 
 static bfd_vma
       cached = TRUE;
     }
   return cached_value;
 }
 
 static bfd_vma
-get_romstart (bfd_reloc_status_type * status,
-             struct bfd_link_info *  info,
+get_romstart (struct bfd_link_info *  info,
              bfd *                   abfd,
              asection *              sec,
              int                     offset)
              bfd *                   abfd,
              asection *              sec,
              int                     offset)
@@ -387,15 +389,14 @@ get_romstart (bfd_reloc_status_type * status,
 
   if (!cached)
     {
 
   if (!cached)
     {
-      cached_value = get_symbol_value ("_start", status, info, abfd, sec, offset);
+      cached_value = get_symbol_value ("_start", info, abfd, sec, offset);
       cached = TRUE;
     }
   return cached_value;
 }
 
 static bfd_vma
       cached = TRUE;
     }
   return cached_value;
 }
 
 static bfd_vma
-get_ramstart (bfd_reloc_status_type * status,
-             struct bfd_link_info *  info,
+get_ramstart (struct bfd_link_info *  info,
              bfd *                   abfd,
              asection *              sec,
              int                     offset)
              bfd *                   abfd,
              asection *              sec,
              int                     offset)
@@ -405,7 +406,7 @@ get_ramstart (bfd_reloc_status_type * status,
 
   if (!cached)
     {
 
   if (!cached)
     {
-      cached_value = get_symbol_value ("__datastart", status, info, abfd, sec, offset);
+      cached_value = get_symbol_value ("__datastart", info, abfd, sec, offset);
       cached = TRUE;
     }
   return cached_value;
       cached = TRUE;
     }
   return cached_value;
@@ -549,7 +550,6 @@ rx_elf_relocate_section
          bfd_vma entry_vma;
          int idx;
          char *buf;
          bfd_vma entry_vma;
          int idx;
          char *buf;
-         bfd_reloc_status_type tstat = 0;
 
          if (table_default_cache != name)
            {
 
          if (table_default_cache != name)
            {
@@ -567,18 +567,14 @@ rx_elf_relocate_section
              buf = (char *) malloc (13 + strlen (name + 20));
 
              sprintf (buf, "$tablestart$%s", name + 20);
              buf = (char *) malloc (13 + strlen (name + 20));
 
              sprintf (buf, "$tablestart$%s", name + 20);
-             tstat = 0;
              table_start_cache = get_symbol_value (buf,
              table_start_cache = get_symbol_value (buf,
-                                                   &tstat,
                                                    info,
                                                    input_bfd,
                                                    input_section,
                                                    rel->r_offset);
 
              sprintf (buf, "$tableend$%s", name + 20);
                                                    info,
                                                    input_bfd,
                                                    input_section,
                                                    rel->r_offset);
 
              sprintf (buf, "$tableend$%s", name + 20);
-             tstat = 0;
              table_end_cache = get_symbol_value (buf,
              table_end_cache = get_symbol_value (buf,
-                                                 &tstat,
                                                  info,
                                                  input_bfd,
                                                  input_section,
                                                  info,
                                                  input_bfd,
                                                  input_section,
@@ -628,7 +624,7 @@ rx_elf_relocate_section
        RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
                                         rel, 1, relend, howto, 0, contents);
 
        RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
                                         rel, 1, relend, howto, 0, contents);
 
-      if (info->relocatable)
+      if (bfd_link_relocatable (info))
        {
          /* This is a relocatable link.  We don't have to change
              anything, unless the reloc is against a section symbol,
        {
          /* This is a relocatable link.  We don't have to change
              anything, unless the reloc is against a section symbol,
@@ -952,7 +948,7 @@ rx_elf_relocate_section
 
        case R_RX_RH_GPRELB:
          WARN_REDHAT ("RX_RH_GPRELB");
 
        case R_RX_RH_GPRELB:
          WARN_REDHAT ("RX_RH_GPRELB");
-         relocation -= get_gp (&r, info, input_bfd, input_section, rel->r_offset);
+         relocation -= get_gp (info, input_bfd, input_section, rel->r_offset);
          RANGE (0, 65535);
 #if RX_OPCODE_BIG_ENDIAN
          OP (1) = relocation;
          RANGE (0, 65535);
 #if RX_OPCODE_BIG_ENDIAN
          OP (1) = relocation;
@@ -965,7 +961,7 @@ rx_elf_relocate_section
 
        case R_RX_RH_GPRELW:
          WARN_REDHAT ("RX_RH_GPRELW");
 
        case R_RX_RH_GPRELW:
          WARN_REDHAT ("RX_RH_GPRELW");
-         relocation -= get_gp (&r, info, input_bfd, input_section, rel->r_offset);
+         relocation -= get_gp (info, input_bfd, input_section, rel->r_offset);
          ALIGN (1);
          relocation >>= 1;
          RANGE (0, 65535);
          ALIGN (1);
          relocation >>= 1;
          RANGE (0, 65535);
@@ -980,7 +976,7 @@ rx_elf_relocate_section
 
        case R_RX_RH_GPRELL:
          WARN_REDHAT ("RX_RH_GPRELL");
 
        case R_RX_RH_GPRELL:
          WARN_REDHAT ("RX_RH_GPRELL");
-         relocation -= get_gp (&r, info, input_bfd, input_section, rel->r_offset);
+         relocation -= get_gp (info, input_bfd, input_section, rel->r_offset);
          ALIGN (3);
          relocation >>= 2;
          RANGE (0, 65535);
          ALIGN (3);
          relocation >>= 2;
          RANGE (0, 65535);
@@ -1403,11 +1399,11 @@ rx_elf_relocate_section
          break;
 
        case R_RX_OPromtop:
          break;
 
        case R_RX_OPromtop:
-         RX_STACK_PUSH (get_romstart (&r, info, input_bfd, input_section, rel->r_offset));
+         RX_STACK_PUSH (get_romstart (info, input_bfd, input_section, rel->r_offset));
          break;
 
        case R_RX_OPramtop:
          break;
 
        case R_RX_OPramtop:
-         RX_STACK_PUSH (get_ramstart (&r, info, input_bfd, input_section, rel->r_offset));
+         RX_STACK_PUSH (get_ramstart (info, input_bfd, input_section, rel->r_offset));
          break;
 
        default:
          break;
 
        default:
@@ -1427,15 +1423,14 @@ rx_elf_relocate_section
              if (r_type == R_RX_DIR24S_PCREL)
                msg = _("%B(%A): error: call to undefined function '%s'");
              else
              if (r_type == R_RX_DIR24S_PCREL)
                msg = _("%B(%A): error: call to undefined function '%s'");
              else
-               r = info->callbacks->reloc_overflow
+               (*info->callbacks->reloc_overflow)
                  (info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
                   input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
                  (info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
                   input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
-             r = info->callbacks->undefined_symbol
-               (info, name, input_bfd, input_section, rel->r_offset,
-                TRUE);
+             (*info->callbacks->undefined_symbol)
+               (info, name, input_bfd, input_section, rel->r_offset, TRUE);
              break;
 
            case bfd_reloc_other:
              break;
 
            case bfd_reloc_other:
@@ -1461,9 +1456,6 @@ rx_elf_relocate_section
 
          if (msg)
            _bfd_error_handler (msg, input_bfd, input_section, name);
 
          if (msg)
            _bfd_error_handler (msg, input_bfd, input_section, name);
-
-         if (! r)
-           return FALSE;
        }
     }
 
        }
     }
 
@@ -1527,7 +1519,8 @@ next_smaller_reloc (int r)
 
 static bfd_boolean
 elf32_rx_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count,
 
 static bfd_boolean
 elf32_rx_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count,
-                            Elf_Internal_Rela *alignment_rel, int force_snip)
+                            Elf_Internal_Rela *alignment_rel, int force_snip,
+                            Elf_Internal_Rela *irelstart)
 {
   Elf_Internal_Shdr * symtab_hdr;
   unsigned int        sec_shndx;
 {
   Elf_Internal_Shdr * symtab_hdr;
   unsigned int        sec_shndx;
@@ -1554,8 +1547,7 @@ elf32_rx_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count,
   if (alignment_rel)
     toaddr = alignment_rel->r_offset;
 
   if (alignment_rel)
     toaddr = alignment_rel->r_offset;
 
-  irel = elf_section_data (sec)->relocs;
-  irelend = irel + sec->reloc_count;
+  BFD_ASSERT (toaddr > addr);  
 
   /* Actually delete the bytes.  */
   memmove (contents + addr, contents + addr + count,
 
   /* Actually delete the bytes.  */
   memmove (contents + addr, contents + addr + count,
@@ -1569,8 +1561,12 @@ elf32_rx_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count,
   else
     memset (contents + toaddr - count, 0x03, count);
 
   else
     memset (contents + toaddr - count, 0x03, count);
 
+  irel = irelstart;
+  BFD_ASSERT (irel != NULL || sec->reloc_count == 0);
+  irelend = irel + sec->reloc_count;
+
   /* Adjust all the relocs.  */
   /* Adjust all the relocs.  */
-  for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++)
+  for (; irel < irelend; irel++)
     {
       /* Get the new reloc address.  */
       if (irel->r_offset > addr
     {
       /* Get the new reloc address.  */
       if (irel->r_offset > addr
@@ -1894,11 +1890,11 @@ rx_offset_for_reloc (bfd *                    abfd,
          break;
 
        case R_RX_OPromtop:
          break;
 
        case R_RX_OPromtop:
-         RX_STACK_PUSH (get_romstart (&r, info, input_bfd, input_section, rel->r_offset));
+         RX_STACK_PUSH (get_romstart (info, input_bfd, input_section, rel->r_offset));
          break;
 
        case R_RX_OPramtop:
          break;
 
        case R_RX_OPramtop:
-         RX_STACK_PUSH (get_ramstart (&r, info, input_bfd, input_section, rel->r_offset));
+         RX_STACK_PUSH (get_ramstart (info, input_bfd, input_section, rel->r_offset));
          break;
 
        case R_RX_DIR16UL:
          break;
 
        case R_RX_DIR16UL:
@@ -1933,6 +1929,8 @@ rx_offset_for_reloc (bfd *                    abfd,
 
       rel ++;
     }
 
       rel ++;
     }
+  /* FIXME.  */
+  (void) r;
 }
 
 static void
 }
 
 static void
@@ -1961,7 +1959,6 @@ elf32_rx_relax_section (bfd *                  abfd,
   Elf_Internal_Shdr * symtab_hdr;
   Elf_Internal_Shdr * shndx_hdr;
   Elf_Internal_Rela * internal_relocs;
   Elf_Internal_Shdr * symtab_hdr;
   Elf_Internal_Shdr * shndx_hdr;
   Elf_Internal_Rela * internal_relocs;
-  Elf_Internal_Rela * free_relocs = NULL;
   Elf_Internal_Rela * irel;
   Elf_Internal_Rela * srel;
   Elf_Internal_Rela * irelend;
   Elf_Internal_Rela * irel;
   Elf_Internal_Rela * srel;
   Elf_Internal_Rela * irelend;
@@ -1987,14 +1984,17 @@ elf32_rx_relax_section (bfd *                  abfd,
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
-  if (link_info->relocatable
+  if (bfd_link_relocatable (link_info)
       || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
       || (sec->flags & SEC_CODE) == 0)
     return TRUE;
 
       || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
       || (sec->flags & SEC_CODE) == 0)
     return TRUE;
 
-  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-  shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr;
+  symtab_hdr = & elf_symtab_hdr (abfd);
+  if (elf_symtab_shndx_list (abfd))
+    shndx_hdr = & elf_symtab_shndx_list (abfd)->hdr;
+  else
+    shndx_hdr = NULL;
 
   sec_start = sec->output_section->vma + sec->output_offset;
 
 
   sec_start = sec->output_section->vma + sec->output_offset;
 
@@ -2019,7 +2019,7 @@ elf32_rx_relax_section (bfd *                  abfd,
       symtab_hdr->contents = (bfd_byte *) intsyms;
     }
 
       symtab_hdr->contents = (bfd_byte *) intsyms;
     }
 
-  if (shndx_hdr->sh_size != 0)
+  if (shndx_hdr && shndx_hdr->sh_size != 0)
     {
       bfd_size_type amt;
 
     {
       bfd_size_type amt;
 
@@ -2035,13 +2035,15 @@ elf32_rx_relax_section (bfd *                  abfd,
     }
 
   /* Get a copy of the native relocations.  */
     }
 
   /* Get a copy of the native relocations.  */
-  internal_relocs = (_bfd_elf_link_read_relocs
-                    (abfd, sec, NULL, (Elf_Internal_Rela *) NULL,
-                     link_info->keep_memory));
+  /* Note - we ignore the setting of link_info->keep_memory when reading
+     in these relocs.  We have to maintain a permanent copy of the relocs
+     because we are going to walk over them multiple times, adjusting them
+     as bytes are deleted from the section, and with this relaxation
+     function itself being called multiple times on the same section...  */
+  internal_relocs = _bfd_elf_link_read_relocs
+    (abfd, sec, NULL, (Elf_Internal_Rela *) NULL, TRUE);
   if (internal_relocs == NULL)
     goto error_return;
   if (internal_relocs == NULL)
     goto error_return;
-  if (! link_info->keep_memory)
-    free_relocs = internal_relocs;
 
   /* The RL_ relocs must be just before the operand relocs they go
      with, so we must sort them to guarantee this.  We use bubblesort
 
   /* The RL_ relocs must be just before the operand relocs they go
      with, so we must sort them to guarantee this.  We use bubblesort
@@ -2131,7 +2133,7 @@ elf32_rx_relax_section (bfd *                  abfd,
          nbytes *= alignment;
 
          elf32_rx_relax_delete_bytes (abfd, sec, erel->r_offset-nbytes, nbytes, next_alignment,
          nbytes *= alignment;
 
          elf32_rx_relax_delete_bytes (abfd, sec, erel->r_offset-nbytes, nbytes, next_alignment,
-                                      erel->r_offset == sec->size);
+                                      erel->r_offset == sec->size, internal_relocs);
          *again = TRUE;
 
          continue;
          *again = TRUE;
 
          continue;
@@ -2170,7 +2172,7 @@ elf32_rx_relax_section (bfd *                  abfd,
       nrelocs --;
 
 #define SNIPNR(offset, nbytes) \
       nrelocs --;
 
 #define SNIPNR(offset, nbytes) \
-       elf32_rx_relax_delete_bytes (abfd, sec, (insn - contents) + offset, nbytes, next_alignment, 0);
+      elf32_rx_relax_delete_bytes (abfd, sec, (insn - contents) + offset, nbytes, next_alignment, 0, internal_relocs);
 #define SNIP(offset, nbytes, newtype) \
         SNIPNR (offset, nbytes);                                               \
        srel->r_info = ELF32_R_INFO (ELF32_R_SYM (srel->r_info), newtype)
 #define SNIP(offset, nbytes, newtype) \
         SNIPNR (offset, nbytes);                                               \
        srel->r_info = ELF32_R_INFO (ELF32_R_SYM (srel->r_info), newtype)
@@ -2990,9 +2992,6 @@ elf32_rx_relax_section (bfd *                  abfd,
   return TRUE;
 
  error_return:
   return TRUE;
 
  error_return:
-  if (free_relocs != NULL)
-    free (free_relocs);
-
   if (free_contents != NULL)
     free (free_contents);
 
   if (free_contents != NULL)
     free (free_contents);
 
@@ -3070,6 +3069,9 @@ describe_flags (flagword flags)
   else
     strcat (buf, ", GCC ABI");
 
   else
     strcat (buf, ", GCC ABI");
 
+  if (flags & E_FLAG_RX_SINSNS_SET)
+    strcat (buf, flags & E_FLAG_RX_SINSNS_YES ? ", uses String instructions" : ", bans String instructions");
+
   return buf;
 }
 
   return buf;
 }
 
@@ -3096,8 +3098,22 @@ rx_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
     {
       flagword known_flags;
 
     {
       flagword known_flags;
 
+      if (old_flags & E_FLAG_RX_SINSNS_SET)
+       {
+         if ((new_flags & E_FLAG_RX_SINSNS_SET) == 0)
+           {
+             new_flags &= ~ E_FLAG_RX_SINSNS_MASK;
+             new_flags |= (old_flags & E_FLAG_RX_SINSNS_MASK);
+           }
+       }
+      else if (new_flags & E_FLAG_RX_SINSNS_SET)
+       {
+         old_flags &= ~ E_FLAG_RX_SINSNS_MASK;
+         old_flags |= (new_flags & E_FLAG_RX_SINSNS_MASK);
+       }
+
       known_flags = E_FLAG_RX_ABI | E_FLAG_RX_64BIT_DOUBLES
       known_flags = E_FLAG_RX_ABI | E_FLAG_RX_64BIT_DOUBLES
-       | E_FLAG_RX_DSP | E_FLAG_RX_PID;
+       | E_FLAG_RX_DSP | E_FLAG_RX_PID | E_FLAG_RX_SINSNS_MASK;
 
       if ((old_flags ^ new_flags) & known_flags)
        {
 
       if ((old_flags ^ new_flags) & known_flags)
        {
@@ -3203,6 +3219,8 @@ rx_elf_object_p (bfd * abfd)
 
          if (phdr[i].p_filesz
              && phdr[i].p_offset <= (bfd_vma) sec->sh_offset
 
          if (phdr[i].p_filesz
              && phdr[i].p_offset <= (bfd_vma) sec->sh_offset
+             && sec->sh_size > 0
+             && sec->sh_type != SHT_NOBITS
              && (bfd_vma)sec->sh_offset <= phdr[i].p_offset + (phdr[i].p_filesz - 1))
            {
              /* Found one!  The difference between the two addresses,
              && (bfd_vma)sec->sh_offset <= phdr[i].p_offset + (phdr[i].p_filesz - 1))
            {
              /* Found one!  The difference between the two addresses,
@@ -3520,7 +3538,7 @@ rx_set_section_contents (bfd *         abfd,
       if (! rv)
        return rv;
 
       if (! rv)
        return rv;
 
-      location ++;
+      location = (bfd_byte *) location + 1;
       offset ++;
       count --;
       caddr ++;
       offset ++;
       count --;
       caddr ++;
@@ -3546,7 +3564,7 @@ rx_set_section_contents (bfd *         abfd,
     }
 
   count -= scount;
     }
 
   count -= scount;
-  location += scount;
+  location = (bfd_byte *) location + scount;
   offset += scount;
 
   if (count > 0)
   offset += scount;
 
   if (count > 0)
@@ -3565,7 +3583,7 @@ rx_set_section_contents (bfd *         abfd,
          if (! rv)
            return rv;
 
          if (! rv)
            return rv;
 
-         location ++;
+         location = (bfd_byte *) location + 1;
          offset ++;
          count --;
          caddr ++;
          offset ++;
          count --;
          caddr ++;
@@ -3801,8 +3819,6 @@ rx_table_map (struct bfd_hash_entry *vent, void *vinfo)
   RX_Table_Info *info = (RX_Table_Info *)vinfo;
   struct bfd_link_hash_entry *ent = (struct bfd_link_hash_entry *)vent;
   const char *name; /* of the symbol we've found */
   RX_Table_Info *info = (RX_Table_Info *)vinfo;
   struct bfd_link_hash_entry *ent = (struct bfd_link_hash_entry *)vent;
   const char *name; /* of the symbol we've found */
-  asection *sec;
-  struct bfd *abfd;
   int idx;
   const char *tname; /* name of the table */
   bfd_vma start_addr, end_addr;
   int idx;
   const char *tname; /* name of the table */
   bfd_vma start_addr, end_addr;
@@ -3817,8 +3833,6 @@ rx_table_map (struct bfd_hash_entry *vent, void *vinfo)
     return TRUE;
 
   name = ent->root.string;
     return TRUE;
 
   name = ent->root.string;
-  sec = ent->u.def.section;
-  abfd = sec->owner;
 
   if (strncmp (name, "$tablestart$", 12))
     return TRUE;
 
   if (strncmp (name, "$tablestart$", 12))
     return TRUE;
@@ -3871,15 +3885,15 @@ rx_table_map (struct bfd_hash_entry *vent, void *vinfo)
 
   bfd_hash_traverse (&(info->info->hash->table), rx_table_map_2, info);
 
 
   bfd_hash_traverse (&(info->info->hash->table), rx_table_map_2, info);
 
-  fprintf (info->mapfile, "\nRX Vector Table: %s has %d entries at 0x%08lx\n\n",
+  fprintf (info->mapfile, "\nRX Vector Table: %s has %d entries at 0x%08" BFD_VMA_FMT "x\n\n",
           tname, info->table_size, start_addr);
 
   if (info->table_default_entry)
           tname, info->table_size, start_addr);
 
   if (info->table_default_entry)
-    fprintf (info->mapfile, "  default handler is: %s at 0x%08lx\n",
+    fprintf (info->mapfile, "  default handler is: %s at 0x%08" BFD_VMA_FMT "x\n",
             info->table_default_entry->root.string,
             info->table_default_handler);
   else if (info->table_default_handler != (bfd_vma)(-1))
             info->table_default_entry->root.string,
             info->table_default_handler);
   else if (info->table_default_handler != (bfd_vma)(-1))
-    fprintf (info->mapfile, "  default handler is at 0x%08lx\n",
+    fprintf (info->mapfile, "  default handler is at 0x%08" BFD_VMA_FMT "x\n",
             info->table_default_handler);
   else
     fprintf (info->mapfile, "  no default handler\n");
             info->table_default_handler);
   else
     fprintf (info->mapfile, "  no default handler\n");
@@ -3896,7 +3910,7 @@ rx_table_map (struct bfd_hash_entry *vent, void *vinfo)
        }
       need_elipses = 1;
 
        }
       need_elipses = 1;
 
-      fprintf (info->mapfile, "  0x%08lx [%3d] ", start_addr + 4 * idx, idx);
+      fprintf (info->mapfile, "  0x%08" BFD_VMA_FMT "x [%3d] ", start_addr + 4 * idx, idx);
 
       if (info->table_handlers[idx] == (bfd_vma) (-1))
        fprintf (info->mapfile, "(no handler found)\n");
 
       if (info->table_handlers[idx] == (bfd_vma) (-1))
        fprintf (info->mapfile, "(no handler found)\n");
@@ -3911,12 +3925,12 @@ rx_table_map (struct bfd_hash_entry *vent, void *vinfo)
 
       else if (info->table_entries[idx])
        {
 
       else if (info->table_entries[idx])
        {
-         fprintf (info->mapfile, "0x%08lx %s\n", info->table_handlers[idx], info->table_entries[idx]->root.string);
+         fprintf (info->mapfile, "0x%08" BFD_VMA_FMT "x %s\n", info->table_handlers[idx], info->table_entries[idx]->root.string);
        }
 
       else
        {
        }
 
       else
        {
-         fprintf (info->mapfile, "0x%08lx ???\n", info->table_handlers[idx]);
+         fprintf (info->mapfile, "0x%08" BFD_VMA_FMT "x ???\n", info->table_handlers[idx]);
        }
     }
   if (need_elipses)
        }
     }
   if (need_elipses)
This page took 0.031347 seconds and 4 git commands to generate.