X-Git-Url: http://drtracing.org/?a=blobdiff_plain;ds=sidebyside;f=sim%2Fcommon%2Fsim-utils.c;h=7f385a5463d7db9e4058b6e914d750f7b0de82fd;hb=64517994807b0d6bb3c6fd106f117c03242fac72;hp=38a94fa5530ddede7c40a2f9651b2bcc6fba8e1d;hpb=4744ac1bb0d2f2294c7762577262fdcafb67883b;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/common/sim-utils.c b/sim/common/sim-utils.c index 38a94fa553..7f385a5463 100644 --- a/sim/common/sim-utils.c +++ b/sim/common/sim-utils.c @@ -1,5 +1,5 @@ /* Miscellaneous simulator utilities. - Copyright (C) 1997, 1998, 2007 Free Software Foundation, Inc. + Copyright (C) 1997-2017 Free Software Foundation, Inc. Contributed by Cygnus Support. This file is part of GDB, the GNU debugger. @@ -48,25 +48,13 @@ along with this program. If not, see . */ #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 xmalloc - xmalloc aborts of the +/* Allocate zero filled memory with xcalloc - xcalloc aborts if the allocation fails. */ void * zalloc (unsigned long size) { - void *memory = (void *) xmalloc (size); - memset (memory, 0, size); - return memory; -} - -void -zfree (void *data) -{ - free (data); + return xcalloc (1, size); } /* Allocate a sim_state struct. */ @@ -113,13 +101,13 @@ sim_state_alloc (SIM_OPEN_KIND kind, 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. */ @@ -171,7 +159,7 @@ sim_io_eprintf_cpu (sim_cpu *cpu, const char *fmt, ...) va_list ap; va_start (ap, fmt); - sim_io_eprintf (sd, sim_cpu_msg_prefix (cpu)); + sim_io_eprintf (sd, "%s", sim_cpu_msg_prefix (cpu)); sim_io_evprintf (sd, fmt, ap); va_end (ap); } @@ -219,10 +207,7 @@ sim_add_commas (char *buf, int sizeof_buf, unsigned long value) bfd open. */ SIM_RC -sim_analyze_program (sd, prog_name, prog_bfd) - 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); @@ -245,13 +230,13 @@ sim_analyze_program (sd, prog_name, prog_bfd) 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), @@ -296,7 +281,7 @@ sim_analyze_program (sd, prog_name, prog_bfd) /* Called before sim_elapsed_time_since to get a reference point. */ SIM_ELAPSED_TIME -sim_elapsed_time_get () +sim_elapsed_time_get (void) { #ifdef HAVE_GETRUSAGE struct rusage mytime; @@ -316,8 +301,7 @@ sim_elapsed_time_get () The actual time may be cpu usage (preferred) or wall clock. */ unsigned long -sim_elapsed_time_since (start) - SIM_ELAPSED_TIME start; +sim_elapsed_time_since (SIM_ELAPSED_TIME start) { #ifdef HAVE_GETRUSAGE return sim_elapsed_time_get () - start; @@ -340,10 +324,20 @@ sim_do_commandf (SIM_DESC sd, { 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); } @@ -408,5 +402,3 @@ transfer_to_str (unsigned transfer) default: return "(error)"; } } - -