]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/gdbserver/server.h
* inferiors.c (struct thread_info): Add gdb_id.
[thirdparty/binutils-gdb.git] / gdb / gdbserver / server.h
CommitLineData
c906108c 1/* Common definitions for remote server for GDB.
a1928bad 2 Copyright 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005
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
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
59/* FIXME: This should probably be autoconf'd for. It's an integer type at
60 least the size of a (void *). */
0a30fbc4
DJ
61typedef long long CORE_ADDR;
62
0d62e5e8
DJ
63/* Generic information for tracking a list of ``inferiors'' - threads,
64 processes, etc. */
65struct inferior_list
66{
67 struct inferior_list_entry *head;
68 struct inferior_list_entry *tail;
69};
70struct inferior_list_entry
71{
a1928bad 72 unsigned long id;
0d62e5e8
DJ
73 struct inferior_list_entry *next;
74};
75
76/* Opaque type for user-visible threads. */
77struct thread_info;
c04a1aa8 78
0a30fbc4 79#include "regcache.h"
0e98d0a7 80#include "gdb/signals.h"
0a30fbc4 81
ce3a066d 82#include "target.h"
611cb4a5 83#include "mem-break.h"
c906108c
SS
84
85/* Target-specific functions */
86
4ce44c66 87void initialize_low ();
c906108c 88
ce3a066d
DJ
89/* From inferiors.c. */
90
0d62e5e8
DJ
91extern struct inferior_list all_threads;
92void add_inferior_to_list (struct inferior_list *list,
93 struct inferior_list_entry *new_inferior);
94void for_each_inferior (struct inferior_list *list,
95 void (*action) (struct inferior_list_entry *));
96extern struct thread_info *current_inferior;
97void remove_inferior (struct inferior_list *list,
98 struct inferior_list_entry *entry);
99void remove_thread (struct thread_info *thread);
a06660f7
DJ
100void add_thread (unsigned long thread_id, void *target_data, unsigned int);
101unsigned int thread_id_to_gdb_id (unsigned long);
102unsigned int thread_to_gdb_id (struct thread_info *);
103unsigned long gdb_id_to_thread_id (unsigned int);
ce3a066d 104void clear_inferiors (void);
0d62e5e8
DJ
105struct inferior_list_entry *find_inferior
106 (struct inferior_list *,
107 int (*func) (struct inferior_list_entry *,
108 void *),
109 void *arg);
110struct inferior_list_entry *find_inferior_id (struct inferior_list *list,
a1928bad 111 unsigned long id);
0d62e5e8
DJ
112void *inferior_target_data (struct thread_info *);
113void set_inferior_target_data (struct thread_info *, void *);
114void *inferior_regcache_data (struct thread_info *);
115void set_inferior_regcache_data (struct thread_info *, void *);
116void change_inferior_id (struct inferior_list *list,
a1928bad 117 unsigned long new_id);
ce3a066d 118
c906108c
SS
119/* Public variables in server.c */
120
a1928bad
DJ
121extern unsigned long cont_thread;
122extern unsigned long general_thread;
123extern unsigned long step_thread;
124extern unsigned long thread_from_wait;
125extern unsigned long old_thread_from_wait;
0d62e5e8 126extern int server_waiting;
c906108c
SS
127
128extern jmp_buf toplevel;
c906108c
SS
129
130/* Functions from remote-utils.c */
131
a14ed312
KB
132int putpkt (char *buf);
133int getpkt (char *buf);
134void remote_open (char *name);
135void remote_close (void);
136void write_ok (char *buf);
137void write_enn (char *buf);
138void enable_async_io (void);
139void disable_async_io (void);
62ea82f5
DJ
140void unblock_async_io (void);
141void block_async_io (void);
f450004a
DJ
142void convert_ascii_to_int (char *from, unsigned char *to, int n);
143void convert_int_to_ascii (unsigned char *from, char *to, int n);
0d62e5e8
DJ
144void new_thread_notify (int id);
145void dead_thread_notify (int id);
a14ed312 146void prepare_resume_reply (char *buf, char status, unsigned char sig);
c906108c 147
a14ed312
KB
148void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr,
149 unsigned int *len_ptr);
150void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr,
f450004a 151 unsigned int *len_ptr, unsigned char *to);
c906108c 152
ce3a066d
DJ
153int unhexify (char *bin, const char *hex, int count);
154int hexify (char *hex, const char *bin, int count);
155
2f2893d9 156int look_up_one_symbol (const char *name, CORE_ADDR *addrp);
ce3a066d 157
0e98d0a7
DJ
158/* Functions from ``signals.c''. */
159enum target_signal target_signal_from_host (int hostsig);
160int target_signal_to_host_p (enum target_signal oursig);
161int target_signal_to_host (enum target_signal oursig);
c906108c
SS
162
163/* Functions from utils.c */
164
a14ed312 165void perror_with_name (char *string);
0729219d
DJ
166void error (const char *string,...) ATTR_NORETURN;
167void fatal (const char *string,...) ATTR_NORETURN;
0a30fbc4
DJ
168void warning (const char *string,...);
169
0729219d 170/* Functions from the register cache definition. */
5c44784c 171
0729219d 172void init_registers (void);
5c44784c
JM
173
174/* Maximum number of bytes to read/write at once. The value here
175 is chosen to fill up a packet (the headers account for the 32). */
176#define MAXBUFBYTES(N) (((N)-32)/2)
177
178/* Buffer sizes for transferring memory, registers, etc. Round up PBUFSIZ to
179 hold all the registers, at least. */
0a30fbc4
DJ
180#define PBUFSIZ ((registers_length () + 32 > 2000) \
181 ? (registers_length () + 32) \
5c44784c 182 : 2000)
0a30fbc4
DJ
183
184#endif /* SERVER_H */