More reversion of incomplete m32r changes. Should be back to normal.
[deliverable/binutils-gdb.git] / gdb / defs.h
CommitLineData
9846de1b 1/* *INDENT-OFF* */ /* ATTR_FORMAT confuses indent, avoid running it for now */
c906108c 2/* Basic, host-specific, and target-specific definitions for GDB.
b6ba6518 3 Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
030292b7 4 1997, 1998, 1999, 2000, 2001, 2002, 2003
c906108c
SS
5 Free Software Foundation, Inc.
6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b
JM
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
c906108c
SS
23
24#ifndef DEFS_H
25#define DEFS_H
26
975ac915
MK
27#include "config.h" /* Generated by configure. */
28
c906108c 29#include <stdio.h>
975ac915 30#include <errno.h> /* System call error return status. */
c906108c
SS
31#include <limits.h>
32
33#ifdef HAVE_STDDEF_H
917317f4 34#include <stddef.h>
c906108c 35#else
975ac915 36#include <sys/types.h> /* For size_t. */
c906108c
SS
37#endif
38
104c1213
JM
39#ifdef HAVE_UNISTD_H
40#include <unistd.h>
41#endif
42
167baebf
MK
43/* First include ansidecl.h so we can use the various macro definitions
44 here and in all subsequent file inclusions. */
45
46#include "ansidecl.h"
47
0fbb3da7
TT
48#include "gdb_locale.h"
49
dd7bf85e
DJ
50/* For ``enum target_signal''. */
51#include "gdb/signals.h"
52
975ac915 53/* Just in case they're not defined in stdio.h. */
c906108c
SS
54
55#ifndef SEEK_SET
56#define SEEK_SET 0
57#endif
58#ifndef SEEK_CUR
59#define SEEK_CUR 1
60#endif
61
975ac915 62#include <stdarg.h> /* For va_list. */
c906108c
SS
63
64#include "libiberty.h"
65
c906108c
SS
66#include "progress.h"
67
c906108c
SS
68/* For BFD64 and bfd_vma. */
69#include "bfd.h"
70
6166d547
AC
71
72/* The target is partially multi-arched. Both "tm.h" and the
73 multi-arch vector provide definitions. "tm.h" normally overrides
74 the multi-arch vector (but there are a few exceptions). */
75
76#define GDB_MULTI_ARCH_PARTIAL 1
77
83905903
AC
78/* The target is partially multi-arched. Both the multi-arch vector
79 and "tm.h" provide definitions. "tm.h" cannot override a definition
80 provided by the multi-arch vector. It is detected as a compilation
81 error.
82
83 This setting is only useful during a multi-arch conversion. */
6166d547
AC
84
85#define GDB_MULTI_ARCH_TM 2
86
87/* The target is pure multi-arch. The MULTI-ARCH vector provides all
5a2402b8 88 definitions. "tm.h" is linked to an empty file. */
6166d547
AC
89
90#define GDB_MULTI_ARCH_PURE 3
91
92
93
c906108c
SS
94/* An address in the program being debugged. Host byte order. Rather
95 than duplicate all the logic in BFD which figures out what type
96 this is (long, long long, etc.) and whether it needs to be 64
97 bits (the host/target interactions are subtle), we just use
98 bfd_vma. */
99
100typedef bfd_vma CORE_ADDR;
101
104c1213
JM
102/* This is to make sure that LONGEST is at least as big as CORE_ADDR. */
103
104#ifndef LONGEST
105
106#ifdef BFD64
107
108#define LONGEST BFD_HOST_64_BIT
109#define ULONGEST BFD_HOST_U_64_BIT
110
111#else /* No BFD64 */
112
917317f4
JM
113#ifdef CC_HAS_LONG_LONG
114#define LONGEST long long
115#define ULONGEST unsigned long long
116#else
117#ifdef BFD_HOST_64_BIT
104c1213
JM
118/* BFD_HOST_64_BIT is defined for some hosts that don't have long long
119 (e.g. i386-windows) so try it. */
917317f4
JM
120#define LONGEST BFD_HOST_64_BIT
121#define ULONGEST BFD_HOST_U_64_BIT
122#else
123#define LONGEST long
124#define ULONGEST unsigned long
125#endif
126#endif
104c1213
JM
127
128#endif /* No BFD64 */
129
130#endif /* ! LONGEST */
131
c906108c
SS
132#ifndef min
133#define min(a, b) ((a) < (b) ? (a) : (b))
134#endif
135#ifndef max
136#define max(a, b) ((a) > (b) ? (a) : (b))
137#endif
138
1a0559af
AC
139/* Macros to do string compares.
140
141 NOTE: cagney/2000-03-14:
142
143 While old code can continue to refer to these macros, new code is
144 probably better off using strcmp() directly vis: ``strcmp() == 0''
145 and ``strcmp() != 0''.
146
147 This is because modern compilers can directly inline strcmp()
148 making the original justification for these macros - avoid function
149 call overhead by pre-testing the first characters
150 (``*X==*Y?...:0'') - redundant.
151
152 ``Even if [...] testing the first character does have a modest
153 performance improvement, I'd rather that whenever a performance
154 issue is found that we spend the effort on algorithmic
155 optimizations than micro-optimizing.'' J.T. */
c906108c 156
cb137aa5
AC
157/* NOTE: cagney/2003-11-23: All instances of STREQ[N] covered by
158 testing GDB on a stabs system have been replaced by equivalent
159 str[n]cmp calls. To avoid the possability of introducing bugs when
160 making untested changes, the remaining references were deprecated
161 rather than replaced. */
162
163#define DEPRECATED_STREQ(a,b) (*(a) == *(b) ? !strcmp ((a), (b)) : 0)
164#define DEPRECATED_STREQN(a,b,c) (*(a) == *(b) ? !strncmp ((a), (b), (c)) : 0)
c906108c 165
c906108c 166/* Check if a character is one of the commonly used C++ marker characters. */
917317f4 167extern int is_cplus_marker (int);
c906108c 168
c906108c
SS
169/* enable xdb commands if set */
170extern int xdb_commands;
171
172/* enable dbx commands if set */
173extern int dbx_commands;
174
030292b7
DJ
175/* System root path, used to find libraries etc. */
176extern char *gdb_sysroot;
177
c906108c
SS
178extern int quit_flag;
179extern int immediate_quit;
180extern int sevenbit_strings;
181
917317f4 182extern void quit (void);
c906108c 183
1a0559af
AC
184/* FIXME: cagney/2000-03-13: It has been suggested that the peformance
185 benefits of having a ``QUIT'' macro rather than a function are
186 marginal. If the overhead of a QUIT function call is proving
187 significant then its calling frequency should probably be reduced
188 [kingdon]. A profile analyzing the current situtation is
189 needed. */
190
c906108c
SS
191#ifdef QUIT
192/* do twice to force compiler warning */
193#define QUIT_FIXME "FIXME"
194#define QUIT_FIXME "ignoring redefinition of QUIT"
195#else
196#define QUIT { \
197 if (quit_flag) quit (); \
198 if (interactive_hook) interactive_hook (); \
199 PROGRESS (1); \
200}
201#endif
202
c906108c
SS
203/* Languages represented in the symbol table and elsewhere.
204 This should probably be in language.h, but since enum's can't
205 be forward declared to satisfy opaque references before their
206 actual definition, needs to be here. */
207
917317f4
JM
208enum language
209 {
210 language_unknown, /* Language not known */
211 language_auto, /* Placeholder for automatic setting */
212 language_c, /* C */
213 language_cplus, /* C++ */
50f85cdf 214 language_objc, /* Objective-C */
917317f4 215 language_java, /* Java */
917317f4
JM
216 language_fortran, /* Fortran */
217 language_m2, /* Modula-2 */
218 language_asm, /* Assembly language */
750ba382 219 language_scm, /* Scheme / Guile */
20a0e81d
JB
220 language_pascal, /* Pascal */
221 language_minimal /* All other languages, minimal support only */
917317f4 222 };
c906108c
SS
223
224enum precision_type
917317f4
JM
225 {
226 single_precision,
227 double_precision,
228 unspecified_precision
229 };
230
7f19b9a2
AC
231/* A generic, not quite boolean, enumeration. */
232enum auto_boolean
233{
234 AUTO_BOOLEAN_TRUE,
235 AUTO_BOOLEAN_FALSE,
236 AUTO_BOOLEAN_AUTO
237};
238
92ad9cd9
AC
239/* Potential ways that a function can return a value of a given type. */
240enum return_value_convention
241{
242 /* Where the return value has been squeezed into one or more
243 registers. */
244 RETURN_VALUE_REGISTER_CONVENTION,
245 /* Commonly known as the "struct return convention". The caller
246 passes an additional hidden first parameter to the caller. That
247 parameter contains the address at which the value being returned
248 should be stored. While typically, and historically, used for
249 large structs, this is convention is applied to values of many
250 different types. */
251 RETURN_VALUE_STRUCT_CONVENTION
252};
253
c906108c
SS
254/* the cleanup list records things that have to be undone
255 if an error happens (descriptors to be closed, memory to be freed, etc.)
256 Each link in the chain records a function to call and an
257 argument to give it.
258
259 Use make_cleanup to add an element to the cleanup chain.
260 Use do_cleanups to do all cleanup actions back to a given
261 point in the chain. Use discard_cleanups to remove cleanups
262 from the chain back to a given point, not doing them. */
263
264struct cleanup
917317f4
JM
265 {
266 struct cleanup *next;
4efb68b1
AC
267 void (*function) (void *);
268 void *arg;
917317f4 269 };
c906108c
SS
270
271
272/* The ability to declare that a function never returns is useful, but
273 not really required to compile GDB successfully, so the NORETURN and
274 ATTR_NORETURN macros normally expand into nothing. */
275
276/* If compiling with older versions of GCC, a function may be declared
277 "volatile" to indicate that it does not return. */
278
279#ifndef NORETURN
917317f4 280#if defined(__GNUC__) \
c906108c 281 && (__GNUC__ == 1 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7))
917317f4
JM
282#define NORETURN volatile
283#else
284#define NORETURN /* nothing */
285#endif
c906108c
SS
286#endif
287
288/* GCC 2.5 and later versions define a function attribute "noreturn",
289 which is the preferred way to declare that a function never returns.
290 However GCC 2.7 appears to be the first version in which this fully
291 works everywhere we use it. */
292
293#ifndef ATTR_NORETURN
7d418785 294#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
917317f4
JM
295#define ATTR_NORETURN __attribute__ ((noreturn))
296#else
297#define ATTR_NORETURN /* nothing */
298#endif
c906108c
SS
299#endif
300
301#ifndef ATTR_FORMAT
7d418785 302#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4))
917317f4
JM
303#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y)))
304#else
305#define ATTR_FORMAT(type, x, y) /* nothing */
306#endif
c906108c
SS
307#endif
308
87193939
MC
309/* Be conservative and use enum bitfields only with GCC.
310 This is copied from gcc 3.3.1, system.h. */
311
312#if defined(__GNUC__) && (__GNUC__ >= 2)
313#define ENUM_BITFIELD(TYPE) enum TYPE
314#else
315#define ENUM_BITFIELD(TYPE) unsigned int
316#endif
317
c906108c
SS
318/* Needed for various prototypes */
319
c906108c
SS
320struct symtab;
321struct breakpoint;
c906108c
SS
322
323/* From blockframe.c */
324
917317f4 325extern int inside_entry_func (CORE_ADDR);
c906108c 326
627b3ba2 327extern int deprecated_inside_entry_file (CORE_ADDR addr);
c906108c 328
917317f4 329extern int inside_main_func (CORE_ADDR pc);
c906108c 330
c906108c
SS
331/* From utils.c */
332
917317f4 333extern void initialize_utils (void);
392a587b 334
917317f4 335extern void notice_quit (void);
c906108c 336
917317f4 337extern int strcmp_iw (const char *, const char *);
c906108c 338
0fe19209
DC
339extern int strcmp_iw_ordered (const char *, const char *);
340
2de7ced7
DJ
341extern int streq (const char *, const char *);
342
917317f4 343extern int subset_compare (char *, char *);
7a292a7a 344
917317f4 345extern char *safe_strerror (int);
c906108c 346
917317f4 347extern void init_malloc (void *);
c906108c 348
917317f4 349extern void request_quit (int);
c906108c 350
917317f4
JM
351extern void do_cleanups (struct cleanup *);
352extern void do_final_cleanups (struct cleanup *);
353extern void do_my_cleanups (struct cleanup **, struct cleanup *);
354extern void do_run_cleanups (struct cleanup *);
355extern void do_exec_cleanups (struct cleanup *);
356extern void do_exec_error_cleanups (struct cleanup *);
c906108c 357
917317f4
JM
358extern void discard_cleanups (struct cleanup *);
359extern void discard_final_cleanups (struct cleanup *);
360extern void discard_exec_error_cleanups (struct cleanup *);
361extern void discard_my_cleanups (struct cleanup **, struct cleanup *);
c906108c 362
e4005526
AC
363/* NOTE: cagney/2000-03-04: This typedef is strictly for the
364 make_cleanup function declarations below. Do not use this typedef
365 as a cast when passing functions into the make_cleanup() code.
366 Instead either use a bounce function or add a wrapper function.
367 Calling a f(char*) function with f(void*) is non-portable. */
368typedef void (make_cleanup_ftype) (void *);
369
370extern struct cleanup *make_cleanup (make_cleanup_ftype *, void *);
c906108c 371
917317f4 372extern struct cleanup *make_cleanup_freeargv (char **);
7a292a7a 373
d9fcf2fb
JM
374struct ui_file;
375extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
11cf8741 376
f5ff8c83
AC
377extern struct cleanup *make_cleanup_close (int fd);
378
5c65bbb6
AC
379extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
380
e4005526 381extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
c906108c 382
917317f4 383extern struct cleanup *make_my_cleanup (struct cleanup **,
e4005526 384 make_cleanup_ftype *, void *);
c906108c 385
e4005526 386extern struct cleanup *make_run_cleanup (make_cleanup_ftype *, void *);
c906108c 387
e4005526
AC
388extern struct cleanup *make_exec_cleanup (make_cleanup_ftype *, void *);
389extern struct cleanup *make_exec_error_cleanup (make_cleanup_ftype *, void *);
43ff13b4 390
917317f4
JM
391extern struct cleanup *save_cleanups (void);
392extern struct cleanup *save_final_cleanups (void);
393extern struct cleanup *save_my_cleanups (struct cleanup **);
c906108c 394
917317f4
JM
395extern void restore_cleanups (struct cleanup *);
396extern void restore_final_cleanups (struct cleanup *);
397extern void restore_my_cleanups (struct cleanup **, struct cleanup *);
c906108c 398
2f9429ae 399extern void free_current_contents (void *);
c906108c 400
e54a9244 401extern void null_cleanup (void *);
c906108c 402
917317f4 403extern int myread (int, char *, int);
c906108c 404
6972bc8b 405extern int query (const char *, ...) ATTR_FORMAT (printf, 1, 2);
c906108c 406
917317f4 407extern void init_page_info (void);
392a587b 408
58d370e0 409extern char *gdb_realpath (const char *);
08b204d1 410extern char *xfullpath (const char *);
58d370e0 411
5b5d99cf
JB
412extern unsigned long gnu_debuglink_crc32 (unsigned long crc,
413 unsigned char *buf, size_t len);
414
c906108c
SS
415/* From demangle.c */
416
917317f4 417extern void set_demangling_style (char *);
c906108c
SS
418
419/* From tm.h */
420
421struct type;
917317f4 422typedef int (use_struct_convention_fn) (int gcc_p, struct type * value_type);
c906108c
SS
423extern use_struct_convention_fn generic_use_struct_convention;
424
c906108c
SS
425\f
426/* Annotation stuff. */
427
917317f4 428extern int annotation_level; /* in stack.c */
c906108c 429\f
917317f4 430extern void begin_line (void);
c906108c 431
917317f4 432extern void wrap_here (char *);
c906108c 433
917317f4 434extern void reinitialize_more_filter (void);
c906108c 435
0f71a2f6 436/* Normal results */
d9fcf2fb 437extern struct ui_file *gdb_stdout;
449092f6
CV
438/* Input stream */
439extern struct ui_file *gdb_stdin;
0f71a2f6 440/* Serious error notifications */
d9fcf2fb 441extern struct ui_file *gdb_stderr;
0f71a2f6
JM
442/* Log/debug/trace messages that should bypass normal stdout/stderr
443 filtering. For momement, always call this stream using
444 *_unfiltered. In the very near future that restriction shall be
445 removed - either call shall be unfiltered. (cagney 1999-06-13). */
d9fcf2fb 446extern struct ui_file *gdb_stdlog;
43ff13b4
JM
447/* Target output that should bypass normal stdout/stderr filtering.
448 For momement, always call this stream using *_unfiltered. In the
449 very near future that restriction shall be removed - either call
450 shall be unfiltered. (cagney 1999-07-02). */
d9fcf2fb 451extern struct ui_file *gdb_stdtarg;
449092f6
CV
452extern struct ui_file *gdb_stdtargerr;
453extern struct ui_file *gdb_stdtargin;
c906108c 454
c906108c
SS
455#if defined(TUI)
456#include "tui.h"
c906108c
SS
457#endif
458
d9fcf2fb 459#include "ui-file.h"
c906108c 460
d1f4cff8
AC
461/* More generic printf like operations. Filtered versions may return
462 non-locally on error. */
c906108c 463
d9fcf2fb 464extern void fputs_filtered (const char *, struct ui_file *);
c906108c 465
d9fcf2fb 466extern void fputs_unfiltered (const char *, struct ui_file *);
c906108c 467
d9fcf2fb 468extern int fputc_filtered (int c, struct ui_file *);
c906108c 469
d9fcf2fb 470extern int fputc_unfiltered (int c, struct ui_file *);
c906108c 471
d1f4cff8
AC
472extern int putchar_filtered (int c);
473
917317f4 474extern int putchar_unfiltered (int c);
c906108c 475
917317f4 476extern void puts_filtered (const char *);
c906108c 477
917317f4 478extern void puts_unfiltered (const char *);
c906108c 479
4a351cef
AF
480extern void puts_filtered_tabular (char *string, int width, int right);
481
917317f4 482extern void puts_debug (char *prefix, char *string, char *suffix);
c906108c 483
917317f4 484extern void vprintf_filtered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
c906108c 485
d9fcf2fb 486extern void vfprintf_filtered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0);
c906108c 487
d9fcf2fb 488extern void fprintf_filtered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3);
c906108c 489
d9fcf2fb 490extern void fprintfi_filtered (int, struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 3, 4);
c906108c 491
917317f4 492extern void printf_filtered (const char *, ...) ATTR_FORMAT (printf, 1, 2);
c906108c 493
917317f4 494extern void printfi_filtered (int, const char *, ...) ATTR_FORMAT (printf, 2, 3);
c906108c 495
917317f4 496extern void vprintf_unfiltered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
c906108c 497
d9fcf2fb 498extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0);
c906108c 499
d9fcf2fb 500extern void fprintf_unfiltered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3);
917317f4
JM
501
502extern void printf_unfiltered (const char *, ...) ATTR_FORMAT (printf, 1, 2);
c906108c 503
d9fcf2fb 504extern void print_spaces (int, struct ui_file *);
c906108c 505
d9fcf2fb 506extern void print_spaces_filtered (int, struct ui_file *);
c906108c 507
917317f4 508extern char *n_spaces (int);
c906108c 509
d9fcf2fb 510extern void fputstr_filtered (const char *str, int quotr, struct ui_file * stream);
43e526b9 511
d9fcf2fb 512extern void fputstr_unfiltered (const char *str, int quotr, struct ui_file * stream);
43e526b9 513
d9fcf2fb 514extern void fputstrn_unfiltered (const char *str, int n, int quotr, struct ui_file * stream);
c906108c 515
d4f3574e 516/* Display the host ADDR on STREAM formatted as ``0x%x''. */
ac16bf07 517extern void gdb_print_host_address (const void *addr, struct ui_file *stream);
c906108c 518
104c1213
JM
519/* Convert a CORE_ADDR into a HEX string. paddr() is like %08lx.
520 paddr_nz() is like %lx. paddr_u() is like %lu. paddr_width() is
521 for ``%*''. */
d4f3574e 522extern int strlen_paddr (void);
917317f4
JM
523extern char *paddr (CORE_ADDR addr);
524extern char *paddr_nz (CORE_ADDR addr);
525extern char *paddr_u (CORE_ADDR addr);
526extern char *paddr_d (LONGEST addr);
c906108c 527
5683e87a
AC
528extern char *phex (ULONGEST l, int sizeof_l);
529extern char *phex_nz (ULONGEST l, int sizeof_l);
c906108c 530
03dd37c3
AC
531/* Like paddr() only print/scan raw CORE_ADDR. The output from
532 core_addr_to_string() can be passed direct to
533 string_to_core_addr(). */
534extern const char *core_addr_to_string (const CORE_ADDR addr);
079777f6 535extern const char *core_addr_to_string_nz (const CORE_ADDR addr);
03dd37c3
AC
536extern CORE_ADDR string_to_core_addr (const char *my_string);
537
d9fcf2fb 538extern void fprintf_symbol_filtered (struct ui_file *, char *,
917317f4 539 enum language, int);
c906108c 540
6972bc8b 541extern NORETURN void perror_with_name (const char *) ATTR_NORETURN;
c906108c 542
6972bc8b 543extern void print_sys_errmsg (const char *, int);
c906108c
SS
544
545/* From regex.c or libc. BSD 4.4 declares this with the argument type as
546 "const char *" in unistd.h, so we can't declare the argument
547 as "char *". */
548
917317f4 549extern char *re_comp (const char *);
c906108c
SS
550
551/* From symfile.c */
552
917317f4
JM
553extern void symbol_file_command (char *, int);
554
555/* Remote targets may wish to use this as their load function. */
556extern void generic_load (char *name, int from_tty);
557
558/* Summarise a download */
d9fcf2fb 559extern void print_transfer_performance (struct ui_file *stream,
917317f4
JM
560 unsigned long data_count,
561 unsigned long write_count,
562 unsigned long time_count);
c906108c
SS
563
564/* From top.c */
565
6426a772
JM
566typedef void initialize_file_ftype (void);
567
389e51db
AC
568extern char *skip_quoted (char *);
569
917317f4 570extern char *gdb_readline (char *);
c906108c 571
b4f5539f
TT
572extern char *gdb_readline_wrapper (char *);
573
917317f4 574extern char *command_line_input (char *, int, char *);
c906108c 575
917317f4 576extern void print_prompt (void);
c906108c 577
917317f4 578extern int input_from_terminal_p (void);
c906108c
SS
579
580extern int info_verbose;
581
582/* From printcmd.c */
583
917317f4 584extern void set_next_address (CORE_ADDR);
c906108c 585
d9fcf2fb 586extern void print_address_symbolic (CORE_ADDR, struct ui_file *, int,
917317f4 587 char *);
c906108c 588
dfcd3bfb 589extern int build_address_symbolic (CORE_ADDR addr,
7b83ea04
AC
590 int do_demangle,
591 char **name,
592 int *offset,
593 char **filename,
594 int *line,
dfcd3bfb
JM
595 int *unmapped);
596
d9fcf2fb 597extern void print_address_numeric (CORE_ADDR, int, struct ui_file *);
c906108c 598
d9fcf2fb 599extern void print_address (CORE_ADDR, struct ui_file *);
c906108c
SS
600
601/* From source.c */
602
1f8cc6db 603extern int openp (const char *, int, const char *, int, int, char **);
c906108c 604
917317f4 605extern int source_full_path_of (char *, char **);
c906108c 606
917317f4 607extern void mod_path (char *, char **);
c906108c 608
c04e0a08
JJ
609extern void add_path (char *, char **, int);
610
917317f4 611extern void directory_command (char *, int);
c906108c 612
c04e0a08
JJ
613extern char *source_path;
614
917317f4 615extern void init_source_path (void);
c906108c 616
c04e0a08
JJ
617extern void init_last_source_visited (void);
618
917317f4 619extern char *symtab_to_filename (struct symtab *);
c906108c 620
104c1213
JM
621/* From exec.c */
622
623extern void exec_set_section_offsets (bfd_signed_vma text_off,
624 bfd_signed_vma data_off,
625 bfd_signed_vma bss_off);
626
be4d1333
MS
627/* Take over the 'find_mapped_memory' vector from exec.c. */
628extern void exec_set_find_memory_regions (int (*) (int (*) (CORE_ADDR,
629 unsigned long,
630 int, int, int,
631 void *),
632 void *));
633
53a5351d
JM
634/* Possible lvalue types. Like enum language, this should be in
635 value.h, but needs to be here for the same reason. */
636
637enum lval_type
638 {
639 /* Not an lval. */
640 not_lval,
641 /* In memory. Could be a saved register. */
642 lval_memory,
643 /* In a register. */
644 lval_register,
645 /* In a gdb internal variable. */
646 lval_internalvar,
647 /* Part of a gdb internal variable (structure field). */
648 lval_internalvar_component,
649 /* In a register series in a frame not the current one, which may have been
650 partially saved or saved in different places (otherwise would be
651 lval_register or lval_memory). */
652 lval_reg_frame_relative
653 };
654
392a587b 655struct frame_info;
53a5351d 656
c906108c
SS
657/* Control types for commands */
658
659enum misc_command_type
917317f4
JM
660 {
661 ok_command,
662 end_command,
663 else_command,
664 nop_command
665 };
c906108c
SS
666
667enum command_control_type
917317f4
JM
668 {
669 simple_control,
670 break_control,
671 continue_control,
672 while_control,
673 if_control,
674 invalid_control
675 };
c906108c
SS
676
677/* Structure for saved commands lines
678 (for breakpoints, defined commands, etc). */
679
680struct command_line
917317f4
JM
681 {
682 struct command_line *next;
683 char *line;
684 enum command_control_type control_type;
685 int body_count;
686 struct command_line **body_list;
687 };
c906108c 688
917317f4 689extern struct command_line *read_command_lines (char *, int);
c906108c 690
917317f4 691extern void free_command_lines (struct command_line **);
c906108c 692
7b83ea04
AC
693/* To continue the execution commands when running gdb asynchronously.
694 A continuation structure contains a pointer to a function to be called
43ff13b4
JM
695 to finish the command, once the target has stopped. Such mechanism is
696 used bt the finish and until commands, and in the remote protocol
697 when opening an extended-remote connection. */
698
699struct continuation_arg
917317f4
JM
700 {
701 struct continuation_arg *next;
57e687d9
MS
702 union continuation_data {
703 void *pointer;
704 int integer;
705 long longint;
706 } data;
917317f4 707 };
43ff13b4
JM
708
709struct continuation
917317f4
JM
710 {
711 void (*continuation_hook) (struct continuation_arg *);
712 struct continuation_arg *arg_list;
713 struct continuation *next;
714 };
43ff13b4
JM
715
716/* In infrun.c. */
717extern struct continuation *cmd_continuation;
c2d11a7d
JM
718/* Used only by the step_1 function. */
719extern struct continuation *intermediate_continuation;
43ff13b4
JM
720
721/* From utils.c */
917317f4
JM
722extern void add_continuation (void (*)(struct continuation_arg *),
723 struct continuation_arg *);
724extern void do_all_continuations (void);
725extern void discard_all_continuations (void);
43ff13b4 726
c2d11a7d
JM
727extern void add_intermediate_continuation (void (*)(struct continuation_arg *),
728 struct continuation_arg *);
729extern void do_all_intermediate_continuations (void);
730extern void discard_all_intermediate_continuations (void);
731
c906108c
SS
732/* String containing the current directory (what getwd would return). */
733
734extern char *current_directory;
735
736/* Default radixes for input and output. Only some values supported. */
737extern unsigned input_radix;
738extern unsigned output_radix;
739
740/* Possibilities for prettyprint parameters to routines which print
741 things. Like enum language, this should be in value.h, but needs
742 to be here for the same reason. FIXME: If we can eliminate this
743 as an arg to LA_VAL_PRINT, then we can probably move it back to
744 value.h. */
745
746enum val_prettyprint
917317f4
JM
747 {
748 Val_no_prettyprint = 0,
749 Val_prettyprint,
750 /* Use the default setting which the user has specified. */
751 Val_pretty_default
752 };
39f77062 753
ca6724c1
KB
754/* The ptid struct is a collection of the various "ids" necessary
755 for identifying the inferior. This consists of the process id
756 (pid), thread id (tid), and other fields necessary for uniquely
757 identifying the inferior process/thread being debugged. When
758 manipulating ptids, the constructors, accessors, and predicate
759 declared in inferior.h should be used. These are as follows:
760
761 ptid_build - Make a new ptid from a pid, lwp, and tid.
762 pid_to_ptid - Make a new ptid from just a pid.
763 ptid_get_pid - Fetch the pid component of a ptid.
764 ptid_get_lwp - Fetch the lwp component of a ptid.
765 ptid_get_tid - Fetch the tid component of a ptid.
766 ptid_equal - Test to see if two ptids are equal.
767
768 Please do NOT access the struct ptid members directly (except, of
769 course, in the implementation of the above ptid manipulation
770 functions). */
771
772struct ptid
773 {
774 /* Process id */
775 int pid;
39f77062 776
ca6724c1
KB
777 /* Lightweight process id */
778 long lwp;
39f77062 779
ca6724c1
KB
780 /* Thread id */
781 long tid;
782 };
39f77062 783
ca6724c1 784typedef struct ptid ptid_t;
39f77062 785
c906108c 786\f
917317f4 787
5a2402b8
AC
788/* Optional host machine definition. Pure autoconf targets will not
789 need a "xm.h" file. This will be a symlink to one of the xm-*.h
790 files, built by the `configure' script. */
c906108c 791
5a2402b8 792#ifdef GDB_XM_FILE
c906108c 793#include "xm.h"
5a2402b8 794#endif
c906108c 795
5a2402b8
AC
796/* Optional native machine support. Non-native (and possibly pure
797 multi-arch) targets do not need a "nm.h" file. This will be a
798 symlink to one of the nm-*.h files, built by the `configure'
799 script. */
c906108c 800
5a2402b8 801#ifdef GDB_NM_FILE
c906108c 802#include "nm.h"
5a2402b8 803#endif
c906108c 804
5a2402b8
AC
805/* Optional target machine definition. Pure multi-arch configurations
806 do not need a "tm.h" file. This will be a symlink to one of the
c906108c
SS
807 tm-*.h files, built by the `configure' script. */
808
5a2402b8 809#ifdef GDB_TM_FILE
c906108c 810#include "tm.h"
6166d547
AC
811#endif
812
c906108c
SS
813/* If the xm.h file did not define the mode string used to open the
814 files, assume that binary files are opened the same way as text
815 files */
816#ifndef FOPEN_RB
817#include "fopen-same.h"
818#endif
819
c906108c
SS
820/* Defaults for system-wide constants (if not defined by xm.h, we fake it).
821 FIXME: Assumes 2's complement arithmetic */
822
823#if !defined (UINT_MAX)
917317f4 824#define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
c906108c
SS
825#endif
826
827#if !defined (INT_MAX)
917317f4 828#define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
c906108c
SS
829#endif
830
831#if !defined (INT_MIN)
832#define INT_MIN ((int)((int) ~0 ^ INT_MAX)) /* 0x80000000 for 32-bits */
833#endif
834
835#if !defined (ULONG_MAX)
836#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
837#endif
838
839#if !defined (LONG_MAX)
840#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
841#endif
842
4ce44c66 843#if !defined (ULONGEST_MAX)
658d99ff 844#define ULONGEST_MAX (~(ULONGEST)0) /* 0xFFFFFFFFFFFFFFFF for 64-bits */
4ce44c66
JM
845#endif
846
658d99ff 847#if !defined (LONGEST_MAX) /* 0x7FFFFFFFFFFFFFFF for 64-bits */
4ce44c66
JM
848#define LONGEST_MAX ((LONGEST)(ULONGEST_MAX >> 1))
849#endif
850
c906108c
SS
851/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
852 arguments to a function, number in a value history, register number, etc.)
853 where the value must not be larger than can fit in an int. */
854
917317f4 855extern int longest_to_int (LONGEST);
c906108c 856
7b83ea04 857/* Assorted functions we can declare, now that const and volatile are
c906108c
SS
858 defined. */
859
5565b556 860extern char *savestring (const char *, size_t);
c906108c 861
5565b556 862extern char *msavestring (void *, const char *, size_t);
c906108c 863
917317f4 864extern char *mstrsave (void *, const char *);
c906108c 865
c0e61796
AC
866/* Robust versions of same. Throw an internal error when no memory,
867 guard against stray NULL arguments. */
868extern void *xmmalloc (void *md, size_t size);
869extern void *xmrealloc (void *md, void *ptr, size_t size);
870extern void *xmcalloc (void *md, size_t number, size_t size);
871extern void xmfree (void *md, void *ptr);
872
873/* xmalloc(), xrealloc() and xcalloc() have already been declared in
874 "libiberty.h". */
875extern void xfree (void *);
876
bba2d28d
AC
877/* Utility macros to allocate typed memory. Avoids errors like:
878 struct foo *foo = xmalloc (sizeof struct bar); and memset (foo,
879 sizeof (struct foo), 0). */
880#define XZALLOC(TYPE) ((TYPE*) memset (xmalloc (sizeof (TYPE)), 0, sizeof (TYPE)))
349c5d5f 881#define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
3fadccb3 882#define XCALLOC(NMEMB, TYPE) ((TYPE*) xcalloc ((NMEMB), sizeof (TYPE)))
349c5d5f 883
76995688
AC
884/* Like asprintf/vasprintf but get an internal_error if the call
885 fails. */
886extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3);
887extern void xvasprintf (char **ret, const char *format, va_list ap);
888
9ebf4acf
AC
889/* Like asprintf, but return the string, throw an error if no memory. */
890extern char *xstrprintf (const char *format, ...) ATTR_FORMAT (printf, 1, 2);
891
917317f4 892extern int parse_escape (char **);
c906108c 893
c906108c
SS
894/* Message to be printed before the error message, when an error occurs. */
895
896extern char *error_pre_print;
897
898/* Message to be printed before the error message, when an error occurs. */
899
900extern char *quit_pre_print;
901
902/* Message to be printed before the warning message, when a warning occurs. */
903
904extern char *warning_pre_print;
905
4ce44c66 906extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
c906108c 907
823ca731 908extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
c906108c 909
d9fcf2fb 910extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
2acceee2 911
b9362cc7
AC
912/* Initialize the error buffer. */
913extern void error_init (void);
914
4ce44c66
JM
915/* Returns a freshly allocate buffer containing the last error
916 message. */
917317f4 917extern char *error_last_message (void);
2acceee2 918
8e65ff28
AC
919extern NORETURN void internal_verror (const char *file, int line,
920 const char *, va_list ap) ATTR_NORETURN;
4ce44c66 921
8e65ff28
AC
922extern NORETURN void internal_error (const char *file, int line,
923 const char *, ...) ATTR_NORETURN ATTR_FORMAT (printf, 3, 4);
4ce44c66 924
dec43320
AC
925extern void internal_vwarning (const char *file, int line,
926 const char *, va_list ap);
927
928extern void internal_warning (const char *file, int line,
929 const char *, ...) ATTR_FORMAT (printf, 3, 4);
930
917317f4 931extern NORETURN void nomem (long) ATTR_NORETURN;
c906108c 932
b5a2688f 933/* Reasons for calling throw_exception(). NOTE: all reason values
f9c696d2
AC
934 must be less than zero. enum value 0 is reserved for internal use
935 as the return value from an initial setjmp(). The function
936 catch_exceptions() reserves values >= 0 as legal results from its
937 wrapped function. */
c906108c 938
917317f4
JM
939enum return_reason
940 {
941 /* User interrupt. */
f9c696d2 942 RETURN_QUIT = -2,
917317f4
JM
943 /* Any other error. */
944 RETURN_ERROR
945 };
c906108c 946
43ff13b4
JM
947#define ALL_CLEANUPS ((struct cleanup *)0)
948
f9c696d2 949#define RETURN_MASK(reason) (1 << (int)(-reason))
99eeeb0f
ND
950#define RETURN_MASK_QUIT RETURN_MASK (RETURN_QUIT)
951#define RETURN_MASK_ERROR RETURN_MASK (RETURN_ERROR)
952#define RETURN_MASK_ALL (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
c906108c
SS
953typedef int return_mask;
954
ab290c52 955/* Throw an exception of type RETURN_REASON. Will execute a LONG JUMP
b5a2688f
AC
956 to the inner most containing exception handler established using
957 catch_exceptions() (or the legacy catch_errors()).
ab290c52 958
b5a2688f
AC
959 Code normally throws an exception using error() et.al. For various
960 reaons, GDB also contains code that throws an exception directly.
961 For instance, the remote*.c targets contain CNTRL-C signal handlers
962 that propogate the QUIT event up the exception chain. ``This could
963 be a good thing or a dangerous thing.'' -- the Existential Wombat. */
ab290c52 964
b5a2688f 965extern NORETURN void throw_exception (enum return_reason) ATTR_NORETURN;
c906108c 966
f9c696d2
AC
967/* Call FUNC(UIOUT, FUNC_ARGS) but wrapped within an exception
968 handler. If an exception (enum return_reason) is thrown using
b5a2688f 969 throw_exception() than all cleanups installed since
f9c696d2
AC
970 catch_exceptions() was entered are invoked, the (-ve) exception
971 value is then returned by catch_exceptions. If FUNC() returns
972 normally (with a postive or zero return value) then that value is
973 returned by catch_exceptions(). It is an internal_error() for
974 FUNC() to return a negative value.
975
976 For the period of the FUNC() call: UIOUT is installed as the output
977 builder; ERRSTRING is installed as the error/quit message; and a
978 new cleanup_chain is established. The old values are restored
979 before catch_exceptions() returns.
980
981 FIXME; cagney/2001-08-13: The need to override the global UIOUT
982 builder variable should just go away.
983
984 This function superseeds catch_errors().
985
986 This function uses SETJMP() and LONGJUMP(). */
987
988struct ui_out;
989typedef int (catch_exceptions_ftype) (struct ui_out *ui_out, void *args);
990extern int catch_exceptions (struct ui_out *uiout,
991 catch_exceptions_ftype *func, void *func_args,
992 char *errstring, return_mask mask);
993
11cf8741
JM
994/* If CATCH_ERRORS_FTYPE throws an error, catch_errors() returns zero
995 otherwize the result from CATCH_ERRORS_FTYPE is returned. It is
996 probably useful for CATCH_ERRORS_FTYPE to always return a non-zero
997 value. It's unfortunate that, catch_errors() does not return an
998 indication of the exact exception that it caught - quit_flag might
f9c696d2
AC
999 help.
1000
1001 This function is superseeded by catch_exceptions(). */
11cf8741 1002
4efb68b1 1003typedef int (catch_errors_ftype) (void *);
12b9c64f 1004extern int catch_errors (catch_errors_ftype *, void *, char *, return_mask);
c906108c 1005
11cf8741
JM
1006/* Template to catch_errors() that wraps calls to command
1007 functions. */
1008
1009typedef void (catch_command_errors_ftype) (char *, int);
1010extern int catch_command_errors (catch_command_errors_ftype *func, char *command, int from_tty, return_mask);
1011
917317f4 1012extern void warning (const char *, ...) ATTR_FORMAT (printf, 1, 2);
c906108c 1013
f5a96129
AC
1014extern void vwarning (const char *, va_list args);
1015
4be87837
DJ
1016/* List of known OS ABIs. If you change this, make sure to update the
1017 table in osabi.c. */
1018enum gdb_osabi
1019{
1020 GDB_OSABI_UNINITIALIZED = -1, /* For struct gdbarch_info. */
1021
1022 GDB_OSABI_UNKNOWN = 0, /* keep this zero */
1023
1024 GDB_OSABI_SVR4,
1025 GDB_OSABI_HURD,
1026 GDB_OSABI_SOLARIS,
1027 GDB_OSABI_OSF1,
1028 GDB_OSABI_LINUX,
1029 GDB_OSABI_FREEBSD_AOUT,
1030 GDB_OSABI_FREEBSD_ELF,
1031 GDB_OSABI_NETBSD_AOUT,
1032 GDB_OSABI_NETBSD_ELF,
1033 GDB_OSABI_WINCE,
1034 GDB_OSABI_GO32,
1035 GDB_OSABI_NETWARE,
1036 GDB_OSABI_IRIX,
1037 GDB_OSABI_LYNXOS,
1038 GDB_OSABI_INTERIX,
1039 GDB_OSABI_HPUX_ELF,
1040 GDB_OSABI_HPUX_SOM,
1041
1042 GDB_OSABI_ARM_EABI_V1,
1043 GDB_OSABI_ARM_EABI_V2,
1044 GDB_OSABI_ARM_APCS,
83461b86 1045 GDB_OSABI_QNXNTO,
4be87837 1046
1762d96d
CV
1047 GDB_OSABI_CYGWIN,
1048
4be87837
DJ
1049 GDB_OSABI_INVALID /* keep this last */
1050};
1051
c906108c
SS
1052/* Global functions from other, non-gdb GNU thingies.
1053 Libiberty thingies are no longer declared here. We include libiberty.h
1054 above, instead. */
1055
1056#ifndef GETENV_PROVIDED
917317f4 1057extern char *getenv (const char *);
c906108c
SS
1058#endif
1059
1060/* From other system libraries */
1061
1062#ifdef HAVE_STDDEF_H
1063#include <stddef.h>
1064#endif
1065
1066#ifdef HAVE_STDLIB_H
c906108c
SS
1067#include <stdlib.h>
1068#endif
1069#ifndef min
1070#define min(a, b) ((a) < (b) ? (a) : (b))
1071#endif
1072#ifndef max
1073#define max(a, b) ((a) > (b) ? (a) : (b))
1074#endif
1075
1076
1077/* We take the address of fclose later, but some stdio's forget
1078 to declare this. We can't always declare it since there's
1079 no way to declare the parameters without upsetting some compiler
1080 somewhere. */
1081
1082#ifndef FCLOSE_PROVIDED
917317f4 1083extern int fclose (FILE *);
c906108c
SS
1084#endif
1085
1086#ifndef atof
917317f4 1087extern double atof (const char *); /* X3.159-1989 4.10.1.1 */
c906108c
SS
1088#endif
1089
c906108c
SS
1090/* Various possibilities for alloca. */
1091#ifndef alloca
917317f4
JM
1092#ifdef __GNUC__
1093#define alloca __builtin_alloca
1094#else /* Not GNU C */
1095#ifdef HAVE_ALLOCA_H
1096#include <alloca.h>
1097#else
1098#ifdef _AIX
1099#pragma alloca
1100#else
c906108c
SS
1101
1102/* We need to be careful not to declare this in a way which conflicts with
1103 bison. Bison never declares it as char *, but under various circumstances
1104 (like __hpux) we need to use void *. */
917317f4 1105extern void *alloca ();
917317f4
JM
1106#endif /* Not _AIX */
1107#endif /* Not HAVE_ALLOCA_H */
1108#endif /* Not GNU C */
c906108c
SS
1109#endif /* alloca not defined */
1110
57b29be7
AC
1111/* Is GDB multi-arch? If there's a "tm.h" file, it is not. */
1112#ifndef GDB_MULTI_ARCH
1113#ifdef GDB_TM_FILE
1114#define GDB_MULTI_ARCH GDB_MULTI_ARCH_PARTIAL
1115#else
1116#define GDB_MULTI_ARCH GDB_MULTI_ARCH_PURE
1117#endif
1118#endif
1119
c906108c
SS
1120/* Dynamic target-system-dependent parameters for GDB. */
1121#include "gdbarch.h"
1122
0c92afe8
AC
1123/* Maximum size of a register. Something small, but large enough for
1124 all known ISAs. If it turns out to be too small, make it bigger. */
1125
1126enum { MAX_REGISTER_SIZE = 16 };
1127
c906108c
SS
1128/* Static target-system-dependent parameters for GDB. */
1129
1130/* Number of bits in a char or unsigned char for the target machine.
1131 Just like CHAR_BIT in <limits.h> but describes the target machine. */
1132#if !defined (TARGET_CHAR_BIT)
1133#define TARGET_CHAR_BIT 8
1134#endif
1135
c906108c
SS
1136/* If we picked up a copy of CHAR_BIT from a configuration file
1137 (which may get it by including <limits.h>) then use it to set
1138 the number of bits in a host char. If not, use the same size
1139 as the target. */
1140
1141#if defined (CHAR_BIT)
1142#define HOST_CHAR_BIT CHAR_BIT
1143#else
1144#define HOST_CHAR_BIT TARGET_CHAR_BIT
1145#endif
1146
1147/* The bit byte-order has to do just with numbering of bits in
1148 debugging symbols and such. Conceptually, it's quite separate
1149 from byte/word byte order. */
1150
1151#if !defined (BITS_BIG_ENDIAN)
d7449b42 1152#define BITS_BIG_ENDIAN (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
c906108c
SS
1153#endif
1154
1155/* In findvar.c. */
1156
37611a2b 1157extern LONGEST extract_signed_integer (const void *, int);
c906108c 1158
37611a2b 1159extern ULONGEST extract_unsigned_integer (const void *, int);
c906108c 1160
66140c26 1161extern int extract_long_unsigned_integer (const void *, int, LONGEST *);
c906108c 1162
66140c26 1163extern CORE_ADDR extract_typed_address (const void *buf, struct type *type);
4478b372 1164
a9ac8f51 1165extern void store_signed_integer (void *, int, LONGEST);
c906108c 1166
a9ac8f51 1167extern void store_unsigned_integer (void *, int, ULONGEST);
c906108c 1168
4478b372
JB
1169extern void store_typed_address (void *buf, struct type *type, CORE_ADDR addr);
1170
c906108c 1171\f
c906108c
SS
1172/* From valops.c */
1173
917317f4 1174extern CORE_ADDR push_bytes (CORE_ADDR, char *, int);
c906108c 1175
917317f4 1176extern CORE_ADDR push_word (CORE_ADDR, ULONGEST);
c906108c 1177
c906108c 1178extern int watchdog;
c906108c
SS
1179
1180/* Hooks for alternate command interfaces. */
8b93c638 1181
fb40c209
AC
1182/* The name of the interpreter if specified on the command line. */
1183extern char *interpreter_p;
fb40c209
AC
1184
1185/* If a given interpreter matches INTERPRETER_P then it should update
1186 command_loop_hook and init_ui_hook with the per-interpreter
1187 implementation. */
1188/* FIXME: command_loop_hook and init_ui_hook should be moved here. */
1189
c906108c
SS
1190struct target_waitstatus;
1191struct cmd_list_element;
c906108c 1192
0f71a2f6
JM
1193/* Should the asynchronous variant of the interpreter (using the
1194 event-loop) be enabled? */
6426a772 1195extern int event_loop_p;
917317f4
JM
1196
1197extern void (*init_ui_hook) (char *argv0);
1198extern void (*command_loop_hook) (void);
c2d11a7d 1199extern void (*show_load_progress) (const char *section,
7b83ea04
AC
1200 unsigned long section_sent,
1201 unsigned long section_size,
1202 unsigned long total_sent,
c2d11a7d 1203 unsigned long total_size);
917317f4
JM
1204extern void (*print_frame_info_listing_hook) (struct symtab * s,
1205 int line, int stopline,
1206 int noerror);
1207extern struct frame_info *parse_frame_specification (char *frame_exp);
1208extern int (*query_hook) (const char *, va_list);
1209extern void (*warning_hook) (const char *, va_list);
d9fcf2fb 1210extern void (*flush_hook) (struct ui_file * stream);
917317f4
JM
1211extern void (*create_breakpoint_hook) (struct breakpoint * b);
1212extern void (*delete_breakpoint_hook) (struct breakpoint * bpt);
1213extern void (*modify_breakpoint_hook) (struct breakpoint * bpt);
1214extern void (*interactive_hook) (void);
1215extern void (*registers_changed_hook) (void);
1216extern void (*readline_begin_hook) (char *,...);
1217extern char *(*readline_hook) (char *);
1218extern void (*readline_end_hook) (void);
1219extern void (*register_changed_hook) (int regno);
1220extern void (*memory_changed_hook) (CORE_ADDR addr, int len);
1221extern void (*context_hook) (int);
39f77062
KB
1222extern ptid_t (*target_wait_hook) (ptid_t ptid,
1223 struct target_waitstatus * status);
917317f4
JM
1224
1225extern void (*attach_hook) (void);
1226extern void (*detach_hook) (void);
1227extern void (*call_command_hook) (struct cmd_list_element * c,
1228 char *cmd, int from_tty);
1229
1230extern void (*set_hook) (struct cmd_list_element * c);
1231
1232extern NORETURN void (*error_hook) (void) ATTR_NORETURN;
1233
1234extern void (*error_begin_hook) (void);
1235
1236extern int (*ui_load_progress_hook) (const char *section, unsigned long num);
c906108c
SS
1237
1238
1239/* Inhibit window interface if non-zero. */
1240
1241extern int use_windows;
1242
1243/* Symbolic definitions of filename-related things. */
1244/* FIXME, this doesn't work very well if host and executable
1245 filesystems conventions are different. */
1246
1247#ifndef DIRNAME_SEPARATOR
1248#define DIRNAME_SEPARATOR ':'
1249#endif
1250
c906108c 1251#ifndef SLASH_STRING
c906108c
SS
1252#define SLASH_STRING "/"
1253#endif
c906108c 1254
2584159e
EZ
1255#ifdef __MSDOS__
1256# define CANT_FORK
1257# define GLOBAL_CURDIR
1258#endif
1259
ca6724c1
KB
1260/* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
1261 The name ``TIDGET'' is a historical accident. Many uses of TIDGET
1262 in the code actually refer to a lightweight process id, i.e,
1263 something that can be considered a process id in its own right for
1264 certain purposes. */
c906108c
SS
1265
1266#ifndef PIDGET
ca6724c1
KB
1267#define PIDGET(PTID) (ptid_get_pid (PTID))
1268#define TIDGET(PTID) (ptid_get_lwp (PTID))
1269#define MERGEPID(PID, TID) ptid_build (PID, TID, 0)
c906108c
SS
1270#endif
1271
96baa820
JM
1272/* Define well known filenos if the system does not define them. */
1273#ifndef STDIN_FILENO
1274#define STDIN_FILENO 0
1275#endif
1276#ifndef STDOUT_FILENO
1277#define STDOUT_FILENO 1
1278#endif
1279#ifndef STDERR_FILENO
1280#define STDERR_FILENO 2
1281#endif
1282
104c1213
JM
1283/* If this definition isn't overridden by the header files, assume
1284 that isatty and fileno exist on this system. */
1285#ifndef ISATTY
1286#define ISATTY(FP) (isatty (fileno (FP)))
1287#endif
1288
5b03f266
AC
1289/* Ensure that V is aligned to an N byte boundary (B's assumed to be a
1290 power of 2). Round up/down when necessary. Examples of correct
1291 use include:
1292
1293 addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
1294 write_memory (addr, value, len);
1295 addr += len;
1296
1297 and:
1298
1299 sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
1300 write_memory (sp, value, len);
1301
1302 Note that uses such as:
1303
1304 write_memory (addr, value, len);
1305 addr += align_up (len, 8);
1306
1307 and:
1308
1309 sp -= align_up (len, 8);
1310 write_memory (sp, value, len);
1311
1312 are typically not correct as they don't ensure that the address (SP
1313 or ADDR) is correctly aligned (relying on previous alignment to
1314 keep things right). This is also why the methods are called
1315 "align_..." instead of "round_..." as the latter reads better with
1316 this incorrect coding style. */
1317
1318extern ULONGEST align_up (ULONGEST v, int n);
1319extern ULONGEST align_down (ULONGEST v, int n);
1320
c906108c 1321#endif /* #ifndef DEFS_H */
This page took 0.446681 seconds and 4 git commands to generate.