Move ansidecl.h to common-defs.h
[external/binutils.git] / gdb / defs.h
1 /* *INDENT-OFF* */ /* ATTRIBUTE_PRINTF confuses indent, avoid running it
2                       for now.  */
3 /* Basic, host-specific, and target-specific definitions for GDB.
4    Copyright (C) 1986-2014 Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20
21 #ifndef DEFS_H
22 #define DEFS_H
23
24 #ifdef GDBSERVER
25 #  error gdbserver should not include gdb/defs.h
26 #endif
27
28 #include "common-defs.h"
29
30 #include <sys/types.h>
31 #include <errno.h>              /* System call error return status.  */
32 #include <limits.h>
33 #include <stdint.h>
34
35 /* The libdecnumber library, on which GDB depends, includes a header file
36    called gstdint.h instead of relying directly on stdint.h.  GDB, on the
37    other hand, includes stdint.h directly, relying on the fact that gnulib
38    generates a copy if the system doesn't provide one or if it is missing
39    some features.  Unfortunately, gstdint.h and stdint.h cannot be included
40    at the same time, which may happen when we include a file from
41    libdecnumber.
42
43    The following macro definition effectively prevents the inclusion of
44    gstdint.h, as all the definitions it provides are guarded against
45    the GCC_GENERATED_STDINT_H macro.  We already have gnulib/stdint.h
46    included, so it's ok to blank out gstdint.h.  */
47 #define GCC_GENERATED_STDINT_H 1
48
49 #include <unistd.h>
50
51 /* For gnulib's PATH_MAX.  */
52 #include "pathmax.h"
53
54 #include <fcntl.h>
55
56 #include "gdb_locale.h"
57
58 #include "gdb_wchar.h"
59
60 /* For ``enum gdb_signal''.  */
61 #include "gdb/signals.h"
62
63 #include "ui-file.h"
64
65 #include "host-defs.h"
66
67 /* Just in case they're not defined in stdio.h.  */
68
69 #ifndef SEEK_SET
70 #define SEEK_SET 0
71 #endif
72 #ifndef SEEK_CUR
73 #define SEEK_CUR 1
74 #endif
75
76 /* The O_BINARY flag is defined in fcntl.h on some non-Posix platforms.
77    It is used as an access modifier in calls to open(), where it acts
78    similarly to the "b" character in fopen()'s MODE argument.  On Posix
79    platforms it should be a no-op, so it is defined as 0 here.  This 
80    ensures that the symbol may be used freely elsewhere in gdb.  */
81
82 #ifndef O_BINARY
83 #define O_BINARY 0
84 #endif
85
86 #include "libiberty.h"
87 #include "hashtab.h"
88
89 /* Rather than duplicate all the logic in BFD for figuring out what
90    types to use (which can be pretty complicated), symply define them
91    in terms of the corresponding type from BFD.  */
92
93 #include "bfd.h"
94
95 /* * A byte from the program being debugged.  */
96 typedef bfd_byte gdb_byte;
97
98 /* * An address in the program being debugged.  Host byte order.  */
99 typedef bfd_vma CORE_ADDR;
100
101 /* * The largest CORE_ADDR value.  */
102 #define CORE_ADDR_MAX (~ (CORE_ADDR) 0)
103
104 /* This is to make sure that LONGEST is at least as big as CORE_ADDR.  */
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
113 #define LONGEST long long
114 #define ULONGEST unsigned long long
115
116 #endif /* No BFD64 */
117
118 #ifndef min
119 #define min(a, b) ((a) < (b) ? (a) : (b))
120 #endif
121 #ifndef max
122 #define max(a, b) ((a) > (b) ? (a) : (b))
123 #endif
124
125 #include "ptid.h"
126
127 /* * Enable xdb commands if set.  */
128 extern int xdb_commands;
129
130 /* * Enable dbx commands if set.  */
131 extern int dbx_commands;
132
133 /* * System root path, used to find libraries etc.  */
134 extern char *gdb_sysroot;
135
136 /* * GDB datadir, used to store data files.  */
137 extern char *gdb_datadir;
138
139 /* * If non-NULL, the possibly relocated path to python's "lib" directory
140    specified with --with-python.  */
141 extern char *python_libdir;
142
143 /* * Search path for separate debug files.  */
144 extern char *debug_file_directory;
145
146 /* GDB has two methods for handling SIGINT.  When immediate_quit is
147    nonzero, a SIGINT results in an immediate longjmp out of the signal
148    handler.  Otherwise, SIGINT simply sets a flag; code that might
149    take a long time, and which ought to be interruptible, checks this
150    flag using the QUIT macro.
151
152    These functions use the extension_language_ops API to allow extension
153    language(s) and GDB SIGINT handling to coexist seamlessly.  */
154
155 /* * Clear the quit flag.  */
156 extern void clear_quit_flag (void);
157 /* * Evaluate to non-zero if the quit flag is set, zero otherwise.  This
158    will clear the quit flag as a side effect.  */
159 extern int check_quit_flag (void);
160 /* * Set the quit flag.  */
161 extern void set_quit_flag (void);
162
163 /* Flag that function quit should call quit_force.  */
164 extern volatile int sync_quit_force_run;
165
166 extern int immediate_quit;
167
168 extern void quit (void);
169
170 /* FIXME: cagney/2000-03-13: It has been suggested that the peformance
171    benefits of having a ``QUIT'' macro rather than a function are
172    marginal.  If the overhead of a QUIT function call is proving
173    significant then its calling frequency should probably be reduced
174    [kingdon].  A profile analyzing the current situtation is
175    needed.  */
176
177 #define QUIT { \
178   if (check_quit_flag () || sync_quit_force_run) quit (); \
179   if (deprecated_interactive_hook) deprecated_interactive_hook (); \
180 }
181
182 /* * Languages represented in the symbol table and elsewhere.
183    This should probably be in language.h, but since enum's can't
184    be forward declared to satisfy opaque references before their
185    actual definition, needs to be here.  */
186
187 enum language
188   {
189     language_unknown,           /* Language not known */
190     language_auto,              /* Placeholder for automatic setting */
191     language_c,                 /* C */
192     language_cplus,             /* C++ */
193     language_d,                 /* D */
194     language_go,                /* Go */
195     language_objc,              /* Objective-C */
196     language_java,              /* Java */
197     language_fortran,           /* Fortran */
198     language_m2,                /* Modula-2 */
199     language_asm,               /* Assembly language */
200     language_pascal,            /* Pascal */
201     language_ada,               /* Ada */
202     language_opencl,            /* OpenCL */
203     language_minimal,           /* All other languages, minimal support only */
204     nr_languages
205   };
206
207 enum precision_type
208   {
209     single_precision,
210     double_precision,
211     unspecified_precision
212   };
213
214 /* * A generic, not quite boolean, enumeration.  This is used for
215    set/show commands in which the options are on/off/automatic.  */
216 enum auto_boolean
217 {
218   AUTO_BOOLEAN_TRUE,
219   AUTO_BOOLEAN_FALSE,
220   AUTO_BOOLEAN_AUTO
221 };
222
223 /* * Potential ways that a function can return a value of a given
224    type.  */
225
226 enum return_value_convention
227 {
228   /* * Where the return value has been squeezed into one or more
229      registers.  */
230   RETURN_VALUE_REGISTER_CONVENTION,
231   /* * Commonly known as the "struct return convention".  The caller
232      passes an additional hidden first parameter to the caller.  That
233      parameter contains the address at which the value being returned
234      should be stored.  While typically, and historically, used for
235      large structs, this is convention is applied to values of many
236      different types.  */
237   RETURN_VALUE_STRUCT_CONVENTION,
238   /* * Like the "struct return convention" above, but where the ABI
239      guarantees that the called function stores the address at which
240      the value being returned is stored in a well-defined location,
241      such as a register or memory slot in the stack frame.  Don't use
242      this if the ABI doesn't explicitly guarantees this.  */
243   RETURN_VALUE_ABI_RETURNS_ADDRESS,
244   /* * Like the "struct return convention" above, but where the ABI
245      guarantees that the address at which the value being returned is
246      stored will be available in a well-defined location, such as a
247      register or memory slot in the stack frame.  Don't use this if
248      the ABI doesn't explicitly guarantees this.  */
249   RETURN_VALUE_ABI_PRESERVES_ADDRESS,
250 };
251
252 /* Needed for various prototypes */
253
254 struct symtab;
255 struct breakpoint;
256 struct frame_info;
257 struct gdbarch;
258 struct value;
259
260 /* From main.c.  */
261
262 /* This really belong in utils.c (path-utils.c?), but it references some
263    globals that are currently only available to main.c.  */
264 extern char *relocate_gdb_directory (const char *initial, int flag);
265
266 \f
267 /* Annotation stuff.  */
268
269 extern int annotation_level;    /* in stack.c */
270 \f
271
272 /* From regex.c or libc.  BSD 4.4 declares this with the argument type as
273    "const char *" in unistd.h, so we can't declare the argument
274    as "char *".  */
275
276 extern char *re_comp (const char *);
277
278 /* From symfile.c */
279
280 extern void symbol_file_command (char *, int);
281
282 /* * Remote targets may wish to use this as their load function.  */
283 extern void generic_load (const char *name, int from_tty);
284
285 /* * Report on STREAM the performance of memory transfer operation,
286    such as 'load'.
287    @param DATA_COUNT is the number of bytes transferred.
288    @param WRITE_COUNT is the number of separate write operations, or 0,
289    if that information is not available.
290    @param START_TIME is the time at which an operation was started.
291    @param END_TIME is the time at which an operation ended.  */
292 struct timeval;
293 extern void print_transfer_performance (struct ui_file *stream,
294                                         unsigned long data_count,
295                                         unsigned long write_count,
296                                         const struct timeval *start_time,
297                                         const struct timeval *end_time);
298
299 /* From top.c */
300
301 typedef void initialize_file_ftype (void);
302
303 extern char *gdb_readline (char *);
304
305 extern char *gdb_readline_wrapper (char *);
306
307 extern char *command_line_input (char *, int, char *);
308
309 extern void print_prompt (void);
310
311 extern int input_from_terminal_p (void);
312
313 extern int info_verbose;
314
315 /* From printcmd.c */
316
317 extern void set_next_address (struct gdbarch *, CORE_ADDR);
318
319 extern int print_address_symbolic (struct gdbarch *, CORE_ADDR,
320                                    struct ui_file *, int, char *);
321
322 extern int build_address_symbolic (struct gdbarch *,
323                                    CORE_ADDR addr,
324                                    int do_demangle, 
325                                    char **name, 
326                                    int *offset, 
327                                    char **filename, 
328                                    int *line,   
329                                    int *unmapped);
330
331 extern void print_address (struct gdbarch *, CORE_ADDR, struct ui_file *);
332 extern const char *pc_prefix (CORE_ADDR);
333
334 /* From source.c */
335
336 /* See openp function definition for their description.  */
337 #define OPF_TRY_CWD_FIRST     0x01
338 #define OPF_SEARCH_IN_PATH    0x02
339 #define OPF_RETURN_REALPATH   0x04
340
341 extern int openp (const char *, int, const char *, int, char **);
342
343 extern int source_full_path_of (const char *, char **);
344
345 extern void mod_path (char *, char **);
346
347 extern void add_path (char *, char **, int);
348
349 extern void directory_switch (char *, int);
350
351 extern char *source_path;
352
353 extern void init_source_path (void);
354
355 /* From exec.c */
356
357 /* * Process memory area starting at ADDR with length SIZE.  Area is
358    readable iff READ is non-zero, writable if WRITE is non-zero,
359    executable if EXEC is non-zero.  Area is possibly changed against
360    its original file based copy if MODIFIED is non-zero.  DATA is
361    passed without changes from a caller.  */
362
363 typedef int (*find_memory_region_ftype) (CORE_ADDR addr, unsigned long size,
364                                          int read, int write, int exec,
365                                          int modified, void *data);
366
367 /* * Possible lvalue types.  Like enum language, this should be in
368    value.h, but needs to be here for the same reason.  */
369
370 enum lval_type
371   {
372     /* * Not an lval.  */
373     not_lval,
374     /* * In memory.  */
375     lval_memory,
376     /* * In a register.  Registers are relative to a frame.  */
377     lval_register,
378     /* * In a gdb internal variable.  */
379     lval_internalvar,
380     /* * Value encapsulates a callable defined in an extension language.  */
381     lval_xcallable,
382     /* * Part of a gdb internal variable (structure field).  */
383     lval_internalvar_component,
384     /* * Value's bits are fetched and stored using functions provided
385        by its creator.  */
386     lval_computed
387   };
388
389 /* * Control types for commands.  */
390
391 enum misc_command_type
392   {
393     ok_command,
394     end_command,
395     else_command,
396     nop_command
397   };
398
399 enum command_control_type
400   {
401     simple_control,
402     break_control,
403     continue_control,
404     while_control,
405     if_control,
406     commands_control,
407     python_control,
408     guile_control,
409     while_stepping_control,
410     invalid_control
411   };
412
413 /* * Structure for saved commands lines (for breakpoints, defined
414    commands, etc).  */
415
416 struct command_line
417   {
418     struct command_line *next;
419     char *line;
420     enum command_control_type control_type;
421     /* * The number of elements in body_list.  */
422     int body_count;
423     /* * For composite commands, the nested lists of commands.  For
424        example, for "if" command this will contain the then branch and
425        the else branch, if that is available.  */
426     struct command_line **body_list;
427   };
428
429 extern struct command_line *read_command_lines (char *, int, int,
430                                                 void (*)(char *, void *),
431                                                 void *);
432 extern struct command_line *read_command_lines_1 (char * (*) (void), int,
433                                                   void (*)(char *, void *),
434                                                   void *);
435
436 extern void free_command_lines (struct command_line **);
437
438 /* * Parameters of the "info proc" command.  */
439
440 enum info_proc_what
441   {
442     /* * Display the default cmdline, cwd and exe outputs.  */
443     IP_MINIMAL,
444
445     /* * Display `info proc mappings'.  */
446     IP_MAPPINGS,
447
448     /* * Display `info proc status'.  */
449     IP_STATUS,
450
451     /* * Display `info proc stat'.  */
452     IP_STAT,
453
454     /* * Display `info proc cmdline'.  */
455     IP_CMDLINE,
456
457     /* * Display `info proc exe'.  */
458     IP_EXE,
459
460     /* * Display `info proc cwd'.  */
461     IP_CWD,
462
463     /* * Display all of the above.  */
464     IP_ALL
465   };
466
467 /* * String containing the current directory (what getwd would return).  */
468
469 extern char *current_directory;
470
471 /* * Default radixes for input and output.  Only some values supported.  */
472 extern unsigned input_radix;
473 extern unsigned output_radix;
474
475 /* * Possibilities for prettyformat parameters to routines which print
476    things.  Like enum language, this should be in value.h, but needs
477    to be here for the same reason.  FIXME:  If we can eliminate this
478    as an arg to LA_VAL_PRINT, then we can probably move it back to
479    value.h.  */
480
481 enum val_prettyformat
482   {
483     Val_no_prettyformat = 0,
484     Val_prettyformat,
485     /* * Use the default setting which the user has specified.  */
486     Val_prettyformat_default
487   };
488
489 /* * Optional native machine support.  Non-native (and possibly pure
490    multi-arch) targets do not need a "nm.h" file.  This will be a
491    symlink to one of the nm-*.h files, built by the `configure'
492    script.  */
493
494 #ifdef GDB_NM_FILE
495 #include "nm.h"
496 #endif
497
498 /* Assume that fopen accepts the letter "b" in the mode string.
499    It is demanded by ISO C9X, and should be supported on all
500    platforms that claim to have a standard-conforming C library.  On
501    true POSIX systems it will be ignored and have no effect.  There
502    may still be systems without a standard-conforming C library where
503    an ISO C9X compiler (GCC) is available.  Known examples are SunOS
504    4.x and 4.3BSD.  This assumption means these systems are no longer
505    supported.  */
506 #ifndef FOPEN_RB
507 # include "fopen-bin.h"
508 #endif
509
510 /* Defaults for system-wide constants (if not defined by xm.h, we fake it).
511    FIXME: Assumes 2's complement arithmetic.  */
512
513 #if !defined (UINT_MAX)
514 #define UINT_MAX ((unsigned int)(~0))       /* 0xFFFFFFFF for 32-bits */
515 #endif
516
517 #if !defined (INT_MAX)
518 #define INT_MAX ((int)(UINT_MAX >> 1))      /* 0x7FFFFFFF for 32-bits */
519 #endif
520
521 #if !defined (INT_MIN)
522 #define INT_MIN ((int)((int) ~0 ^ INT_MAX)) /* 0x80000000 for 32-bits */
523 #endif
524
525 #if !defined (ULONG_MAX)
526 #define ULONG_MAX ((unsigned long)(~0L))    /* 0xFFFFFFFF for 32-bits */
527 #endif
528
529 #if !defined (LONG_MAX)
530 #define LONG_MAX ((long)(ULONG_MAX >> 1))   /* 0x7FFFFFFF for 32-bits */
531 #endif
532
533 #if !defined (ULONGEST_MAX)
534 #define ULONGEST_MAX (~(ULONGEST)0)        /* 0xFFFFFFFFFFFFFFFF for 64-bits */
535 #endif
536
537 #if !defined (LONGEST_MAX)                 /* 0x7FFFFFFFFFFFFFFF for 64-bits */
538 #define LONGEST_MAX ((LONGEST)(ULONGEST_MAX >> 1))
539 #endif
540
541 /* * Convert a LONGEST to an int.  This is used in contexts (e.g. number of
542    arguments to a function, number in a value history, register number, etc.)
543    where the value must not be larger than can fit in an int.  */
544
545 extern int longest_to_int (LONGEST);
546
547 #include "common-utils.h"
548
549 /* * List of known OS ABIs.  If you change this, make sure to update the
550    table in osabi.c.  */
551 enum gdb_osabi
552 {
553   GDB_OSABI_UNINITIALIZED = -1, /* For struct gdbarch_info.  */
554
555   GDB_OSABI_UNKNOWN = 0,        /* keep this zero */
556
557   GDB_OSABI_SVR4,
558   GDB_OSABI_HURD,
559   GDB_OSABI_SOLARIS,
560   GDB_OSABI_OSF1,
561   GDB_OSABI_LINUX,
562   GDB_OSABI_FREEBSD_AOUT,
563   GDB_OSABI_FREEBSD_ELF,
564   GDB_OSABI_NETBSD_AOUT,
565   GDB_OSABI_NETBSD_ELF,
566   GDB_OSABI_OPENBSD_ELF,
567   GDB_OSABI_WINCE,
568   GDB_OSABI_GO32,
569   GDB_OSABI_IRIX,
570   GDB_OSABI_HPUX_ELF,
571   GDB_OSABI_HPUX_SOM,
572   GDB_OSABI_QNXNTO,
573   GDB_OSABI_CYGWIN,
574   GDB_OSABI_AIX,
575   GDB_OSABI_DICOS,
576   GDB_OSABI_DARWIN,
577   GDB_OSABI_SYMBIAN,
578   GDB_OSABI_OPENVMS,
579   GDB_OSABI_LYNXOS178,
580   GDB_OSABI_NEWLIB,
581
582   GDB_OSABI_INVALID             /* keep this last */
583 };
584
585 /* Global functions from other, non-gdb GNU thingies.
586    Libiberty thingies are no longer declared here.  We include libiberty.h
587    above, instead.  */
588
589 /* From other system libraries */
590
591 #ifndef atof
592 extern double atof (const char *);      /* X3.159-1989  4.10.1.1 */
593 #endif
594
595 /* Various possibilities for alloca.  */
596 #ifndef alloca
597 #ifdef __GNUC__
598 #define alloca __builtin_alloca
599 #else /* Not GNU C */
600 #ifdef HAVE_ALLOCA_H
601 #include <alloca.h>
602 #else
603 #ifdef _AIX
604 #pragma alloca
605 #else
606
607 /* We need to be careful not to declare this in a way which conflicts with
608    bison.  Bison never declares it as char *, but under various circumstances
609    (like __hpux) we need to use void *.  */
610 extern void *alloca ();
611 #endif /* Not _AIX */
612 #endif /* Not HAVE_ALLOCA_H */
613 #endif /* Not GNU C */
614 #endif /* alloca not defined */
615
616 /* Dynamic target-system-dependent parameters for GDB.  */
617 #include "gdbarch.h"
618
619 /* * Maximum size of a register.  Something small, but large enough for
620    all known ISAs.  If it turns out to be too small, make it bigger.  */
621
622 enum { MAX_REGISTER_SIZE = 64 };
623
624 /* Static target-system-dependent parameters for GDB.  */
625
626 /* * Number of bits in a char or unsigned char for the target machine.
627    Just like CHAR_BIT in <limits.h> but describes the target machine.  */
628 #if !defined (TARGET_CHAR_BIT)
629 #define TARGET_CHAR_BIT 8
630 #endif
631
632 /* * If we picked up a copy of CHAR_BIT from a configuration file
633    (which may get it by including <limits.h>) then use it to set
634    the number of bits in a host char.  If not, use the same size
635    as the target.  */
636
637 #if defined (CHAR_BIT)
638 #define HOST_CHAR_BIT CHAR_BIT
639 #else
640 #define HOST_CHAR_BIT TARGET_CHAR_BIT
641 #endif
642
643 /* In findvar.c.  */
644
645 extern LONGEST extract_signed_integer (const gdb_byte *, int,
646                                        enum bfd_endian);
647
648 extern ULONGEST extract_unsigned_integer (const gdb_byte *, int,
649                                           enum bfd_endian);
650
651 extern int extract_long_unsigned_integer (const gdb_byte *, int,
652                                           enum bfd_endian, LONGEST *);
653
654 extern CORE_ADDR extract_typed_address (const gdb_byte *buf,
655                                         struct type *type);
656
657 extern void store_signed_integer (gdb_byte *, int,
658                                   enum bfd_endian, LONGEST);
659
660 extern void store_unsigned_integer (gdb_byte *, int,
661                                     enum bfd_endian, ULONGEST);
662
663 extern void store_typed_address (gdb_byte *buf, struct type *type,
664                                  CORE_ADDR addr);
665
666 \f
667 /* From valops.c */
668
669 extern int watchdog;
670
671 /* Hooks for alternate command interfaces.  */
672
673 /* * The name of the interpreter if specified on the command line.  */
674 extern char *interpreter_p;
675
676 /* If a given interpreter matches INTERPRETER_P then it should update
677    deprecated_init_ui_hook with the per-interpreter implementation.  */
678 /* FIXME: deprecated_init_ui_hook should be moved here.  */
679
680 struct target_waitstatus;
681 struct cmd_list_element;
682
683 extern void (*deprecated_pre_add_symbol_hook) (const char *);
684 extern void (*deprecated_post_add_symbol_hook) (void);
685 extern void (*selected_frame_level_changed_hook) (int);
686 extern int (*deprecated_ui_loop_hook) (int signo);
687 extern void (*deprecated_init_ui_hook) (char *argv0);
688 extern void (*deprecated_show_load_progress) (const char *section,
689                                               unsigned long section_sent, 
690                                               unsigned long section_size, 
691                                               unsigned long total_sent, 
692                                               unsigned long total_size);
693 extern void (*deprecated_print_frame_info_listing_hook) (struct symtab * s,
694                                                          int line,
695                                                          int stopline,
696                                                          int noerror);
697 extern int (*deprecated_query_hook) (const char *, va_list)
698      ATTRIBUTE_FPTR_PRINTF(1,0);
699 extern void (*deprecated_warning_hook) (const char *, va_list)
700      ATTRIBUTE_FPTR_PRINTF(1,0);
701 extern void (*deprecated_interactive_hook) (void);
702 extern void (*deprecated_readline_begin_hook) (char *, ...)
703      ATTRIBUTE_FPTR_PRINTF_1;
704 extern char *(*deprecated_readline_hook) (char *);
705 extern void (*deprecated_readline_end_hook) (void);
706 extern void (*deprecated_register_changed_hook) (int regno);
707 extern void (*deprecated_context_hook) (int);
708 extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
709                                               struct target_waitstatus *status,
710                                               int options);
711
712 extern void (*deprecated_attach_hook) (void);
713 extern void (*deprecated_detach_hook) (void);
714 extern void (*deprecated_call_command_hook) (struct cmd_list_element * c,
715                                              char *cmd, int from_tty);
716
717 extern int (*deprecated_ui_load_progress_hook) (const char *section,
718                                                 unsigned long num);
719
720 /* If this definition isn't overridden by the header files, assume
721    that isatty and fileno exist on this system.  */
722 #ifndef ISATTY
723 #define ISATTY(FP)      (isatty (fileno (FP)))
724 #endif
725
726 /* * A width that can achieve a better legibility for GDB MI mode.  */
727 #define GDB_MI_MSG_WIDTH  80
728
729 /* From progspace.c */
730
731 extern void initialize_progspace (void);
732 extern void initialize_inferiors (void);
733
734 /* * Special block numbers */
735
736 enum block_enum
737 {
738   GLOBAL_BLOCK = 0,
739   STATIC_BLOCK = 1,
740   FIRST_LOCAL_BLOCK = 2
741 };
742
743 #include "utils.h"
744
745 #endif /* #ifndef DEFS_H */