/* Based on the fr30 file, mixing in bits from the i960 and pruning of
dead code. */
-#include "config.h"
+/* This must come before any other includes. */
+#include "defs.h"
+
#include "libiberty.h"
#include "bfd.h"
#include "elf-bfd.h"
#include "sim-main.h"
-#ifdef HAVE_STDLIB_H
#include <stdlib.h>
-#endif
#include <errno.h>
+#include <unistd.h>
#include "sim-options.h"
#include "dis-asm.h"
-
-/* Apparently the autoconf bits are missing (though HAVE_ENVIRON is used
- in other dirs; also lacking there). Patch around it for major systems. */
-#if defined (HAVE_ENVIRON) || defined (__GLIBC__)
-extern char **environ;
-#define GET_ENVIRON() environ
-#else
-char *missing_environ[] = { "SHELL=/bin/sh", "PATH=/bin:/usr/bin", NULL };
-#define GET_ENVIRON() missing_environ
-#endif
+#include "environ.h"
/* Used with get_progbounds to find out how much memory is needed for the
program. We don't want to allocate more, since that could mask
buf = xmalloc (phdr[i].p_filesz);
if (verbose)
- sim_io_printf (sd, "Loading segment at 0x%lx, size 0x%lx\n",
+ sim_io_printf (sd,
+ "Loading segment at 0x%" BFD_VMA_FMT "x, size 0x%lx\n",
lma, phdr[i].p_filesz);
if (bfd_seek (abfd, phdr[i].p_offset, SEEK_SET) != 0
|| (bfd_bread (buf, phdr[i].p_filesz, abfd) != phdr[i].p_filesz))
{
sim_io_eprintf (sd,
- "%s: could not read segment at 0x%lx, size 0x%lx\n",
+ "%s: could not read segment at 0x%" BFD_VMA_FMT "x, "
+ "size 0x%lx\n",
STATE_MY_NAME (sd), lma, phdr[i].p_filesz);
free (buf);
return FALSE;
if (do_write (sd, lma, buf, phdr[i].p_filesz) != phdr[i].p_filesz)
{
sim_io_eprintf (sd,
- "%s: could not load segment at 0x%lx, size 0x%lx\n",
+ "%s: could not load segment at 0x%" BFD_VMA_FMT "x, "
+ "size 0x%lx\n",
STATE_MY_NAME (sd), lma, phdr[i].p_filesz);
free (buf);
return FALSE;
cris_handle_interpreter (SIM_DESC sd, struct bfd *abfd)
{
int i, n_hdrs;
- bfd_vma phaddr;
bfd_byte buf[4];
char *interp = NULL;
struct bfd *ibfd;
memory area, so we go via a temporary area. Luckily, the
interpreter is supposed to be small, less than 0x40000
bytes. */
- sim_do_commandf (sd, "memory region 0x%lx,0x%lx",
+ sim_do_commandf (sd, "memory region 0x%" BFD_VMA_FMT "x,0x%lx",
interp_load_addr, interpsiz);
/* Now that memory for the interpreter is defined, load it. */
standard ;-) that the rest of the elements won't be initialized. */
bfd_byte sp_init[4] = {0, 0, 0, 0};
+ /* Set default options before parsing user options. */
+ current_target_byte_order = BFD_ENDIAN_LITTLE;
+
/* The cpu data is kept in a separately allocated chunk of memory. */
- if (sim_cpu_alloc_all (sd, 1, cgen_cpu_max_extra_bytes ()) != SIM_RC_OK)
+ if (sim_cpu_alloc_all (sd, 1) != SIM_RC_OK)
{
free_state (sd);
return 0;
if (abfd != NULL && !cris_bare_iron)
{
const char *name = bfd_get_filename (abfd);
- char **my_environ = GET_ENVIRON ();
/* We use these maps to give the same behavior as the old xsim
simulator. */
USI envtop = 0x40000000;
bfd_byte buf[4];
/* Count in the environment as well. */
- for (envc = 0; my_environ[envc] != NULL; envc++)
- len += strlen (my_environ[envc]) + 1;
+ for (envc = 0; environ[envc] != NULL; envc++)
+ len += strlen (environ[envc]) + 1;
for (i = 0; prog_argv[i] != NULL; my_argc++, i++)
len += strlen (prog_argv[i]) + 1;
for (i = 0; i < envc; i++, csp += 4)
{
- unsigned int strln = strlen (my_environ[i]) + 1;
+ unsigned int strln = strlen (environ[i]) + 1;
- if (sim_core_write_buffer (sd, NULL, NULL_CIA, my_environ[i], epp,
- strln)
+ if (sim_core_write_buffer (sd, NULL, NULL_CIA, environ[i], epp, strln)
!= strln)
goto abandon_chip;
/* Allocate core managed memory if none specified by user. */
if (sim_core_read_buffer (sd, NULL, read_map, &c, startmem, 1) == 0)
- sim_do_commandf (sd, "memory region 0x%lx,0x%lx", startmem,
- endmem - startmem);
+ sim_do_commandf (sd, "memory region 0x%" PRIx32 ",0x%" PRIu32,
+ startmem, endmem - startmem);
/* Allocate simulator I/O managed memory if none specified by user. */
if (cris_have_900000xxif)
#endif
}
- /* Initialize various cgen things not done by common framework.
- Must be done after cris_cgen_cpu_open. */
- cgen_init (sd);
-
cris_set_callbacks (callback);
return sd;