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