* parse.c (write_dollar_variable): New function.
[deliverable/binutils-gdb.git] / gdb / remote-sim.h
CommitLineData
b562a186 1/* This file defines the interface between the simulator and gdb.
47424e79 2 Copyright (C) 1993, 1994 Free Software Foundation, Inc.
b562a186
DE
3
4This file is part of GDB.
5
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with this program; if not, write to the Free Software
6c9638b4 18Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
b562a186
DE
19
20#if !defined (REMOTE_SIM_H)
21#define REMOTE_SIM_H 1
22
c7efaa16
DE
23/* This file is used when building stand-alone simulators, so isolate this
24 file from gdb. */
25
26/* Pick up CORE_ADDR_TYPE if defined (from gdb), otherwise use same value as
27 gdb does (unsigned int - from defs.h). */
28
29#ifndef CORE_ADDR_TYPE
30typedef unsigned int SIM_ADDR;
31#else
32typedef CORE_ADDR_TYPE SIM_ADDR;
33#endif
34
47424e79
DE
35/* Callbacks.
36 The simulator may use the following callbacks (gdb routines) which the
37 standalone program must provide.
b562a186 38
47424e79
DE
39 void printf_filtered (char *msg, ...);
40 void error /-* noreturn *-/ (char *msg, ...);
41 void *xmalloc (long size);
cc274a2e 42 int sim_callback_write_stdout (char *, int len);
47424e79 43*/
b562a186
DE
44
45/* Main simulator entry points ...
46
47424e79
DE
47 All functions that can get an error must call the gdb routine `error',
48 they can only return upon success. */
b562a186
DE
49
50/* Initialize the simulator. This function is called when the simulator
51 is selected from the command line. ARGS is passed from the command line
52 and can be used to select whatever run time options the simulator provides.
47424e79
DE
53 ARGS is the raw character string and must be parsed by the simulator,
54 which is trivial to do with the buildargv function in libiberty.
55 It is ok to do nothing. */
40b92220 56
47424e79 57void sim_open PARAMS ((char *args));
b562a186 58
47424e79
DE
59/* Terminate usage of the simulator. This may involve freeing target memory
60 and closing any open files and mmap'd areas. You cannot assume sim_kill
61 has already been called.
62 QUITTING is non-zero if we cannot hang on errors. */
b562a186 63
47424e79 64void sim_close PARAMS ((int quitting));
b562a186 65
47424e79
DE
66/* Load program PROG into the simulator.
67 Return non-zero if you wish the caller to handle it
68 (it is done this way because most simulators can use gr_load_image,
69 but defining it as a callback seems awkward). */
b562a186 70
47424e79 71int sim_load PARAMS ((char *prog, int from_tty));
b562a186 72
47424e79
DE
73/* Prepare to run the simulated program.
74 START_ADDRESS is, yes, you guessed it, the start address of the program.
75 ARGV and ENV are NULL terminated lists of pointers.
76 Gdb will set the start address via sim_store_register as well, but
77 standalone versions of existing simulators are not set up to cleanly call
78 sim_store_register, so the START_ADDRESS argument is there as a
79 workaround. */
b562a186 80
47424e79
DE
81void sim_create_inferior PARAMS ((SIM_ADDR start_address,
82 char **argv, char **env));
b562a186
DE
83
84/* Kill the running program.
85 This may involve closing any open files and deleting any mmap'd areas. */
86
47424e79 87void sim_kill PARAMS ((void));
b562a186 88
592f517a
DE
89/* Read LENGTH bytes of the simulated program's memory and store in BUF.
90 Result is number of bytes read, or zero if error. */
b562a186 91
c7efaa16 92int sim_read PARAMS ((SIM_ADDR mem, unsigned char *buf, int length));
b562a186 93
592f517a
DE
94/* Store LENGTH bytes from BUF in the simulated program's memory.
95 Result is number of bytes write, or zero if error. */
b562a186 96
c7efaa16 97int sim_write PARAMS ((SIM_ADDR mem, unsigned char *buf, int length));
b562a186 98
47424e79 99/* Fetch register REGNO and store the raw value in BUF. */
b562a186 100
47424e79
DE
101void sim_fetch_register PARAMS ((int regno, unsigned char *buf));
102
103/* Store register REGNO from BUF (in raw format). */
b562a186 104
47424e79
DE
105void sim_store_register PARAMS ((int regno, unsigned char *buf));
106
107/* Print some interesting information about the simulator.
108 VERBOSE is non-zero for the wordy version. */
b562a186 109
47424e79 110void sim_info PARAMS ((int verbose));
b562a186 111
592f517a
DE
112/* Fetch why the program stopped.
113 SIGRC will contain either the argument to exit() or the signal number. */
b562a186 114
592f517a
DE
115enum sim_stop { sim_exited, sim_stopped, sim_signalled };
116
47424e79 117void sim_stop_reason PARAMS ((enum sim_stop *reason, int *sigrc));
b562a186
DE
118
119/* Run (or resume) the program. */
120
47424e79 121void sim_resume PARAMS ((int step, int siggnal));
b562a186 122
fb506180
SS
123/* Passthru for other commands that the simulator might support. */
124
125void sim_do_command PARAMS ((char *cmd));
126
6b009ef6
SC
127
128/* Callbacks for the simulator to use. */
129
cc274a2e 130int sim_callback_write_stdout PARAMS ((char *, int));
6b009ef6 131
b562a186 132#endif /* !defined (REMOTE_SIM_H) */
This page took 0.16651 seconds and 4 git commands to generate.