daily update
[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
0a30fbc4
DJ
27#include <stdarg.h>
28#include <stdio.h>
29#include <stdlib.h>
30#include <errno.h>
0729219d 31#include <setjmp.h>
0a30fbc4 32
d64b8841
DJ
33#ifdef HAVE_STRING_H
34#include <string.h>
35#endif
36
e122f1f5 37#if !HAVE_DECL_STRERROR
43d5792c
DJ
38#ifndef strerror
39extern char *strerror (int); /* X3.159-1989 4.11.6.2 */
40#endif
41#endif
42
0729219d
DJ
43#ifndef ATTR_NORETURN
44#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
45#define ATTR_NORETURN __attribute__ ((noreturn))
46#else
47#define ATTR_NORETURN /* nothing */
48#endif
49#endif
50
51#ifndef ATTR_FORMAT
52#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4))
53#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y)))
54#else
55#define ATTR_FORMAT(type, x, y) /* nothing */
56#endif
57#endif
58
01f9e8fa
DJ
59/* A type used for binary buffers. */
60typedef unsigned char gdb_byte;
61
0729219d
DJ
62/* FIXME: This should probably be autoconf'd for. It's an integer type at
63 least the size of a (void *). */
0a30fbc4
DJ
64typedef long long CORE_ADDR;
65
0d62e5e8
DJ
66/* Generic information for tracking a list of ``inferiors'' - threads,
67 processes, etc. */
68struct inferior_list
69{
70 struct inferior_list_entry *head;
71 struct inferior_list_entry *tail;
72};
73struct inferior_list_entry
74{
a1928bad 75 unsigned long id;
0d62e5e8
DJ
76 struct inferior_list_entry *next;
77};
78
79/* Opaque type for user-visible threads. */
80struct thread_info;
c04a1aa8 81
0a30fbc4 82#include "regcache.h"
0e98d0a7 83#include "gdb/signals.h"
0a30fbc4 84
ce3a066d 85#include "target.h"
611cb4a5 86#include "mem-break.h"
c906108c
SS
87
88/* Target-specific functions */
89
4ce44c66 90void initialize_low ();
c906108c 91
ce3a066d
DJ
92/* From inferiors.c. */
93
0d62e5e8
DJ
94extern struct inferior_list all_threads;
95void add_inferior_to_list (struct inferior_list *list,
96 struct inferior_list_entry *new_inferior);
97void for_each_inferior (struct inferior_list *list,
98 void (*action) (struct inferior_list_entry *));
99extern struct thread_info *current_inferior;
100void remove_inferior (struct inferior_list *list,
101 struct inferior_list_entry *entry);
102void remove_thread (struct thread_info *thread);
a06660f7
DJ
103void add_thread (unsigned long thread_id, void *target_data, unsigned int);
104unsigned int thread_id_to_gdb_id (unsigned long);
105unsigned int thread_to_gdb_id (struct thread_info *);
106unsigned long gdb_id_to_thread_id (unsigned int);
dae5f5cf 107struct thread_info *gdb_id_to_thread (unsigned int);
ce3a066d 108void clear_inferiors (void);
0d62e5e8
DJ
109struct inferior_list_entry *find_inferior
110 (struct inferior_list *,
111 int (*func) (struct inferior_list_entry *,
112 void *),
113 void *arg);
114struct inferior_list_entry *find_inferior_id (struct inferior_list *list,
a1928bad 115 unsigned long id);
0d62e5e8
DJ
116void *inferior_target_data (struct thread_info *);
117void set_inferior_target_data (struct thread_info *, void *);
118void *inferior_regcache_data (struct thread_info *);
119void set_inferior_regcache_data (struct thread_info *, void *);
120void change_inferior_id (struct inferior_list *list,
a1928bad 121 unsigned long new_id);
ce3a066d 122
c906108c
SS
123/* Public variables in server.c */
124
a1928bad
DJ
125extern unsigned long cont_thread;
126extern unsigned long general_thread;
127extern unsigned long step_thread;
128extern unsigned long thread_from_wait;
129extern unsigned long old_thread_from_wait;
0d62e5e8 130extern int server_waiting;
c74d0ad8 131extern int debug_threads;
89be2091 132extern int pass_signals[];
c906108c
SS
133
134extern jmp_buf toplevel;
c906108c 135
ea025f5f
DJ
136/* From remote-utils.c */
137
c74d0ad8 138extern int remote_debug;
ea025f5f 139extern int all_symbols_looked_up;
c906108c 140
a14ed312 141int putpkt (char *buf);
01f9e8fa 142int putpkt_binary (char *buf, int len);
a14ed312
KB
143int getpkt (char *buf);
144void remote_open (char *name);
145void remote_close (void);
146void write_ok (char *buf);
147void write_enn (char *buf);
148void enable_async_io (void);
149void disable_async_io (void);
62ea82f5
DJ
150void unblock_async_io (void);
151void block_async_io (void);
f450004a
DJ
152void convert_ascii_to_int (char *from, unsigned char *to, int n);
153void convert_int_to_ascii (unsigned char *from, char *to, int n);
0d62e5e8
DJ
154void new_thread_notify (int id);
155void dead_thread_notify (int id);
a14ed312 156void prepare_resume_reply (char *buf, char status, unsigned char sig);
c906108c 157
89be2091 158const char *decode_address_to_semicolon (CORE_ADDR *addrp, const char *start);
dae5f5cf 159void decode_address (CORE_ADDR *addrp, const char *start, int len);
a14ed312
KB
160void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr,
161 unsigned int *len_ptr);
162void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr,
f450004a 163 unsigned int *len_ptr, unsigned char *to);
01f9e8fa
DJ
164int decode_X_packet (char *from, int packet_len, CORE_ADDR * mem_addr_ptr,
165 unsigned int *len_ptr, unsigned char *to);
c906108c 166
ce3a066d
DJ
167int unhexify (char *bin, const char *hex, int count);
168int hexify (char *hex, const char *bin, int count);
01f9e8fa
DJ
169int remote_escape_output (const gdb_byte *buffer, int len,
170 gdb_byte *out_buf, int *out_len,
171 int out_maxlen);
ce3a066d 172
2f2893d9 173int look_up_one_symbol (const char *name, CORE_ADDR *addrp);
ce3a066d 174
bce7165d 175void monitor_output (const char *msg);
c74d0ad8 176
0e98d0a7
DJ
177/* Functions from ``signals.c''. */
178enum target_signal target_signal_from_host (int hostsig);
179int target_signal_to_host_p (enum target_signal oursig);
180int target_signal_to_host (enum target_signal oursig);
b80864fb 181char *target_signal_to_name (enum target_signal);
c906108c
SS
182
183/* Functions from utils.c */
184
a14ed312 185void perror_with_name (char *string);
bee0189a
DJ
186void error (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
187void fatal (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
188void warning (const char *string,...) ATTR_FORMAT (printf, 1, 2);
0a30fbc4 189
0729219d 190/* Functions from the register cache definition. */
5c44784c 191
0729219d 192void init_registers (void);
5c44784c
JM
193
194/* Maximum number of bytes to read/write at once. The value here
195 is chosen to fill up a packet (the headers account for the 32). */
196#define MAXBUFBYTES(N) (((N)-32)/2)
197
198/* Buffer sizes for transferring memory, registers, etc. Round up PBUFSIZ to
199 hold all the registers, at least. */
0a30fbc4
DJ
200#define PBUFSIZ ((registers_length () + 32 > 2000) \
201 ? (registers_length () + 32) \
5c44784c 202 : 2000)
0a30fbc4 203
dd24457d
DJ
204/* Version information, from version.c. */
205extern const char version[];
206extern const char host_name[];
207
0a30fbc4 208#endif /* SERVER_H */
This page took 0.671901 seconds and 4 git commands to generate.