2002-06-11 Daniel Jacobowitz <drow@mvista.com>
[deliverable/binutils-gdb.git] / gdb / gdbserver / server.h
CommitLineData
c906108c 1/* Common definitions for remote server for GDB.
0a30fbc4 2 Copyright 1993, 1995, 1997, 1998, 1999, 2000, 2002
b6ba6518 3 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
19 Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, 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
0729219d
DJ
37#ifndef ATTR_NORETURN
38#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
39#define ATTR_NORETURN __attribute__ ((noreturn))
40#else
41#define ATTR_NORETURN /* nothing */
42#endif
43#endif
44
45#ifndef ATTR_FORMAT
46#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4))
47#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y)))
48#else
49#define ATTR_FORMAT(type, x, y) /* nothing */
50#endif
51#endif
52
53/* FIXME: This should probably be autoconf'd for. It's an integer type at
54 least the size of a (void *). */
0a30fbc4
DJ
55typedef long long CORE_ADDR;
56
0d62e5e8
DJ
57/* Generic information for tracking a list of ``inferiors'' - threads,
58 processes, etc. */
59struct inferior_list
60{
61 struct inferior_list_entry *head;
62 struct inferior_list_entry *tail;
63};
64struct inferior_list_entry
65{
66 int id;
67 struct inferior_list_entry *next;
68};
69
70/* Opaque type for user-visible threads. */
71struct thread_info;
c04a1aa8 72
0a30fbc4 73#include "regcache.h"
0e98d0a7 74#include "gdb/signals.h"
0a30fbc4 75
ce3a066d 76#include "target.h"
611cb4a5 77#include "mem-break.h"
c906108c
SS
78
79/* Target-specific functions */
80
4ce44c66 81void initialize_low ();
c906108c 82
ce3a066d
DJ
83/* From inferiors.c. */
84
0d62e5e8
DJ
85extern struct inferior_list all_threads;
86void add_inferior_to_list (struct inferior_list *list,
87 struct inferior_list_entry *new_inferior);
88void for_each_inferior (struct inferior_list *list,
89 void (*action) (struct inferior_list_entry *));
90extern struct thread_info *current_inferior;
91void remove_inferior (struct inferior_list *list,
92 struct inferior_list_entry *entry);
93void remove_thread (struct thread_info *thread);
94void add_thread (int thread_id, void *target_data);
ce3a066d 95void clear_inferiors (void);
0d62e5e8
DJ
96struct inferior_list_entry *find_inferior
97 (struct inferior_list *,
98 int (*func) (struct inferior_list_entry *,
99 void *),
100 void *arg);
101struct inferior_list_entry *find_inferior_id (struct inferior_list *list,
102 int id);
103void *inferior_target_data (struct thread_info *);
104void set_inferior_target_data (struct thread_info *, void *);
105void *inferior_regcache_data (struct thread_info *);
106void set_inferior_regcache_data (struct thread_info *, void *);
107void change_inferior_id (struct inferior_list *list,
108 int new_id);
ce3a066d 109
c906108c
SS
110/* Public variables in server.c */
111
112extern int cont_thread;
113extern int general_thread;
0d62e5e8 114extern int step_thread;
c906108c
SS
115extern int thread_from_wait;
116extern int old_thread_from_wait;
0d62e5e8 117extern int server_waiting;
c906108c
SS
118
119extern jmp_buf toplevel;
c906108c
SS
120
121/* Functions from remote-utils.c */
122
a14ed312
KB
123int putpkt (char *buf);
124int getpkt (char *buf);
125void remote_open (char *name);
126void remote_close (void);
127void write_ok (char *buf);
128void write_enn (char *buf);
129void enable_async_io (void);
130void disable_async_io (void);
131void convert_ascii_to_int (char *from, char *to, int n);
132void convert_int_to_ascii (char *from, char *to, int n);
0d62e5e8
DJ
133void new_thread_notify (int id);
134void dead_thread_notify (int id);
a14ed312 135void prepare_resume_reply (char *buf, char status, unsigned char sig);
c906108c 136
a14ed312
KB
137void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr,
138 unsigned int *len_ptr);
139void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr,
140 unsigned int *len_ptr, char *to);
c906108c 141
ce3a066d
DJ
142int unhexify (char *bin, const char *hex, int count);
143int hexify (char *hex, const char *bin, int count);
144
2f2893d9 145int look_up_one_symbol (const char *name, CORE_ADDR *addrp);
ce3a066d 146
0e98d0a7
DJ
147/* Functions from ``signals.c''. */
148enum target_signal target_signal_from_host (int hostsig);
149int target_signal_to_host_p (enum target_signal oursig);
150int target_signal_to_host (enum target_signal oursig);
c906108c
SS
151
152/* Functions from utils.c */
153
a14ed312 154void perror_with_name (char *string);
0729219d
DJ
155void error (const char *string,...) ATTR_NORETURN;
156void fatal (const char *string,...) ATTR_NORETURN;
0a30fbc4
DJ
157void warning (const char *string,...);
158
0729219d 159/* Functions from the register cache definition. */
5c44784c 160
0729219d 161void init_registers (void);
5c44784c
JM
162
163/* Maximum number of bytes to read/write at once. The value here
164 is chosen to fill up a packet (the headers account for the 32). */
165#define MAXBUFBYTES(N) (((N)-32)/2)
166
167/* Buffer sizes for transferring memory, registers, etc. Round up PBUFSIZ to
168 hold all the registers, at least. */
0a30fbc4
DJ
169#define PBUFSIZ ((registers_length () + 32 > 2000) \
170 ? (registers_length () + 32) \
5c44784c 171 : 2000)
0a30fbc4
DJ
172
173#endif /* SERVER_H */
This page took 0.175019 seconds and 4 git commands to generate.