107
107
If debug info not found for this pc, assumes arm */
108
108
extern Addr thumb_pc (Addr pc);
110
/* True if gdbserver is single stepping the valgrind process */
111
extern Bool valgrind_single_stepping(void);
113
/* Set Valgrind in single stepping mode or not according to Bool. */
114
extern void valgrind_set_single_stepping(Bool);
116
/* gets the addr at which a (possible) break must be ignored once.
117
If there is no such break to be ignored once, 0 is returned.
118
This is needed for the following case:
119
The user sets a break at address AAA.
120
The break is encountered. Then the user does stepi
121
(i.e. step one instruction).
122
In such a case, the already encountered break must be ignored
123
to ensure the stepi will advance by one instruction: a "break"
124
is implemented in valgrind by some helper code just after the
125
instruction mark at which the break is set. This helper code
126
verifies if either there is a break at the current PC
127
or if we are in stepping mode. If we are in stepping mode,
128
the already encountered break must be ignored once to advance
129
to the next instruction.
130
??? need to check if this is *really* needed. */
131
extern Addr valgrind_get_ignore_break_once(void);
133
/* When addr > 0, ensures the next stop reply packet informs
134
gdb about the encountered watchpoint.
135
Use addr 0x0 to reset. */
136
extern void VG_(set_watchpoint_stop_address) (Addr addr);
138
110
/* when invoked by vgdb using ptrace, contains the tid chosen
139
111
by vgdb (if vgdb gives a tid different of 0: a 0 tid by
140
112
vgdb means use the running_tid if there is one running
230
202
gdbserver by calling call_gdbserver.
231
203
On return, call gdbserver_deliver_signal to effectively
232
204
deliver the signal or not. */
233
extern void gdbserver_signal_encountered (Int sigNo);
205
extern void gdbserver_signal_encountered (Int vki_sigNo);
234
206
/* between these two calls, call call_gdbserver */
235
207
/* If gdbserver_deliver_signal True, then gdb did not ask
236
208
to ignore the signal, so signal can be delivered to the guest. */
237
extern Bool gdbserver_deliver_signal (Int sigNo);
209
extern Bool gdbserver_deliver_signal (Int vki_sigNo);
239
211
/* To optimise signal handling, gdb can instruct gdbserver to
240
not stop on some signals. In the below, a 1 indicates the signal
212
not stop on some signals. In the below, a 1 indicates the gdb_nr signal
241
213
has to be passed directly to the guest, without asking gdb.
242
214
A 0 indicates gdb has to be consulted to see if signal has
243
215
or has not to be passed. The gdb consultation is to
244
216
be done using the above two functions. */
245
extern int pass_signals[];
217
extern int pass_signals[]; /* indexed by gdb signal nr */
248
220
#include "target.h"
250
222
/* Target-specific functions */
252
void initialize_low (void);
254
/* initialize or re-initialize the register set of the low target.
255
if shadow_mode, then (re-)define the normal and valgrind shadow registers
256
else (re-)define only the normal registers. */
257
void initialize_shadow_low (Bool shadow_mode);
259
224
/* From inferiors.c. */
261
226
extern struct inferior_list all_threads;
324
289
int unhexify (char *bin, const char *hex, int count);
325
290
int hexify (char *hex, const char *bin, int count);
291
/* heximage builds an image of bin according to byte order of the architecture
292
Useful for register and int image */
293
char* heximage (char *buf, char *bin, int count);
295
/* convert from CORE_ADDR to void* */
296
void* C2v(CORE_ADDR addr);
326
299
int remote_escape_output (const gdb_byte *buffer, int len,
327
300
gdb_byte *out_buf, int *out_len,