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