diff options
author | David Edelsohn <dje.gcc@gmail.com> | 1994-05-18 20:42:06 +0000 |
---|---|---|
committer | David Edelsohn <dje.gcc@gmail.com> | 1994-05-18 20:42:06 +0000 |
commit | 47424e7931938245de9422e58d78a8cc2c6a6fd9 (patch) | |
tree | 59c64681c1947ccd93a2a29b33bd5a49fb9a131e /gdb/remote-sim.c | |
parent | bc67bf9606ef34a3d1dd4c0c8a11c29323b72dbd (diff) | |
download | gdb-47424e7931938245de9422e58d78a8cc2c6a6fd9.zip gdb-47424e7931938245de9422e58d78a8cc2c6a6fd9.tar.gz gdb-47424e7931938245de9422e58d78a8cc2c6a6fd9.tar.bz2 |
* remote-sim.h (sim_verbose): Delete.
Document callbacks needed.
(sim_*): Change result to void where there isn't one.
(sim_open): Clarify argument and error response.
(sim_close): Declare.
(sim_load): Change bfd_handle argument to file name. Clarify result.
(sim_create_inferior): Renamed from sim_set_args.
(sim_set_pc): Delete.
(sim_info): Delete printf_fn argument.
* remote-sim.c (gdbsim_kill): Add comment describing purpose.
(gdbsim_load): Try sim_load first.
(gdbsim_create_inferior): Call sim_create_inferior.
(gdbsim_open): Handle args == NULL. Update call to sim_open.
(gdbsim_close): Call sim_close.
(gdbsim_files_info): Update call to sim_info.
(gdbsim_ops): Realign comments.
Diffstat (limited to 'gdb/remote-sim.c')
-rw-r--r-- | gdb/remote-sim.c | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c index 6d4333d..2a3e527 100644 --- a/gdb/remote-sim.c +++ b/gdb/remote-sim.c @@ -1,7 +1,7 @@ /* Generic remote debugging interface for simulators. - Copyright 1993 Free Software Foundation, Inc. + Copyright 1993, 1994 Free Software Foundation, Inc. Contributed by Cygnus Support. - Steve Chamberlain (sac@cygnus.com) and Doug Evans (dje@cygnus.com). + Steve Chamberlain (sac@cygnus.com). This file is part of GDB. @@ -119,6 +119,9 @@ int regno; } } +/* Kill the running program. This may involve closing any open files + and releasing other resources acquired by the simulated program. */ + static void gdbsim_kill () { @@ -141,9 +144,13 @@ gdbsim_load (prog, fromtty) if (sr_get_debug ()) printf_filtered ("gdbsim_load: prog \"%s\"\n", prog); - inferior_pid = 0; + inferior_pid = 0; + + /* This must be done before calling gr_load_image. */ program_loaded = 1; - gr_load_image (prog, fromtty); + + if (sim_load (prog, fromtty) != 0) + gr_load_image (prog, fromtty); } @@ -161,8 +168,9 @@ gdbsim_create_inferior (exec_file, args, env) char *args; char **env; { - int len,entry_pt; + int len; char *arg_buf,**argv; + CORE_ADDR entry_pt; if (! program_loaded) error ("No program loaded."); @@ -174,7 +182,7 @@ gdbsim_create_inferior (exec_file, args, env) if (exec_file == 0 || exec_bfd == 0) error ("No exec file specified."); - entry_pt = (int) bfd_get_start_address (exec_bfd); + entry_pt = (CORE_ADDR) bfd_get_start_address (exec_bfd); gdbsim_kill (NULL, NULL); remove_breakpoints (); @@ -188,11 +196,7 @@ gdbsim_create_inferior (exec_file, args, env) strcat (arg_buf, args); argv = buildargv (arg_buf); make_cleanup (freeargv, (char *) argv); - /* FIXME: remote-sim.h says targets that don't support this return - non-zero. Perhaps distinguish between "not supported" and other errors? - Or maybe that can be the only error. */ - if (sim_set_args (argv, env) != 0) - return; + sim_create_inferior (entry_pt, argv, env); inferior_pid = 42; insert_breakpoints (); /* Needed to get correct instruction in cache */ @@ -210,15 +214,9 @@ gdbsim_open (args, from_tty) int from_tty; { if (sr_get_debug ()) - printf_filtered ("gdbsim_open: args \"%s\"\n", args); + printf_filtered ("gdbsim_open: args \"%s\"\n", args ? args : "(null)"); - if (sim_open (args) != 0) - { - /* FIXME: This is totally bogus. sim_open should have a way to - tell us what the error was, so we can tell the user. */ - error ("Unable to initialize simulator (insufficient memory?)."); - return; - } + sim_open (args); push_target (&gdbsim_ops); target_fetch_registers (-1); @@ -244,8 +242,7 @@ gdbsim_close (quitting) program_loaded = 0; - /* FIXME: Need to call sim_close() to close all files and - delete all mappings. */ + sim_close (quitting); } /* Takes a program previously attached to and detaches it. @@ -384,7 +381,7 @@ gdbsim_files_info (target) { printf_filtered ("\tAttached to %s running program %s\n", target_shortname, file); - sim_info (printf_filtered, 0); + sim_info (0); } } @@ -415,10 +412,10 @@ struct target_ops gdbsim_ops = 0, 0, /* Breakpoints */ 0, 0, 0, 0, 0, /* Terminal handling */ gdbsim_kill, /* kill */ - gdbsim_load, + gdbsim_load, /* load */ 0, /* lookup_symbol */ - gdbsim_create_inferior, /* create_inferior */ - gdbsim_mourn_inferior, /* mourn_inferior */ + gdbsim_create_inferior, /* create_inferior */ + gdbsim_mourn_inferior, /* mourn_inferior */ 0, /* can_run */ 0, /* notice_signals */ process_stratum, 0, /* next */ |