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