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