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