2007-07-17 Pedro Alves <pedro_alves@portugalmail.pt>
[deliverable/binutils-gdb.git] / gdb / gdbserver / server.h
CommitLineData
c906108c 1/* Common definitions for remote server for GDB.
ea025f5f 2 Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005,
6aba47ca 3 2006, 2007 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
c906108c 11
c5aa993b
JM
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
c906108c 16
c5aa993b
JM
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
6f0f660e
EZ
19 Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA. */
c906108c 21
0a30fbc4
DJ
22#ifndef SERVER_H
23#define SERVER_H
24
25#include "config.h"
0729219d 26
68070c10
PA
27#ifdef __MINGW32CE__
28#include "wincecompat.h"
29#endif
30
0a30fbc4
DJ
31#include <stdarg.h>
32#include <stdio.h>
33#include <stdlib.h>
68070c10 34#ifdef HAVE_ERRNO_H
0a30fbc4 35#include <errno.h>
68070c10 36#endif
0729219d 37#include <setjmp.h>
0a30fbc4 38
d64b8841
DJ
39#ifdef HAVE_STRING_H
40#include <string.h>
41#endif
42
e122f1f5 43#if !HAVE_DECL_STRERROR
43d5792c
DJ
44#ifndef strerror
45extern char *strerror (int); /* X3.159-1989 4.11.6.2 */
46#endif
47#endif
48
68070c10
PA
49#if !HAVE_DECL_PERROR
50#ifndef perror
51extern void perror (const char *);
52#endif
53#endif
54
0729219d
DJ
55#ifndef ATTR_NORETURN
56#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
57#define ATTR_NORETURN __attribute__ ((noreturn))
58#else
59#define ATTR_NORETURN /* nothing */
60#endif
61#endif
62
63#ifndef ATTR_FORMAT
64#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4))
65#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y)))
66#else
67#define ATTR_FORMAT(type, x, y) /* nothing */
68#endif
69#endif
70
01f9e8fa
DJ
71/* A type used for binary buffers. */
72typedef unsigned char gdb_byte;
73
0729219d
DJ
74/* FIXME: This should probably be autoconf'd for. It's an integer type at
75 least the size of a (void *). */
0a30fbc4
DJ
76typedef long long CORE_ADDR;
77
0d62e5e8
DJ
78/* Generic information for tracking a list of ``inferiors'' - threads,
79 processes, etc. */
80struct inferior_list
81{
82 struct inferior_list_entry *head;
83 struct inferior_list_entry *tail;
84};
85struct inferior_list_entry
86{
a1928bad 87 unsigned long id;
0d62e5e8
DJ
88 struct inferior_list_entry *next;
89};
90
91/* Opaque type for user-visible threads. */
92struct thread_info;
c04a1aa8 93
255e7678
DJ
94struct dll_info
95{
96 struct inferior_list_entry entry;
97 char *name;
98 CORE_ADDR base_addr;
99};
100
0a30fbc4 101#include "regcache.h"
0e98d0a7 102#include "gdb/signals.h"
0a30fbc4 103
ce3a066d 104#include "target.h"
611cb4a5 105#include "mem-break.h"
c906108c
SS
106
107/* Target-specific functions */
108
4ce44c66 109void initialize_low ();
c906108c 110
ce3a066d
DJ
111/* From inferiors.c. */
112
0d62e5e8 113extern struct inferior_list all_threads;
255e7678
DJ
114extern struct inferior_list all_dlls;
115extern int dlls_changed;
116
0d62e5e8
DJ
117void add_inferior_to_list (struct inferior_list *list,
118 struct inferior_list_entry *new_inferior);
119void for_each_inferior (struct inferior_list *list,
120 void (*action) (struct inferior_list_entry *));
121extern struct thread_info *current_inferior;
122void remove_inferior (struct inferior_list *list,
123 struct inferior_list_entry *entry);
124void remove_thread (struct thread_info *thread);
a06660f7
DJ
125void add_thread (unsigned long thread_id, void *target_data, unsigned int);
126unsigned int thread_id_to_gdb_id (unsigned long);
127unsigned int thread_to_gdb_id (struct thread_info *);
128unsigned long gdb_id_to_thread_id (unsigned int);
dae5f5cf 129struct thread_info *gdb_id_to_thread (unsigned int);
ce3a066d 130void clear_inferiors (void);
0d62e5e8
DJ
131struct inferior_list_entry *find_inferior
132 (struct inferior_list *,
133 int (*func) (struct inferior_list_entry *,
134 void *),
135 void *arg);
136struct inferior_list_entry *find_inferior_id (struct inferior_list *list,
a1928bad 137 unsigned long id);
0d62e5e8
DJ
138void *inferior_target_data (struct thread_info *);
139void set_inferior_target_data (struct thread_info *, void *);
140void *inferior_regcache_data (struct thread_info *);
141void set_inferior_regcache_data (struct thread_info *, void *);
142void change_inferior_id (struct inferior_list *list,
a1928bad 143 unsigned long new_id);
ce3a066d 144
255e7678
DJ
145void loaded_dll (const char *name, CORE_ADDR base_addr);
146void unloaded_dll (const char *name, CORE_ADDR base_addr);
147
c906108c
SS
148/* Public variables in server.c */
149
a1928bad
DJ
150extern unsigned long cont_thread;
151extern unsigned long general_thread;
152extern unsigned long step_thread;
153extern unsigned long thread_from_wait;
154extern unsigned long old_thread_from_wait;
0d62e5e8 155extern int server_waiting;
c74d0ad8 156extern int debug_threads;
89be2091 157extern int pass_signals[];
c906108c
SS
158
159extern jmp_buf toplevel;
c906108c 160
ea025f5f
DJ
161/* From remote-utils.c */
162
c74d0ad8 163extern int remote_debug;
ea025f5f 164extern int all_symbols_looked_up;
c906108c 165
a14ed312 166int putpkt (char *buf);
01f9e8fa 167int putpkt_binary (char *buf, int len);
a14ed312
KB
168int getpkt (char *buf);
169void remote_open (char *name);
170void remote_close (void);
171void write_ok (char *buf);
172void write_enn (char *buf);
173void enable_async_io (void);
174void disable_async_io (void);
62ea82f5
DJ
175void unblock_async_io (void);
176void block_async_io (void);
7390519e 177void check_remote_input_interrupt_request (void);
f450004a
DJ
178void convert_ascii_to_int (char *from, unsigned char *to, int n);
179void convert_int_to_ascii (unsigned char *from, char *to, int n);
0d62e5e8
DJ
180void new_thread_notify (int id);
181void dead_thread_notify (int id);
a14ed312 182void prepare_resume_reply (char *buf, char status, unsigned char sig);
c906108c 183
89be2091 184const char *decode_address_to_semicolon (CORE_ADDR *addrp, const char *start);
dae5f5cf 185void decode_address (CORE_ADDR *addrp, const char *start, int len);
a14ed312
KB
186void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr,
187 unsigned int *len_ptr);
188void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr,
f450004a 189 unsigned int *len_ptr, unsigned char *to);
01f9e8fa
DJ
190int decode_X_packet (char *from, int packet_len, CORE_ADDR * mem_addr_ptr,
191 unsigned int *len_ptr, unsigned char *to);
0e7f50da
UW
192int decode_xfer_write (char *buf, int packet_len, char **annex,
193 CORE_ADDR *offset, unsigned int *len,
194 unsigned char *data);
c906108c 195
ce3a066d
DJ
196int unhexify (char *bin, const char *hex, int count);
197int hexify (char *hex, const char *bin, int count);
01f9e8fa
DJ
198int remote_escape_output (const gdb_byte *buffer, int len,
199 gdb_byte *out_buf, int *out_len,
200 int out_maxlen);
ce3a066d 201
2f2893d9 202int look_up_one_symbol (const char *name, CORE_ADDR *addrp);
ce3a066d 203
bce7165d 204void monitor_output (const char *msg);
c74d0ad8 205
255e7678
DJ
206char *xml_escape_text (const char *text);
207
0e98d0a7
DJ
208/* Functions from ``signals.c''. */
209enum target_signal target_signal_from_host (int hostsig);
210int target_signal_to_host_p (enum target_signal oursig);
211int target_signal_to_host (enum target_signal oursig);
b80864fb 212char *target_signal_to_name (enum target_signal);
c906108c
SS
213
214/* Functions from utils.c */
215
a14ed312 216void perror_with_name (char *string);
bee0189a
DJ
217void error (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
218void fatal (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
219void warning (const char *string,...) ATTR_FORMAT (printf, 1, 2);
0a30fbc4 220
0729219d 221/* Functions from the register cache definition. */
5c44784c 222
0729219d 223void init_registers (void);
5c44784c
JM
224
225/* Maximum number of bytes to read/write at once. The value here
226 is chosen to fill up a packet (the headers account for the 32). */
227#define MAXBUFBYTES(N) (((N)-32)/2)
228
229/* Buffer sizes for transferring memory, registers, etc. Round up PBUFSIZ to
230 hold all the registers, at least. */
0a30fbc4
DJ
231#define PBUFSIZ ((registers_length () + 32 > 2000) \
232 ? (registers_length () + 32) \
5c44784c 233 : 2000)
0a30fbc4 234
dd24457d
DJ
235/* Version information, from version.c. */
236extern const char version[];
237extern const char host_name[];
238
0a30fbc4 239#endif /* SERVER_H */
This page took 0.7739 seconds and 4 git commands to generate.