gdb/features: remove rx.xml from XMLTOC list
[deliverable/binutils-gdb.git] / sim / rl78 / load.c
index 66d00d3a6caa5a24aeaf9682c92a99ca709aac8a..1776f488d5a6a1ab7332639581406c267513fa76 100644 (file)
@@ -1,6 +1,6 @@
 /* load.c --- loading object files into the RL78 simulator.
 
 /* load.c --- loading object files into the RL78 simulator.
 
-   Copyright (C) 2005-2015 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
    Contributed by Red Hat, Inc.
 
    This file is part of the GNU simulators.
    Contributed by Red Hat, Inc.
 
    This file is part of the GNU simulators.
@@ -29,7 +29,6 @@
 #include "bfd.h"
 #include "elf-bfd.h"
 #include "elf/rl78.h"
 #include "bfd.h"
 #include "elf-bfd.h"
 #include "elf/rl78.h"
-#include "libbfd.h"
 #include "cpu.h"
 #include "mem.h"
 #include "load.h"
 #include "cpu.h"
 #include "mem.h"
 #include "load.h"
@@ -57,7 +56,7 @@ find_section_name_by_offset (bfd *abfd, file_ptr filepos)
 
   for (s = abfd->sections; s; s = s->next)
     if (s->filepos == filepos)
 
   for (s = abfd->sections; s; s = s->next)
     if (s->filepos == filepos)
-      return bfd_get_section_name (abfd, s);
+      return bfd_section_name (s);
 
   return "(unknown)";
 }
 
   return "(unknown)";
 }
@@ -92,13 +91,26 @@ rl78_load (bfd *prog, host_callback *callbacks, const char * const simname)
       return;
     }
 
       return;
     }
 
-  rl78_g10_mode = 0;
   switch (elf_elfheader (prog)->e_flags & E_FLAG_RL78_CPU_MASK)
     {
   switch (elf_elfheader (prog)->e_flags & E_FLAG_RL78_CPU_MASK)
     {
-    case E_FLAG_RL78_G10: rl78_g10_mode = 1; break;
-    case E_FLAG_RL78_G13: g13_multiply = 1; break;
+    case E_FLAG_RL78_G10:
+      rl78_g10_mode = 1;
+      g13_multiply = 0;
+      g14_multiply = 0;
+      mem_set_mirror (0, 0xf8000, 4096);
+      break;
+    case E_FLAG_RL78_G13:
+      rl78_g10_mode = 0;
+      g13_multiply = 1;
+      g14_multiply = 0;
+      break;
     case E_FLAG_RL78_G14:
     case E_FLAG_RL78_G14:
+      rl78_g10_mode = 0;
+      g13_multiply = 0;
+      g14_multiply = 1;
+      break;
     default:
     default:
+      /* Keep whatever was manually specified.  */
       break;
     }
 
       break;
     }
 
@@ -127,13 +139,13 @@ rl78_load (bfd *prog, host_callback *callbacks, const char * const simname)
       buf = xmalloc (size);
 
       offset = p->p_offset;
       buf = xmalloc (size);
 
       offset = p->p_offset;
-      if (prog->iovec->bseek (prog, offset, SEEK_SET) != 0)
+      if (bfd_seek (prog, offset, SEEK_SET) != 0)
        {
          fprintf (stderr, "%s, Failed to seek to offset %lx\n", simname, (long) offset);
          continue;
        }
 
        {
          fprintf (stderr, "%s, Failed to seek to offset %lx\n", simname, (long) offset);
          continue;
        }
 
-      if (prog->iovec->bread (prog, buf, size) != size)
+      if (bfd_bread (buf, size, prog) != size)
        {
          fprintf (stderr, "%s: Failed to read %lx bytes\n", simname, size);
          continue;
        {
          fprintf (stderr, "%s: Failed to read %lx bytes\n", simname, size);
          continue;
This page took 0.03191 seconds and 4 git commands to generate.