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