* infrun.c (adjust_pc_after_break): Do not assume software single-step
[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
0a30fbc4 94#include "regcache.h"
0e98d0a7 95#include "gdb/signals.h"
0a30fbc4 96
ce3a066d 97#include "target.h"
611cb4a5 98#include "mem-break.h"
c906108c
SS
99
100/* Target-specific functions */
101
4ce44c66 102void initialize_low ();
c906108c 103
ce3a066d
DJ
104/* From inferiors.c. */
105
0d62e5e8
DJ
106extern struct inferior_list all_threads;
107void add_inferior_to_list (struct inferior_list *list,
108 struct inferior_list_entry *new_inferior);
109void for_each_inferior (struct inferior_list *list,
110 void (*action) (struct inferior_list_entry *));
111extern struct thread_info *current_inferior;
112void remove_inferior (struct inferior_list *list,
113 struct inferior_list_entry *entry);
114void remove_thread (struct thread_info *thread);
a06660f7
DJ
115void add_thread (unsigned long thread_id, void *target_data, unsigned int);
116unsigned int thread_id_to_gdb_id (unsigned long);
117unsigned int thread_to_gdb_id (struct thread_info *);
118unsigned long gdb_id_to_thread_id (unsigned int);
dae5f5cf 119struct thread_info *gdb_id_to_thread (unsigned int);
ce3a066d 120void clear_inferiors (void);
0d62e5e8
DJ
121struct inferior_list_entry *find_inferior
122 (struct inferior_list *,
123 int (*func) (struct inferior_list_entry *,
124 void *),
125 void *arg);
126struct inferior_list_entry *find_inferior_id (struct inferior_list *list,
a1928bad 127 unsigned long id);
0d62e5e8
DJ
128void *inferior_target_data (struct thread_info *);
129void set_inferior_target_data (struct thread_info *, void *);
130void *inferior_regcache_data (struct thread_info *);
131void set_inferior_regcache_data (struct thread_info *, void *);
132void change_inferior_id (struct inferior_list *list,
a1928bad 133 unsigned long new_id);
ce3a066d 134
c906108c
SS
135/* Public variables in server.c */
136
a1928bad
DJ
137extern unsigned long cont_thread;
138extern unsigned long general_thread;
139extern unsigned long step_thread;
140extern unsigned long thread_from_wait;
141extern unsigned long old_thread_from_wait;
0d62e5e8 142extern int server_waiting;
c74d0ad8 143extern int debug_threads;
89be2091 144extern int pass_signals[];
c906108c
SS
145
146extern jmp_buf toplevel;
c906108c 147
ea025f5f
DJ
148/* From remote-utils.c */
149
c74d0ad8 150extern int remote_debug;
ea025f5f 151extern int all_symbols_looked_up;
c906108c 152
a14ed312 153int putpkt (char *buf);
01f9e8fa 154int putpkt_binary (char *buf, int len);
a14ed312
KB
155int getpkt (char *buf);
156void remote_open (char *name);
157void remote_close (void);
158void write_ok (char *buf);
159void write_enn (char *buf);
160void enable_async_io (void);
161void disable_async_io (void);
62ea82f5
DJ
162void unblock_async_io (void);
163void block_async_io (void);
7390519e 164void check_remote_input_interrupt_request (void);
f450004a
DJ
165void convert_ascii_to_int (char *from, unsigned char *to, int n);
166void convert_int_to_ascii (unsigned char *from, char *to, int n);
0d62e5e8
DJ
167void new_thread_notify (int id);
168void dead_thread_notify (int id);
a14ed312 169void prepare_resume_reply (char *buf, char status, unsigned char sig);
c906108c 170
89be2091 171const char *decode_address_to_semicolon (CORE_ADDR *addrp, const char *start);
dae5f5cf 172void decode_address (CORE_ADDR *addrp, const char *start, int len);
a14ed312
KB
173void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr,
174 unsigned int *len_ptr);
175void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr,
f450004a 176 unsigned int *len_ptr, unsigned char *to);
01f9e8fa
DJ
177int decode_X_packet (char *from, int packet_len, CORE_ADDR * mem_addr_ptr,
178 unsigned int *len_ptr, unsigned char *to);
0e7f50da
UW
179int decode_xfer_write (char *buf, int packet_len, char **annex,
180 CORE_ADDR *offset, unsigned int *len,
181 unsigned char *data);
c906108c 182
ce3a066d
DJ
183int unhexify (char *bin, const char *hex, int count);
184int hexify (char *hex, const char *bin, int count);
01f9e8fa
DJ
185int remote_escape_output (const gdb_byte *buffer, int len,
186 gdb_byte *out_buf, int *out_len,
187 int out_maxlen);
ce3a066d 188
2f2893d9 189int look_up_one_symbol (const char *name, CORE_ADDR *addrp);
ce3a066d 190
bce7165d 191void monitor_output (const char *msg);
c74d0ad8 192
0e98d0a7
DJ
193/* Functions from ``signals.c''. */
194enum target_signal target_signal_from_host (int hostsig);
195int target_signal_to_host_p (enum target_signal oursig);
196int target_signal_to_host (enum target_signal oursig);
b80864fb 197char *target_signal_to_name (enum target_signal);
c906108c
SS
198
199/* Functions from utils.c */
200
a14ed312 201void perror_with_name (char *string);
bee0189a
DJ
202void error (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
203void fatal (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
204void warning (const char *string,...) ATTR_FORMAT (printf, 1, 2);
0a30fbc4 205
0729219d 206/* Functions from the register cache definition. */
5c44784c 207
0729219d 208void init_registers (void);
5c44784c
JM
209
210/* Maximum number of bytes to read/write at once. The value here
211 is chosen to fill up a packet (the headers account for the 32). */
212#define MAXBUFBYTES(N) (((N)-32)/2)
213
214/* Buffer sizes for transferring memory, registers, etc. Round up PBUFSIZ to
215 hold all the registers, at least. */
0a30fbc4
DJ
216#define PBUFSIZ ((registers_length () + 32 > 2000) \
217 ? (registers_length () + 32) \
5c44784c 218 : 2000)
0a30fbc4 219
dd24457d
DJ
220/* Version information, from version.c. */
221extern const char version[];
222extern const char host_name[];
223
0a30fbc4 224#endif /* SERVER_H */
This page took 0.534514 seconds and 4 git commands to generate.