/* Miscellaneous simulator utilities.
- Copyright (C) 1997, 1998, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1997-2020 Free Software Foundation, Inc.
Contributed by Cygnus Support.
This file is part of GDB, the GNU debugger.
#include "bfd.h"
#include "sim-utils.h"
-/* Global pointer to all state data.
- Set by sim_resume. */
-struct sim_state *current_state;
-
/* Allocate zero filled memory with xcalloc - xcalloc aborts if the
allocation fails. */
return xcalloc (1, size);
}
-void
-zfree (void *data)
-{
- free (data);
-}
-
/* Allocate a sim_state struct. */
SIM_DESC
void
sim_state_free (SIM_DESC sd)
{
- ASSERT (sd->base.magic == SIM_MAGIC_NUMBER);
+ ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
#ifdef SIM_STATE_FREE
SIM_STATE_FREE (sd);
#endif
- zfree (sd);
+ free (sd);
}
/* Return a pointer to the cpu data for CPU_NAME, or NULL if not found. */
bfd open. */
SIM_RC
-sim_analyze_program (SIM_DESC sd, char *prog_name, bfd *prog_bfd)
+sim_analyze_program (SIM_DESC sd, const char *prog_name, bfd *prog_bfd)
{
asection *s;
SIM_ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
prog_bfd = bfd_openr (prog_name, STATE_TARGET (sd));
if (prog_bfd == NULL)
{
- sim_io_eprintf (sd, "%s: can't open \"%s\": %s\n",
+ sim_io_eprintf (sd, "%s: can't open \"%s\": %s\n",
STATE_MY_NAME (sd),
prog_name,
bfd_errmsg (bfd_get_error ()));
return SIM_RC_FAIL;
}
- if (!bfd_check_format (prog_bfd, bfd_object))
+ if (!bfd_check_format (prog_bfd, bfd_object))
{
sim_io_eprintf (sd, "%s: \"%s\" is not an object file: %s\n",
STATE_MY_NAME (sd),
STATE_START_ADDR (sd) = bfd_get_start_address (prog_bfd);
for (s = prog_bfd->sections; s; s = s->next)
- if (strcmp (bfd_get_section_name (prog_bfd, s), ".text") == 0)
+ if (strcmp (bfd_section_name (s), ".text") == 0)
{
STATE_TEXT_SECTION (sd) = s;
- STATE_TEXT_START (sd) = bfd_get_section_vma (prog_bfd, s);
- STATE_TEXT_END (sd) = STATE_TEXT_START (sd) + bfd_section_size (prog_bfd, s);
+ STATE_TEXT_START (sd) = bfd_section_vma (s);
+ STATE_TEXT_END (sd) = STATE_TEXT_START (sd) + bfd_section_size (s);
break;
}
{
va_list ap;
char *buf;
+ int ret;
+
va_start (ap, fmt);
- vasprintf (&buf, fmt, ap);
- sim_do_command (sd, buf);
+ ret = vasprintf (&buf, fmt, ap);
va_end (ap);
+
+ if (ret < 0)
+ {
+ sim_io_eprintf (sd, "%s: asprintf failed for `%s'\n",
+ STATE_MY_NAME (sd), fmt);
+ return;
+ }
+
+ sim_do_command (sd, buf);
free (buf);
}
case io_map: return "io";
default:
{
- static char str[10];
- sprintf (str, "(%ld)", (long) map);
+ static char str[16];
+ snprintf (str, sizeof(str), "(%ld)", (long) map);
return str;
}
}
case access_read_write_exec_io: return "read_write_exec_io";
default:
{
- static char str[10];
- sprintf (str, "(%ld)", (long) access);
+ static char str[16];
+ snprintf (str, sizeof(str), "(%ld)", (long) access);
return str;
}
}
default: return "(error)";
}
}
-
-