gdb/
[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, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
5    1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009,
6    2010 Free Software Foundation, Inc.
7
8    This file is part of GDB.
9
10    This program is free software; you can redistribute it and/or modify
11    it under the terms of the GNU General Public License as published by
12    the Free Software Foundation; either version 3 of the License, or
13    (at your option) any later version.
14
15    This program is distributed in the hope that it will be useful,
16    but WITHOUT ANY WARRANTY; without even the implied warranty of
17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18    GNU General Public License for more details.
19
20    You should have received a copy of the GNU General Public License
21    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
22
23 #ifndef DEFS_H
24 #define DEFS_H
25
26 #include "config.h"             /* Generated by configure.  */
27
28 #include <sys/types.h>
29 #include <stdio.h>
30 #include <errno.h>              /* System call error return status.  */
31 #include <limits.h>
32 #include <stdint.h>
33
34 /* The libdecnumber library, on which GDB depends, includes a header file
35    called gstdint.h instead of relying directly on stdint.h.  GDB, on the
36    other hand, includes stdint.h directly, relying on the fact that gnulib
37    generates a copy if the system doesn't provide one or if it is missing
38    some features.  Unfortunately, gstdint.h and stdint.h cannot be included
39    at the same time, which may happen when we include a file from
40    libdecnumber.
41
42    The following macro definition effectively prevents the inclusion of
43    gstdint.h, as all the definitions it provides are guarded against
44    the GCC_GENERATED_STDINT_H macro.  We already have gnulib/stdint.h
45    included, so it's ok to blank out gstdint.h.  */
46 #define GCC_GENERATED_STDINT_H 1
47
48 #ifdef HAVE_STDDEF_H
49 #include <stddef.h>
50 #endif
51
52 #ifdef HAVE_UNISTD_H
53 #include <unistd.h>
54 #endif
55
56 #include <fcntl.h>
57
58 /* First include ansidecl.h so we can use the various macro definitions
59    here and in all subsequent file inclusions.  */
60
61 #include "ansidecl.h"
62
63 #include "gdb_locale.h"
64
65 #include "gdb_wchar.h"
66
67 /* For ``enum target_signal''.  */
68 #include "gdb/signals.h"
69
70 /* Just in case they're not defined in stdio.h.  */
71
72 #ifndef SEEK_SET
73 #define SEEK_SET 0
74 #endif
75 #ifndef SEEK_CUR
76 #define SEEK_CUR 1
77 #endif
78
79 /* The O_BINARY flag is defined in fcntl.h on some non-Posix platforms.
80    It is used as an access modifier in calls to open(), where it acts
81    similarly to the "b" character in fopen()'s MODE argument. On Posix
82    platforms it should be a no-op, so it is defined as 0 here. This 
83    ensures that the symbol may be used freely elsewhere in gdb. */
84
85 #ifndef O_BINARY
86 #define O_BINARY 0
87 #endif
88
89 #include <stdarg.h>             /* For va_list.  */
90
91 #include "libiberty.h"
92
93 /* Rather than duplicate all the logic in BFD for figuring out what
94    types to use (which can be pretty complicated), symply define them
95    in terms of the corresponding type from BFD.  */
96
97 #include "bfd.h"
98
99 /* A byte from the program being debugged.  */
100 typedef bfd_byte gdb_byte;
101
102 /* An address in the program being debugged.  Host byte order.  */
103 typedef bfd_vma CORE_ADDR;
104
105 /* The largest CORE_ADDR value.  */
106 #define CORE_ADDR_MAX (~ (CORE_ADDR) 0)
107
108 /* This is to make sure that LONGEST is at least as big as CORE_ADDR.  */
109
110 #ifndef LONGEST
111
112 #ifdef BFD64
113
114 #define LONGEST BFD_HOST_64_BIT
115 #define ULONGEST BFD_HOST_U_64_BIT
116
117 #else /* No BFD64 */
118
119 #ifdef CC_HAS_LONG_LONG
120 #define LONGEST long long
121 #define ULONGEST unsigned long long
122 #else
123 #ifdef BFD_HOST_64_BIT
124 /* BFD_HOST_64_BIT is defined for some hosts that don't have long long
125    (e.g. i386-windows) so try it.  */
126 #define LONGEST BFD_HOST_64_BIT
127 #define ULONGEST BFD_HOST_U_64_BIT
128 #else
129 #define LONGEST long
130 #define ULONGEST unsigned long
131 #endif
132 #endif
133
134 #endif /* No BFD64 */
135
136 #endif /* ! LONGEST */
137
138 #ifndef min
139 #define min(a, b) ((a) < (b) ? (a) : (b))
140 #endif
141 #ifndef max
142 #define max(a, b) ((a) > (b) ? (a) : (b))
143 #endif
144
145 /* Check if a character is one of the commonly used C++ marker characters.  */
146 extern int is_cplus_marker (int);
147
148 /* enable xdb commands if set */
149 extern int xdb_commands;
150
151 /* enable dbx commands if set */
152 extern int dbx_commands;
153
154 /* System root path, used to find libraries etc.  */
155 extern char *gdb_sysroot;
156
157 /* GDB datadir, used to store data files.  */
158 extern char *gdb_datadir;
159
160 /* Search path for separate debug files.  */
161 extern char *debug_file_directory;
162
163 extern int quit_flag;
164 extern int immediate_quit;
165 extern int sevenbit_strings;
166
167 extern void quit (void);
168
169 /* FIXME: cagney/2000-03-13: It has been suggested that the peformance
170    benefits of having a ``QUIT'' macro rather than a function are
171    marginal.  If the overhead of a QUIT function call is proving
172    significant then its calling frequency should probably be reduced
173    [kingdon].  A profile analyzing the current situtation is
174    needed. */
175
176 #define QUIT { \
177   if (quit_flag) quit (); \
178   if (deprecated_interactive_hook) deprecated_interactive_hook (); \
179 }
180
181 /* Languages represented in the symbol table and elsewhere.
182    This should probably be in language.h, but since enum's can't
183    be forward declared to satisfy opaque references before their
184    actual definition, needs to be here. */
185
186 enum language
187   {
188     language_unknown,           /* Language not known */
189     language_auto,              /* Placeholder for automatic setting */
190     language_c,                 /* C */
191     language_cplus,             /* C++ */
192     language_d,                 /* D */
193     language_objc,              /* Objective-C */
194     language_java,              /* Java */
195     language_fortran,           /* Fortran */
196     language_m2,                /* Modula-2 */
197     language_asm,               /* Assembly language */
198     language_pascal,            /* Pascal */
199     language_ada,               /* Ada */
200     language_scm,               /* Guile Scheme */
201     language_minimal,           /* All other languages, minimal support only */
202     nr_languages
203   };
204
205 enum precision_type
206   {
207     single_precision,
208     double_precision,
209     unspecified_precision
210   };
211
212 /* A generic, not quite boolean, enumeration.  */
213 enum auto_boolean
214 {
215   AUTO_BOOLEAN_TRUE,
216   AUTO_BOOLEAN_FALSE,
217   AUTO_BOOLEAN_AUTO
218 };
219
220 /* Potential ways that a function can return a value of a given type.  */
221 enum return_value_convention
222 {
223   /* Where the return value has been squeezed into one or more
224      registers.  */
225   RETURN_VALUE_REGISTER_CONVENTION,
226   /* Commonly known as the "struct return convention".  The caller
227      passes an additional hidden first parameter to the caller.  That
228      parameter contains the address at which the value being returned
229      should be stored.  While typically, and historically, used for
230      large structs, this is convention is applied to values of many
231      different types.  */
232   RETURN_VALUE_STRUCT_CONVENTION,
233   /* Like the "struct return convention" above, but where the ABI
234      guarantees that the called function stores the address at which
235      the value being returned is stored in a well-defined location,
236      such as a register or memory slot in the stack frame.  Don't use
237      this if the ABI doesn't explicitly guarantees this.  */
238   RETURN_VALUE_ABI_RETURNS_ADDRESS,
239   /* Like the "struct return convention" above, but where the ABI
240      guarantees that the address at which the value being returned is
241      stored will be available in a well-defined location, such as a
242      register or memory slot in the stack frame.  Don't use this if
243      the ABI doesn't explicitly guarantees this.  */
244   RETURN_VALUE_ABI_PRESERVES_ADDRESS,
245 };
246
247 /* the cleanup list records things that have to be undone
248    if an error happens (descriptors to be closed, memory to be freed, etc.)
249    Each link in the chain records a function to call and an
250    argument to give it.
251
252    Use make_cleanup to add an element to the cleanup chain.
253    Use do_cleanups to do all cleanup actions back to a given
254    point in the chain.  Use discard_cleanups to remove cleanups
255    from the chain back to a given point, not doing them.  
256
257    If the argument is pointer to allocated memory, then you need to
258    to additionally set the 'free_arg' member to a function that will
259    free that memory.  This function will be called both when the cleanup
260    is executed and when it's discarded.  */
261
262 struct cleanup
263   {
264     struct cleanup *next;
265     void (*function) (void *);
266     void (*free_arg) (void *);
267     void *arg;
268   };
269
270 /* Be conservative and use enum bitfields only with GCC.
271    This is copied from gcc 3.3.1, system.h.  */
272
273 #if defined(__GNUC__) && (__GNUC__ >= 2)
274 #define ENUM_BITFIELD(TYPE) enum TYPE
275 #else
276 #define ENUM_BITFIELD(TYPE) unsigned int
277 #endif
278
279 /* vec.h-style vectors of strings want a typedef for char * .  */
280
281 typedef char * char_ptr;
282
283 /* Needed for various prototypes */
284
285 struct symtab;
286 struct breakpoint;
287 struct frame_info;
288 struct gdbarch;
289
290 /* From utils.c */
291
292 extern void initialize_utils (void);
293
294 extern void notice_quit (void);
295
296 extern int strcmp_iw (const char *, const char *);
297
298 extern int strcmp_iw_ordered (const char *, const char *);
299
300 extern int streq (const char *, const char *);
301
302 extern int subset_compare (char *, char *);
303
304 extern char *safe_strerror (int);
305
306 #define ALL_CLEANUPS    ((struct cleanup *)0)
307
308 extern void do_cleanups (struct cleanup *);
309 extern void do_final_cleanups (struct cleanup *);
310
311 extern void discard_cleanups (struct cleanup *);
312 extern void discard_final_cleanups (struct cleanup *);
313 extern void discard_my_cleanups (struct cleanup **, struct cleanup *);
314
315 /* NOTE: cagney/2000-03-04: This typedef is strictly for the
316    make_cleanup function declarations below. Do not use this typedef
317    as a cast when passing functions into the make_cleanup() code.
318    Instead either use a bounce function or add a wrapper function.
319    Calling a f(char*) function with f(void*) is non-portable. */
320 typedef void (make_cleanup_ftype) (void *);
321
322 extern struct cleanup *make_cleanup (make_cleanup_ftype *, void *);
323
324 extern struct cleanup *make_cleanup_dtor (make_cleanup_ftype *, void *,
325                                           void (*dtor) (void *));
326
327 extern struct cleanup *make_cleanup_freeargv (char **);
328
329 struct ui_file;
330 extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
331
332 struct section_addr_info;
333 extern struct cleanup *(make_cleanup_free_section_addr_info 
334                         (struct section_addr_info *));
335
336 extern struct cleanup *make_cleanup_close (int fd);
337
338 extern struct cleanup *make_cleanup_fclose (FILE *file);
339
340 extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
341
342 struct obstack;
343 extern struct cleanup *make_cleanup_obstack_free (struct obstack *obstack);
344
345 extern struct cleanup *make_cleanup_restore_integer (int *variable);
346
347 extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
348
349 extern struct cleanup *make_my_cleanup (struct cleanup **,
350                                         make_cleanup_ftype *, void *);
351
352 extern struct cleanup *make_my_cleanup2 (struct cleanup **,
353                                          make_cleanup_ftype *, void *,
354                                          void (*free_arg) (void *));
355
356 extern struct cleanup *save_cleanups (void);
357 extern struct cleanup *save_final_cleanups (void);
358 extern struct cleanup *save_my_cleanups (struct cleanup **);
359
360 extern void restore_cleanups (struct cleanup *);
361 extern void restore_final_cleanups (struct cleanup *);
362 extern void restore_my_cleanups (struct cleanup **, struct cleanup *);
363
364 extern void free_current_contents (void *);
365
366 extern void null_cleanup (void *);
367
368 extern int myread (int, char *, int);
369
370 extern int query (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
371 extern int nquery (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
372 extern int yquery (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
373
374 extern void init_page_info (void);
375
376 extern char *gdb_realpath (const char *);
377 extern char *xfullpath (const char *);
378
379 extern unsigned long gnu_debuglink_crc32 (unsigned long crc,
380                                           unsigned char *buf, size_t len);
381
382 ULONGEST strtoulst (const char *num, const char **trailer, int base);
383
384 char *ldirname (const char *filename);
385
386 char **gdb_buildargv (const char *);
387
388 int compare_positive_ints (const void *ap, const void *bp);
389
390 /* A wrapper for bfd_errmsg to produce a more helpful error message
391    in the case of bfd_error_file_ambiguously recognized.
392    MATCHING, if non-NULL, is the corresponding argument to
393    bfd_check_format_matches, and will be freed.  */
394
395 extern const char *gdb_bfd_errmsg (bfd_error_type error_tag, char **matching);
396
397 extern int parse_pid_to_attach (char *args);
398
399 /* From demangle.c */
400
401 extern void set_demangling_style (char *);
402
403 \f
404 /* Annotation stuff.  */
405
406 extern int annotation_level;    /* in stack.c */
407 \f
408 extern void begin_line (void);
409
410 extern void wrap_here (char *);
411
412 extern void reinitialize_more_filter (void);
413
414 /* Normal results */
415 extern struct ui_file *gdb_stdout;
416 /* Input stream */
417 extern struct ui_file *gdb_stdin;
418 /* Serious error notifications */
419 extern struct ui_file *gdb_stderr;
420 /* Log/debug/trace messages that should bypass normal stdout/stderr
421    filtering.  For moment, always call this stream using
422    *_unfiltered. In the very near future that restriction shall be
423    removed - either call shall be unfiltered. (cagney 1999-06-13). */
424 extern struct ui_file *gdb_stdlog;
425 /* Target output that should bypass normal stdout/stderr filtering.
426    For moment, always call this stream using *_unfiltered. In the
427    very near future that restriction shall be removed - either call
428    shall be unfiltered. (cagney 1999-07-02). */
429 extern struct ui_file *gdb_stdtarg;
430 extern struct ui_file *gdb_stdtargerr;
431 extern struct ui_file *gdb_stdtargin;
432
433 #include "ui-file.h"
434
435 /* More generic printf like operations.  Filtered versions may return
436    non-locally on error.  */
437
438 extern void fputs_filtered (const char *, struct ui_file *);
439
440 extern void fputs_unfiltered (const char *, struct ui_file *);
441
442 extern int fputc_filtered (int c, struct ui_file *);
443
444 extern int fputc_unfiltered (int c, struct ui_file *);
445
446 extern int putchar_filtered (int c);
447
448 extern int putchar_unfiltered (int c);
449
450 extern void puts_filtered (const char *);
451
452 extern void puts_unfiltered (const char *);
453
454 extern void puts_filtered_tabular (char *string, int width, int right);
455
456 extern void puts_debug (char *prefix, char *string, char *suffix);
457
458 extern void vprintf_filtered (const char *, va_list) ATTRIBUTE_PRINTF (1, 0);
459
460 extern void vfprintf_filtered (struct ui_file *, const char *, va_list) ATTRIBUTE_PRINTF (2, 0);
461
462 extern void fprintf_filtered (struct ui_file *, const char *, ...) ATTRIBUTE_PRINTF (2, 3);
463
464 extern void fprintfi_filtered (int, struct ui_file *, const char *, ...) ATTRIBUTE_PRINTF (3, 4);
465
466 extern void printf_filtered (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
467
468 extern void printfi_filtered (int, const char *, ...) ATTRIBUTE_PRINTF (2, 3);
469
470 extern void vprintf_unfiltered (const char *, va_list) ATTRIBUTE_PRINTF (1, 0);
471
472 extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list) ATTRIBUTE_PRINTF (2, 0);
473
474 extern void fprintf_unfiltered (struct ui_file *, const char *, ...) ATTRIBUTE_PRINTF (2, 3);
475
476 extern void printf_unfiltered (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
477
478 extern void print_spaces (int, struct ui_file *);
479
480 extern void print_spaces_filtered (int, struct ui_file *);
481
482 extern char *n_spaces (int);
483
484 extern void fputstr_filtered (const char *str, int quotr, struct ui_file * stream);
485
486 extern void fputstr_unfiltered (const char *str, int quotr, struct ui_file * stream);
487
488 extern void fputstrn_filtered (const char *str, int n, int quotr, struct ui_file * stream);
489
490 extern void fputstrn_unfiltered (const char *str, int n, int quotr, struct ui_file * stream);
491
492 /* Display the host ADDR on STREAM formatted as ``0x%x''. */
493 extern void gdb_print_host_address (const void *addr, struct ui_file *stream);
494
495 extern const char *host_address_to_string (const void *addr);
496
497 /* Convert CORE_ADDR to string in platform-specific manner.
498    This is usually formatted similar to 0x%lx.  */
499 extern const char *paddress (struct gdbarch *gdbarch, CORE_ADDR addr);
500
501 /* %d for LONGEST */
502 extern char *plongest (LONGEST l);
503 /* %u for ULONGEST */
504 extern char *pulongest (ULONGEST l);
505
506 extern char *phex (ULONGEST l, int sizeof_l);
507 extern char *phex_nz (ULONGEST l, int sizeof_l);
508 extern char *int_string (LONGEST, int, int, int, int);
509
510 /* Convert a CORE_ADDR into a HEX string with leading zeros.
511    The output from core_addr_to_string() can be passed direct to
512    string_to_core_addr().  */
513 extern const char *core_addr_to_string (const CORE_ADDR addr);
514 extern const char *core_addr_to_string_nz (const CORE_ADDR addr);
515 extern CORE_ADDR string_to_core_addr (const char *my_string);
516
517 /* Return a string that contains a number formatted as a hex
518    string.  */
519 extern char *hex_string (LONGEST);
520 extern char *hex_string_custom (LONGEST, int);
521
522 extern void fprintf_symbol_filtered (struct ui_file *, char *,
523                                      enum language, int);
524
525 extern void perror_with_name (const char *) ATTRIBUTE_NORETURN;
526
527 extern void print_sys_errmsg (const char *, int);
528
529 /* From regex.c or libc.  BSD 4.4 declares this with the argument type as
530    "const char *" in unistd.h, so we can't declare the argument
531    as "char *".  */
532
533 extern char *re_comp (const char *);
534
535 /* From symfile.c */
536
537 extern void symbol_file_command (char *, int);
538
539 /* Remote targets may wish to use this as their load function.  */
540 extern void generic_load (char *name, int from_tty);
541
542 /* Report on STREAM the performance of memory transfer operation,
543    such as 'load'. 
544    DATA_COUNT is the number of bytes transferred.
545    WRITE_COUNT is the number of separate write operations, or 0,
546    if that information is not available.
547    START_TIME is the time at which an operation was started.
548    END_TIME is the time at which an operation ended.  */
549 struct timeval;
550 extern void print_transfer_performance (struct ui_file *stream,
551                                         unsigned long data_count,
552                                         unsigned long write_count,
553                                         const struct timeval *start_time,
554                                         const struct timeval *end_time);
555
556 /* From top.c */
557
558 typedef void initialize_file_ftype (void);
559
560 extern char *skip_quoted (char *);
561
562 extern char *gdb_readline (char *);
563
564 extern char *gdb_readline_wrapper (char *);
565
566 extern char *command_line_input (char *, int, char *);
567
568 extern void print_prompt (void);
569
570 extern int input_from_terminal_p (void);
571
572 extern int info_verbose;
573
574 /* From printcmd.c */
575
576 extern void set_next_address (struct gdbarch *, CORE_ADDR);
577
578 extern void print_address_symbolic (struct gdbarch *, CORE_ADDR,
579                                     struct ui_file *, int, char *);
580
581 extern int build_address_symbolic (struct gdbarch *,
582                                    CORE_ADDR addr,
583                                    int do_demangle, 
584                                    char **name, 
585                                    int *offset, 
586                                    char **filename, 
587                                    int *line,   
588                                    int *unmapped);
589
590 extern void print_address (struct gdbarch *, CORE_ADDR, struct ui_file *);
591 extern const char *pc_prefix (CORE_ADDR);
592
593 /* From source.c */
594
595 #define OPF_TRY_CWD_FIRST     0x01
596 #define OPF_SEARCH_IN_PATH    0x02
597
598 extern int openp (const char *, int, const char *, int, char **);
599
600 extern int source_full_path_of (const char *, char **);
601
602 extern void mod_path (char *, char **);
603
604 extern void add_path (char *, char **, int);
605
606 extern void directory_command (char *, int);
607
608 extern void directory_switch (char *, int);
609
610 extern char *source_path;
611
612 extern void init_source_path (void);
613
614 /* From exec.c */
615
616 /* Take over the 'find_mapped_memory' vector from exec.c. */
617 extern void exec_set_find_memory_regions (int (*) (int (*) (CORE_ADDR, 
618                                                             unsigned long, 
619                                                             int, int, int, 
620                                                             void *),
621                                                    void *));
622
623 /* Possible lvalue types.  Like enum language, this should be in
624    value.h, but needs to be here for the same reason. */
625
626 enum lval_type
627   {
628     /* Not an lval. */
629     not_lval,
630     /* In memory.  */
631     lval_memory,
632     /* In a register.  Registers are relative to a frame.  */
633     lval_register,
634     /* In a gdb internal variable.  */
635     lval_internalvar,
636     /* Part of a gdb internal variable (structure field).  */
637     lval_internalvar_component,
638     /* Value's bits are fetched and stored using functions provided by
639        its creator.  */
640     lval_computed
641   };
642
643 /* Control types for commands */
644
645 enum misc_command_type
646   {
647     ok_command,
648     end_command,
649     else_command,
650     nop_command
651   };
652
653 enum command_control_type
654   {
655     simple_control,
656     break_control,
657     continue_control,
658     while_control,
659     if_control,
660     commands_control,
661     python_control,
662     while_stepping_control,
663     invalid_control
664   };
665
666 /* Structure for saved commands lines
667    (for breakpoints, defined commands, etc).  */
668
669 struct command_line
670   {
671     struct command_line *next;
672     char *line;
673     enum command_control_type control_type;
674     /* The number of elements in body_list.  */
675     int body_count;
676     /* For composite commands, the nested lists of
677        commands. For example, for "if" command this
678        will contain the then branch and the else
679        branch, if that is available.  */
680     struct command_line **body_list;
681   };
682
683 extern struct command_line *read_command_lines (char *, int, int,
684                                                 void (*)(char *, void *),
685                                                 void *);
686 extern struct command_line *read_command_lines_1 (char * (*) (void), int,
687                                                   void (*)(char *, void *),
688                                                   void *);
689
690 extern void free_command_lines (struct command_line **);
691
692 /* To continue the execution commands when running gdb asynchronously. 
693    A continuation structure contains a pointer to a function to be called 
694    to finish the command, once the target has stopped. Such mechanism is
695    used by the finish and until commands, and in the remote protocol
696    when opening an extended-remote connection. */
697
698 struct continuation;
699 struct thread_info;
700 struct inferior;
701
702 /* From utils.c */
703
704 /* Thread specific continuations.  */
705
706 extern void add_continuation (struct thread_info *,
707                               void (*)(void *), void *,
708                               void (*)(void *));
709 extern void do_all_continuations (void);
710 extern void do_all_continuations_thread (struct thread_info *);
711 extern void discard_all_continuations (void);
712 extern void discard_all_continuations_thread (struct thread_info *);
713
714 extern void add_intermediate_continuation (struct thread_info *,
715                                            void (*)(void *), void *,
716                                            void (*)(void *));
717 extern void do_all_intermediate_continuations (void);
718 extern void do_all_intermediate_continuations_thread (struct thread_info *);
719 extern void discard_all_intermediate_continuations (void);
720 extern void discard_all_intermediate_continuations_thread (struct thread_info *);
721
722 /* Inferior specific (any thread) continuations.  */
723
724 extern void add_inferior_continuation (void (*) (void *),
725                                        void *,
726                                        void (*) (void *));
727 extern void do_all_inferior_continuations (void);
728 extern void discard_all_inferior_continuations (struct inferior *inf);
729
730 /* String containing the current directory (what getwd would return).  */
731
732 extern char *current_directory;
733
734 /* Default radixes for input and output.  Only some values supported.  */
735 extern unsigned input_radix;
736 extern unsigned output_radix;
737
738 /* Possibilities for prettyprint parameters to routines which print
739    things.  Like enum language, this should be in value.h, but needs
740    to be here for the same reason.  FIXME:  If we can eliminate this
741    as an arg to LA_VAL_PRINT, then we can probably move it back to
742    value.h. */
743
744 enum val_prettyprint
745   {
746     Val_no_prettyprint = 0,
747     Val_prettyprint,
748     /* Use the default setting which the user has specified.  */
749     Val_pretty_default
750   };
751
752 /* The ptid struct is a collection of the various "ids" necessary
753    for identifying the inferior.  This consists of the process id
754    (pid), thread id (tid), and other fields necessary for uniquely
755    identifying the inferior process/thread being debugged.  When
756    manipulating ptids, the constructors, accessors, and predicate
757    declared in inferior.h should be used.  These are as follows:
758
759       ptid_build        - Make a new ptid from a pid, lwp, and tid.
760       pid_to_ptid       - Make a new ptid from just a pid.
761       ptid_get_pid      - Fetch the pid component of a ptid.
762       ptid_get_lwp      - Fetch the lwp component of a ptid.
763       ptid_get_tid      - Fetch the tid component of a ptid.
764       ptid_equal        - Test to see if two ptids are equal.
765       ptid_is_pid       - Test to see if this ptid represents a process id.
766
767    Please do NOT access the struct ptid members directly (except, of
768    course, in the implementation of the above ptid manipulation
769    functions).  */
770
771 struct ptid
772   {
773     /* Process id */
774     int pid;
775
776     /* Lightweight process id */
777     long lwp;
778
779     /* Thread id */
780     long tid;
781   };
782
783 typedef struct ptid ptid_t;
784
785 \f
786
787 /* Optional native machine support.  Non-native (and possibly pure
788    multi-arch) targets do not need a "nm.h" file.  This will be a
789    symlink to one of the nm-*.h files, built by the `configure'
790    script.  */
791
792 #ifdef GDB_NM_FILE
793 #include "nm.h"
794 #endif
795
796 /* Assume that fopen accepts the letter "b" in the mode string.
797    It is demanded by ISO C9X, and should be supported on all
798    platforms that claim to have a standard-conforming C library.  On
799    true POSIX systems it will be ignored and have no effect.  There
800    may still be systems without a standard-conforming C library where
801    an ISO C9X compiler (GCC) is available.  Known examples are SunOS
802    4.x and 4.3BSD.  This assumption means these systems are no longer
803    supported.  */
804 #ifndef FOPEN_RB
805 # include "fopen-bin.h"
806 #endif
807
808 /* Defaults for system-wide constants (if not defined by xm.h, we fake it).
809    FIXME: Assumes 2's complement arithmetic */
810
811 #if !defined (UINT_MAX)
812 #define UINT_MAX ((unsigned int)(~0))   /* 0xFFFFFFFF for 32-bits */
813 #endif
814
815 #if !defined (INT_MAX)
816 #define INT_MAX ((int)(UINT_MAX >> 1))  /* 0x7FFFFFFF for 32-bits */
817 #endif
818
819 #if !defined (INT_MIN)
820 #define INT_MIN ((int)((int) ~0 ^ INT_MAX))     /* 0x80000000 for 32-bits */
821 #endif
822
823 #if !defined (ULONG_MAX)
824 #define ULONG_MAX ((unsigned long)(~0L))        /* 0xFFFFFFFF for 32-bits */
825 #endif
826
827 #if !defined (LONG_MAX)
828 #define LONG_MAX ((long)(ULONG_MAX >> 1))       /* 0x7FFFFFFF for 32-bits */
829 #endif
830
831 #if !defined (ULONGEST_MAX)
832 #define ULONGEST_MAX (~(ULONGEST)0)        /* 0xFFFFFFFFFFFFFFFF for 64-bits */
833 #endif
834
835 #if !defined (LONGEST_MAX)                 /* 0x7FFFFFFFFFFFFFFF for 64-bits */
836 #define LONGEST_MAX ((LONGEST)(ULONGEST_MAX >> 1))
837 #endif
838
839 /* Convert a LONGEST to an int.  This is used in contexts (e.g. number of
840    arguments to a function, number in a value history, register number, etc.)
841    where the value must not be larger than can fit in an int.  */
842
843 extern int longest_to_int (LONGEST);
844
845 /* Assorted functions we can declare, now that const and volatile are 
846    defined.  */
847
848 extern char *savestring (const char *, size_t);
849
850 /* xmalloc(), xrealloc() and xcalloc() have already been declared in
851    "libiberty.h". */
852 extern void xfree (void *);
853
854 /* Like xmalloc, but zero the memory.  */
855 extern void *xzalloc (size_t);
856
857 /* Utility macros to allocate typed memory.  Avoids errors like:
858    struct foo *foo = xmalloc (sizeof struct bar); and memset (foo,
859    sizeof (struct foo), 0).  */
860 #define XZALLOC(TYPE) ((TYPE*) xzalloc (sizeof (TYPE)))
861 #define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
862 #define XCALLOC(NMEMB, TYPE) ((TYPE*) xcalloc ((NMEMB), sizeof (TYPE)))
863
864 /* Like asprintf/vasprintf but get an internal_error if the call
865    fails. */
866 extern void xasprintf (char **ret, const char *format, ...) ATTRIBUTE_PRINTF (2, 3);
867 extern void xvasprintf (char **ret, const char *format, va_list ap)
868      ATTRIBUTE_PRINTF (2, 0);
869
870 /* Like asprintf and vasprintf, but return the string, throw an error
871    if no memory.  */
872 extern char *xstrprintf (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
873 extern char *xstrvprintf (const char *format, va_list ap)
874      ATTRIBUTE_PRINTF (1, 0);
875
876 /* Like snprintf, but throw an error if the output buffer is too small.  */
877 extern int xsnprintf (char *str, size_t size, const char *format, ...)
878      ATTRIBUTE_PRINTF (3, 4);
879
880 extern int parse_escape (struct gdbarch *, char **);
881
882 /* Message to be printed before the error message, when an error occurs.  */
883
884 extern char *error_pre_print;
885
886 /* Message to be printed before the error message, when an error occurs.  */
887
888 extern char *quit_pre_print;
889
890 /* Message to be printed before the warning message, when a warning occurs.  */
891
892 extern char *warning_pre_print;
893
894 extern void verror (const char *fmt, va_list ap)
895      ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
896
897 extern void error (const char *fmt, ...)
898      ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
899
900 extern void error_stream (struct ui_file *) ATTRIBUTE_NORETURN;
901
902 extern void vfatal (const char *fmt, va_list ap)
903      ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
904
905 extern void fatal (const char *fmt, ...)
906      ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
907
908 extern void internal_verror (const char *file, int line, const char *,
909                              va_list ap)
910      ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0);
911
912 extern void internal_error (const char *file, int line, const char *, ...)
913      ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 4);
914
915 extern void internal_vwarning (const char *file, int line,
916                                const char *, va_list ap)
917      ATTRIBUTE_PRINTF (3, 0);
918
919 extern void internal_warning (const char *file, int line,
920                               const char *, ...) ATTRIBUTE_PRINTF (3, 4);
921
922 extern void nomem (long) ATTRIBUTE_NORETURN;
923
924 extern void warning (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
925
926 extern void vwarning (const char *, va_list args) ATTRIBUTE_PRINTF (1, 0);
927
928 /* List of known OS ABIs.  If you change this, make sure to update the
929    table in osabi.c.  */
930 enum gdb_osabi
931 {
932   GDB_OSABI_UNINITIALIZED = -1, /* For struct gdbarch_info.  */
933
934   GDB_OSABI_UNKNOWN = 0,        /* keep this zero */
935
936   GDB_OSABI_SVR4,
937   GDB_OSABI_HURD,
938   GDB_OSABI_SOLARIS,
939   GDB_OSABI_OSF1,
940   GDB_OSABI_LINUX,
941   GDB_OSABI_FREEBSD_AOUT,
942   GDB_OSABI_FREEBSD_ELF,
943   GDB_OSABI_NETBSD_AOUT,
944   GDB_OSABI_NETBSD_ELF,
945   GDB_OSABI_OPENBSD_ELF,
946   GDB_OSABI_WINCE,
947   GDB_OSABI_GO32,
948   GDB_OSABI_IRIX,
949   GDB_OSABI_INTERIX,
950   GDB_OSABI_HPUX_ELF,
951   GDB_OSABI_HPUX_SOM,
952   GDB_OSABI_QNXNTO,
953   GDB_OSABI_CYGWIN,
954   GDB_OSABI_AIX,
955   GDB_OSABI_DICOS,
956   GDB_OSABI_DARWIN,
957   GDB_OSABI_SYMBIAN,
958
959   GDB_OSABI_INVALID             /* keep this last */
960 };
961
962 /* Global functions from other, non-gdb GNU thingies.
963    Libiberty thingies are no longer declared here.  We include libiberty.h
964    above, instead.  */
965
966 /* From other system libraries */
967
968 #ifdef HAVE_STDDEF_H
969 #include <stddef.h>
970 #endif
971
972 #ifdef HAVE_STDLIB_H
973 #include <stdlib.h>
974 #endif
975 #ifndef min
976 #define min(a, b) ((a) < (b) ? (a) : (b))
977 #endif
978 #ifndef max
979 #define max(a, b) ((a) > (b) ? (a) : (b))
980 #endif
981
982
983 #ifndef atof
984 extern double atof (const char *);      /* X3.159-1989  4.10.1.1 */
985 #endif
986
987 /* Various possibilities for alloca.  */
988 #ifndef alloca
989 #ifdef __GNUC__
990 #define alloca __builtin_alloca
991 #else /* Not GNU C */
992 #ifdef HAVE_ALLOCA_H
993 #include <alloca.h>
994 #else
995 #ifdef _AIX
996 #pragma alloca
997 #else
998
999 /* We need to be careful not to declare this in a way which conflicts with
1000    bison.  Bison never declares it as char *, but under various circumstances
1001    (like __hpux) we need to use void *.  */
1002 extern void *alloca ();
1003 #endif /* Not _AIX */
1004 #endif /* Not HAVE_ALLOCA_H */
1005 #endif /* Not GNU C */
1006 #endif /* alloca not defined */
1007
1008 /* Dynamic target-system-dependent parameters for GDB. */
1009 #include "gdbarch.h"
1010
1011 /* Maximum size of a register.  Something small, but large enough for
1012    all known ISAs.  If it turns out to be too small, make it bigger.  */
1013
1014 enum { MAX_REGISTER_SIZE = 32 };
1015
1016 /* Static target-system-dependent parameters for GDB. */
1017
1018 /* Number of bits in a char or unsigned char for the target machine.
1019    Just like CHAR_BIT in <limits.h> but describes the target machine.  */
1020 #if !defined (TARGET_CHAR_BIT)
1021 #define TARGET_CHAR_BIT 8
1022 #endif
1023
1024 /* If we picked up a copy of CHAR_BIT from a configuration file
1025    (which may get it by including <limits.h>) then use it to set
1026    the number of bits in a host char.  If not, use the same size
1027    as the target. */
1028
1029 #if defined (CHAR_BIT)
1030 #define HOST_CHAR_BIT CHAR_BIT
1031 #else
1032 #define HOST_CHAR_BIT TARGET_CHAR_BIT
1033 #endif
1034
1035 /* In findvar.c.  */
1036
1037 extern LONGEST extract_signed_integer (const gdb_byte *, int,
1038                                        enum bfd_endian);
1039
1040 extern ULONGEST extract_unsigned_integer (const gdb_byte *, int,
1041                                           enum bfd_endian);
1042
1043 extern int extract_long_unsigned_integer (const gdb_byte *, int,
1044                                           enum bfd_endian, LONGEST *);
1045
1046 extern CORE_ADDR extract_typed_address (const gdb_byte *buf,
1047                                         struct type *type);
1048
1049 extern void store_signed_integer (gdb_byte *, int,
1050                                   enum bfd_endian, LONGEST);
1051
1052 extern void store_unsigned_integer (gdb_byte *, int,
1053                                     enum bfd_endian, ULONGEST);
1054
1055 extern void store_typed_address (gdb_byte *buf, struct type *type,
1056                                  CORE_ADDR addr);
1057
1058 \f
1059 /* From valops.c */
1060
1061 extern int watchdog;
1062
1063 /* Hooks for alternate command interfaces.  */
1064
1065 /* The name of the interpreter if specified on the command line. */
1066 extern char *interpreter_p;
1067
1068 /* If a given interpreter matches INTERPRETER_P then it should update
1069    deprecated_command_loop_hook and deprecated_init_ui_hook with the
1070    per-interpreter implementation.  */
1071 /* FIXME: deprecated_command_loop_hook and deprecated_init_ui_hook
1072    should be moved here. */
1073
1074 struct target_waitstatus;
1075 struct cmd_list_element;
1076
1077 extern void (*deprecated_pre_add_symbol_hook) (const char *);
1078 extern void (*deprecated_post_add_symbol_hook) (void);
1079 extern void (*selected_frame_level_changed_hook) (int);
1080 extern int (*deprecated_ui_loop_hook) (int signo);
1081 extern void (*deprecated_init_ui_hook) (char *argv0);
1082 extern void (*deprecated_command_loop_hook) (void);
1083 extern void (*deprecated_show_load_progress) (const char *section,
1084                                               unsigned long section_sent, 
1085                                               unsigned long section_size, 
1086                                               unsigned long total_sent, 
1087                                               unsigned long total_size);
1088 extern void (*deprecated_print_frame_info_listing_hook) (struct symtab * s,
1089                                                          int line, int stopline,
1090                                                          int noerror);
1091 extern int (*deprecated_query_hook) (const char *, va_list)
1092      ATTRIBUTE_FPTR_PRINTF(1,0);
1093 extern void (*deprecated_warning_hook) (const char *, va_list)
1094      ATTRIBUTE_FPTR_PRINTF(1,0);
1095 extern void (*deprecated_flush_hook) (struct ui_file * stream);
1096 extern void (*deprecated_interactive_hook) (void);
1097 extern void (*deprecated_readline_begin_hook) (char *, ...)
1098      ATTRIBUTE_FPTR_PRINTF_1;
1099 extern char *(*deprecated_readline_hook) (char *);
1100 extern void (*deprecated_readline_end_hook) (void);
1101 extern void (*deprecated_register_changed_hook) (int regno);
1102 extern void (*deprecated_context_hook) (int);
1103 extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
1104                                               struct target_waitstatus *status,
1105                                               int options);
1106
1107 extern void (*deprecated_attach_hook) (void);
1108 extern void (*deprecated_detach_hook) (void);
1109 extern void (*deprecated_call_command_hook) (struct cmd_list_element * c,
1110                                              char *cmd, int from_tty);
1111
1112 extern void (*deprecated_set_hook) (struct cmd_list_element * c);
1113
1114 extern void (*deprecated_error_begin_hook) (void);
1115
1116 extern int (*deprecated_ui_load_progress_hook) (const char *section,
1117                                                 unsigned long num);
1118
1119
1120 /* Inhibit window interface if non-zero. */
1121
1122 extern int use_windows;
1123
1124 /* Definitions of filename-related things.  */
1125
1126 /* Host specific things.  */
1127
1128 #ifdef __MSDOS__
1129 # define CANT_FORK
1130 # define GLOBAL_CURDIR
1131 # define DIRNAME_SEPARATOR ';'
1132 #endif
1133
1134 #if !defined (__CYGWIN__) && defined (_WIN32)
1135 # define DIRNAME_SEPARATOR ';'
1136 #endif
1137
1138 #ifndef DIRNAME_SEPARATOR
1139 #define DIRNAME_SEPARATOR ':'
1140 #endif
1141
1142 #ifndef SLASH_STRING
1143 #define SLASH_STRING "/"
1144 #endif
1145
1146 /* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
1147    The name ``TIDGET'' is a historical accident.  Many uses of TIDGET
1148    in the code actually refer to a lightweight process id, i.e,
1149    something that can be considered a process id in its own right for
1150    certain purposes.  */
1151
1152 #ifndef PIDGET
1153 #define PIDGET(PTID) (ptid_get_pid (PTID))
1154 #define TIDGET(PTID) (ptid_get_lwp (PTID))
1155 #define MERGEPID(PID, TID) ptid_build (PID, TID, 0)
1156 #endif
1157
1158 /* Define well known filenos if the system does not define them.  */
1159 #ifndef STDIN_FILENO
1160 #define STDIN_FILENO   0
1161 #endif
1162 #ifndef STDOUT_FILENO
1163 #define STDOUT_FILENO  1
1164 #endif
1165 #ifndef STDERR_FILENO
1166 #define STDERR_FILENO  2
1167 #endif
1168
1169 /* If this definition isn't overridden by the header files, assume
1170    that isatty and fileno exist on this system.  */
1171 #ifndef ISATTY
1172 #define ISATTY(FP)      (isatty (fileno (FP)))
1173 #endif
1174
1175 /* Ensure that V is aligned to an N byte boundary (B's assumed to be a
1176    power of 2).  Round up/down when necessary.  Examples of correct
1177    use include:
1178
1179    addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
1180    write_memory (addr, value, len);
1181    addr += len;
1182
1183    and:
1184
1185    sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
1186    write_memory (sp, value, len);
1187
1188    Note that uses such as:
1189
1190    write_memory (addr, value, len);
1191    addr += align_up (len, 8);
1192
1193    and:
1194
1195    sp -= align_up (len, 8);
1196    write_memory (sp, value, len);
1197
1198    are typically not correct as they don't ensure that the address (SP
1199    or ADDR) is correctly aligned (relying on previous alignment to
1200    keep things right).  This is also why the methods are called
1201    "align_..." instead of "round_..." as the latter reads better with
1202    this incorrect coding style.  */
1203
1204 extern ULONGEST align_up (ULONGEST v, int n);
1205 extern ULONGEST align_down (ULONGEST v, int n);
1206
1207 /* Allocation and deallocation functions for the libiberty hash table
1208    which use obstacks.  */
1209 void *hashtab_obstack_allocate (void *data, size_t size, size_t count);
1210 void dummy_obstack_deallocate (void *object, void *data);
1211
1212 /* From progspace.c */
1213
1214 extern void initialize_progspace (void);
1215 extern void initialize_inferiors (void);
1216
1217 #endif /* #ifndef DEFS_H */