aboutsummaryrefslogtreecommitdiff
path: root/sim/common
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>1997-08-27 04:45:59 +0000
committerAndrew Cagney <cagney@redhat.com>1997-08-27 04:45:59 +0000
commit230a95ce5a67898210a4a9654c4dfd5e685ca672 (patch)
treeba37e87106c571ff18ce45851fd7a3f3b5f5fa12 /sim/common
parentfafce69ab16b45fb1ac6bd2ec5afc8e8dbed0374 (diff)
downloadgdb-230a95ce5a67898210a4a9654c4dfd5e685ca672.zip
gdb-230a95ce5a67898210a4a9654c4dfd5e685ca672.tar.gz
gdb-230a95ce5a67898210a4a9654c4dfd5e685ca672.tar.bz2
New file - generic implementation of sim_load for hardware only
simulators.
Diffstat (limited to 'sim/common')
-rw-r--r--sim/common/sim-hload.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/sim/common/sim-hload.c b/sim/common/sim-hload.c
new file mode 100644
index 0000000..c342245
--- /dev/null
+++ b/sim/common/sim-hload.c
@@ -0,0 +1,53 @@
+/* Generic load for hardware simulator models.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ Contributed by Cygnus Support.
+
+This file is part of GDB, the GNU debugger.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "sim-main.h"
+#include "bfd.h"
+#include "sim-utils.h"
+#include "sim-assert.h"
+
+
+/* Generic implementation of sim_load that works with simulators
+ modeling a hardware platform. */
+
+SIM_RC
+sim_load (sd, prog_name, prog_bfd, from_tty)
+ SIM_DESC sd;
+ char *prog_name;
+ struct _bfd *prog_bfd;
+ int from_tty;
+{
+ bfd *result_bfd;
+ if (sim_analyze_program (sd, prog_name, prog_bfd) != SIM_RC_OK)
+ return SIM_RC_FAIL;
+ SIM_ASSERT (STATE_PROG_BFD (sd) != NULL);
+ result_bfd = sim_load_file (sd, STATE_MY_NAME (sd),
+ STATE_CALLBACK (sd),
+ NULL,
+ STATE_PROG_BFD (sd),
+ STATE_OPEN_KIND (sd) == SIM_OPEN_DEBUG);
+ if (result_bfd == NULL)
+ {
+ bfd_close (STATE_PROG_BFD (sd));
+ STATE_PROG_BFD (sd) = NULL;
+ return SIM_RC_FAIL;
+ }
+ return SIM_RC_OK;
+}