1 /* Basic, host-specific, and target-specific definitions for GDB. 2 Copyright (C) 1986, 1989, 1991 Free Software Foundation, Inc. 3 4 This file is part of GDB. 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ 19 20 #if !defined (DEFS_H) 21 #define DEFS_H 1 22 23 #include <stdio.h> 24 25 /* First include ansidecl.h so we can use the various macro definitions 26 here and in all subsequent file inclusions. */ 27 28 #include "ansidecl.h" 29 30 /* An address in the program being debugged. Host byte order. */ 31 typedef unsigned int CORE_ADDR; 32 33 #define min(a, b) ((a) < (b) ? (a) : (b)) 34 #define max(a, b) ((a) > (b) ? (a) : (b)) 35 36 /* The character C++ uses to build identifiers that must be unique from 37 the program's identifiers (such as $this and $$vptr). */ 38 #define CPLUS_MARKER '$' /* May be overridden to '.' for SysV */ 39 40 #include <errno.h> /* System call error return status */ 41 42 extern int quit_flag; 43 extern int immediate_quit; 44 45 extern void 46 quit PARAMS ((void)); 47 48 #define QUIT { if (quit_flag) quit (); } 49 50 /* Command classes are top-level categories into which commands are broken 51 down for "help" purposes. 52 Notes on classes: class_alias is for alias commands which are not 53 abbreviations of the original command. class-pseudo is for commands 54 which are not really commands nor help topics ("stop"). */ 55 56 enum command_class 57 { 58 /* Special args to help_list */ 59 all_classes = -2, all_commands = -1, 60 /* Classes of commands */ 61 no_class = -1, class_run = 0, class_vars, class_stack, 62 class_files, class_support, class_info, class_breakpoint, 63 class_alias, class_obscure, class_user, class_maintenance, 64 class_pseudo 65 }; 66 67 /* the cleanup list records things that have to be undone 68 if an error happens (descriptors to be closed, memory to be freed, etc.) 69 Each link in the chain records a function to call and an 70 argument to give it. 71 72 Use make_cleanup to add an element to the cleanup chain. 73 Use do_cleanups to do all cleanup actions back to a given 74 point in the chain. Use discard_cleanups to remove cleanups 75 from the chain back to a given point, not doing them. */ 76 77 struct cleanup 78 { 79 struct cleanup *next; 80 void (*function) PARAMS ((PTR)); 81 PTR arg; 82 }; 83 84 /* From blockframe.c */ 85 86 extern int 87 inside_entry_func PARAMS ((CORE_ADDR)); 88 89 extern int 90 inside_entry_file PARAMS ((CORE_ADDR addr)); 91 92 extern int 93 inside_main_func PARAMS ((CORE_ADDR pc)); 94 95 /* From cplus-dem.c */ 96 97 extern char * 98 cplus_demangle PARAMS ((const char *, int)); 99 100 extern char * 101 cplus_mangle_opname PARAMS ((char *, int)); 102 103 /* From libmmalloc.a (memory mapped malloc library) */ 104 105 extern PTR 106 mmalloc_attach PARAMS ((int, PTR)); 107 108 extern PTR 109 mmalloc_detach PARAMS ((PTR)); 110 111 extern PTR 112 mmalloc PARAMS ((PTR, long)); 113 114 extern PTR 115 mrealloc PARAMS ((PTR, PTR, long)); 116 117 extern void 118 mfree PARAMS ((PTR, PTR)); 119 120 extern int 121 mmalloc_setkey PARAMS ((PTR, int, PTR)); 122 123 extern PTR 124 mmalloc_getkey PARAMS ((PTR, int)); 125 126 /* From utils.c */ 127 128 extern char * 129 demangle_and_match PARAMS ((const char *, const char *, int)); 130 131 extern int 132 strcmp_iw PARAMS ((const char *, const char *)); 133 134 extern char * 135 safe_strerror PARAMS ((int)); 136 137 extern char * 138 safe_strsignal PARAMS ((int)); 139 140 extern void 141 init_malloc PARAMS ((PTR)); 142 143 extern void 144 request_quit PARAMS ((int)); 145 146 extern void 147 do_cleanups PARAMS ((struct cleanup *)); 148 149 extern void 150 discard_cleanups PARAMS ((struct cleanup *)); 151 152 /* The bare make_cleanup function is one of those rare beasts that 153 takes almost any type of function as the first arg and anything that 154 will fit in a "void *" as the second arg. 155 156 Should be, once all calls and called-functions are cleaned up: 157 extern struct cleanup * 158 make_cleanup PARAMS ((void (*function) (PTR), PTR)); 159 160 Until then, lint and/or various type-checking compiler options will 161 complain about make_cleanup calls. It'd be wrong to just cast things, 162 since the type actually passed when the function is called would be 163 wrong. */ 164 165 extern struct cleanup * 166 make_cleanup (); 167 168 extern struct cleanup * 169 save_cleanups PARAMS ((void)); 170 171 extern void 172 restore_cleanups PARAMS ((struct cleanup *)); 173 174 extern void 175 free_current_contents PARAMS ((char **)); 176 177 extern void 178 null_cleanup PARAMS ((char **)); 179 180 extern int 181 myread PARAMS ((int, char *, int)); 182 183 extern int 184 query (); 185 186 extern void 187 wrap_here PARAMS ((char *)); 188 189 extern void 190 reinitialize_more_filter PARAMS ((void)); 191 192 extern int 193 print_insn PARAMS ((CORE_ADDR, FILE *)); 194 195 extern void 196 fputs_filtered PARAMS ((const char *, FILE *)); 197 198 extern void 199 puts_filtered PARAMS ((char *)); 200 201 extern void 202 vfprintf_filtered (); 203 204 extern void 205 fprintf_filtered (); 206 207 extern void 208 fprintfi_filtered (); 209 210 extern void 211 printf_filtered (); 212 213 extern void 214 printfi_filtered (); 215 216 extern void 217 print_spaces PARAMS ((int, FILE *)); 218 219 extern void 220 print_spaces_filtered PARAMS ((int, FILE *)); 221 222 extern char * 223 n_spaces PARAMS ((int)); 224 225 extern void 226 printchar PARAMS ((int, FILE *, int)); 227 228 extern char * 229 strdup_demangled PARAMS ((const char *)); 230 231 extern void 232 fprint_symbol PARAMS ((FILE *, char *)); 233 234 extern void 235 fputs_demangled PARAMS ((char *, FILE *, int)); 236 237 extern void 238 perror_with_name PARAMS ((char *)); 239 240 extern void 241 print_sys_errmsg PARAMS ((char *, int)); 242 243 /* From regex.c */ 244 245 extern char * 246 re_comp PARAMS ((char *)); 247 248 /* From symfile.c */ 249 250 extern void 251 symbol_file_command PARAMS ((char *, int)); 252 253 /* From main.c */ 254 255 extern char * 256 skip_quoted PARAMS ((char *)); 257 258 extern char * 259 gdb_readline PARAMS ((char *)); 260 261 extern char * 262 command_line_input PARAMS ((char *, int)); 263 264 extern void 265 print_prompt PARAMS ((void)); 266 267 extern int 268 batch_mode PARAMS ((void)); 269 270 extern int 271 input_from_terminal_p PARAMS ((void)); 272 273 extern int 274 catch_errors PARAMS ((int (*) (char *), char *, char *)); 275 276 /* From printcmd.c */ 277 278 extern void 279 set_next_address PARAMS ((CORE_ADDR)); 280 281 extern void 282 print_address_symbolic PARAMS ((CORE_ADDR, FILE *, int, char *)); 283 284 extern void 285 print_address PARAMS ((CORE_ADDR, FILE *)); 286 287 /* From source.c */ 288 289 extern int 290 openp PARAMS ((char *, int, char *, int, int, char **)); 291 292 extern void 293 mod_path PARAMS ((char *, char **)); 294 295 extern void 296 directory_command PARAMS ((char *, int)); 297 298 extern void 299 init_source_path PARAMS ((void)); 300 301 /* From findvar.c */ 302 303 extern int 304 read_relative_register_raw_bytes PARAMS ((int, char *)); 305 306 /* From readline (but not in any readline .h files). */ 307 308 extern char * 309 tilde_expand PARAMS ((char *)); 310 311 /* Structure for saved commands lines 312 (for breakpoints, defined commands, etc). */ 313 314 struct command_line 315 { 316 struct command_line *next; 317 char *line; 318 int type; /* statement type */ 319 #define CL_END 0 320 #define CL_NORMAL 1 321 #define CL_WHILE 2 322 #define CL_IF 3 323 #define CL_EXITLOOP 4 324 #define CL_NOP 5 325 struct command_line *body; /* body of loop for while, body of if */ 326 struct command_line *elsebody; /* body of else part of if */ 327 }; 328 329 extern struct command_line * 330 read_command_lines PARAMS ((int)); 331 332 extern void 333 free_command_lines PARAMS ((struct command_line *)); 334 335 /* String containing the current directory (what getwd would return). */ 336 337 extern char *current_directory; 338 339 /* Default radixes for input and output. Only some values supported. */ 340 extern unsigned input_radix; 341 extern unsigned output_radix; 342 343 /* Baud rate specified for communication with serial target systems. */ 344 extern char *baud_rate; 345 346 /* Languages represented in the symbol table and elsewhere. */ 347 348 enum language 349 { 350 language_unknown, /* Language not known */ 351 language_auto, /* Placeholder for automatic setting */ 352 language_c, /* C */ 353 language_cplus, /* C++ */ 354 language_m2 /* Modula-2 */ 355 }; 356 357 /* Return a format string for printf that will print a number in the local 358 (language-specific) hexadecimal format. Result is static and is 359 overwritten by the next call. local_hex_format_custom takes printf 360 options like "08" or "l" (to produce e.g. %08x or %lx). */ 361 362 #define local_hex_format() (current_language->la_hex_format) 363 364 extern char * 365 local_hex_format_custom PARAMS ((char *)); /* language.c */ 366 367 /* Return a string that contains a number formatted in the local 368 (language-specific) hexadecimal format. Result is static and is 369 overwritten by the next call. local_hex_string_custom takes printf 370 options like "08" or "l". */ 371 372 extern char * 373 local_hex_string PARAMS ((int)); /* language.c */ 374 375 extern char * 376 local_hex_string_custom PARAMS ((int, char *)); /* language.c */ 377 378 379 /* Host machine definition. This will be a symlink to one of the 380 xm-*.h files, built by the `configure' script. */ 381 382 #include "xm.h" 383 384 /* If the xm.h file did not define the mode string used to open the 385 files, assume that binary files are opened the same way as text 386 files */ 387 #ifndef FOPEN_RB 388 #include "fopen-same.h" 389 #endif 390 391 /* 392 * Allow things in gdb to be declared "const". If compiling ANSI, it 393 * just works. If compiling with gcc but non-ansi, redefine to __const__. 394 * If non-ansi, non-gcc, then eliminate "const" entirely, making those 395 * objects be read-write rather than read-only. 396 */ 397 398 #ifndef const 399 #ifndef __STDC__ 400 # ifdef __GNUC__ 401 # define const __const__ 402 # else 403 # define const /*nothing*/ 404 # endif /* GNUC */ 405 #endif /* STDC */ 406 #endif /* const */ 407 408 #ifndef volatile 409 #ifndef __STDC__ 410 # ifdef __GNUC__ 411 # define volatile __volatile__ 412 # else 413 # define volatile /*nothing*/ 414 # endif /* GNUC */ 415 #endif /* STDC */ 416 #endif /* volatile */ 417 418 /* Some compilers (many AT&T SVR4 compilers for instance), do not accept 419 declarations of functions that never return (exit for instance) as 420 "volatile void". For such compilers "NORETURN" can be defined away 421 to keep them happy */ 422 423 #ifndef NORETURN 424 # ifdef __lucid 425 # define NORETURN /*nothing*/ 426 # else 427 # define NORETURN volatile 428 # endif 429 #endif 430 431 /* Defaults for system-wide constants (if not defined by xm.h, we fake it). */ 432 433 #if !defined (UINT_MAX) 434 #define UINT_MAX 0xffffffff 435 #endif 436 437 #if !defined (LONG_MAX) 438 #define LONG_MAX 0x7fffffff 439 #endif 440 441 #if !defined (INT_MAX) 442 #define INT_MAX 0x7fffffff 443 #endif 444 445 #if !defined (INT_MIN) 446 /* Two's complement, 32 bit. */ 447 #define INT_MIN -0x80000000 448 #endif 449 450 /* Number of bits in a char or unsigned char for the target machine. 451 Just like CHAR_BIT in <limits.h> but describes the target machine. */ 452 #if !defined (TARGET_CHAR_BIT) 453 #define TARGET_CHAR_BIT 8 454 #endif 455 456 /* Number of bits in a short or unsigned short for the target machine. */ 457 #if !defined (TARGET_SHORT_BIT) 458 #define TARGET_SHORT_BIT (sizeof (short) * TARGET_CHAR_BIT) 459 #endif 460 461 /* Number of bits in an int or unsigned int for the target machine. */ 462 #if !defined (TARGET_INT_BIT) 463 #define TARGET_INT_BIT (sizeof (int) * TARGET_CHAR_BIT) 464 #endif 465 466 /* Number of bits in a long or unsigned long for the target machine. */ 467 #if !defined (TARGET_LONG_BIT) 468 #define TARGET_LONG_BIT (sizeof (long) * TARGET_CHAR_BIT) 469 #endif 470 471 /* Number of bits in a long long or unsigned long long for the target machine. */ 472 #if !defined (TARGET_LONG_LONG_BIT) 473 #define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT) 474 #endif 475 476 /* Number of bits in a float for the target machine. */ 477 #if !defined (TARGET_FLOAT_BIT) 478 #define TARGET_FLOAT_BIT (sizeof (float) * TARGET_CHAR_BIT) 479 #endif 480 481 /* Number of bits in a double for the target machine. */ 482 #if !defined (TARGET_DOUBLE_BIT) 483 #define TARGET_DOUBLE_BIT (sizeof (double) * TARGET_CHAR_BIT) 484 #endif 485 486 /* Number of bits in a long double for the target machine. */ 487 #if !defined (TARGET_LONG_DOUBLE_BIT) 488 #define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT) 489 #endif 490 491 /* Number of bits in a "complex" for the target machine. */ 492 #if !defined (TARGET_COMPLEX_BIT) 493 #define TARGET_COMPLEX_BIT (2 * TARGET_FLOAT_BIT) 494 #endif 495 496 /* Number of bits in a "double complex" for the target machine. */ 497 #if !defined (TARGET_DOUBLE_COMPLEX_BIT) 498 #define TARGET_DOUBLE_COMPLEX_BIT (2 * TARGET_DOUBLE_BIT) 499 #endif 500 501 /* Number of bits in a pointer for the target machine */ 502 #if !defined (TARGET_PTR_BIT) 503 #define TARGET_PTR_BIT TARGET_INT_BIT 504 #endif 505 506 /* Convert a LONGEST to an int. This is used in contexts (e.g. number 507 of arguments to a function, number in a value history, register 508 number, etc.) where the value must not be larger than can fit 509 in an int. */ 510 #if !defined (longest_to_int) 511 #if defined (LONG_LONG) 512 #define longest_to_int(x) (((x) > INT_MAX || (x) < INT_MIN) \ 513 ? (error ("Value out of range."),0) : (int) (x)) 514 #else /* No LONG_LONG. */ 515 /* Assume sizeof (int) == sizeof (long). */ 516 #define longest_to_int(x) ((int) (x)) 517 #endif /* No LONG_LONG. */ 518 #endif /* No longest_to_int. */ 519 520 /* This should not be a typedef, because "unsigned LONGEST" needs 521 to work. LONG_LONG is defined if the host has "long long". */ 522 523 #ifndef LONGEST 524 # ifdef LONG_LONG 525 # define LONGEST long long 526 # else 527 # define LONGEST long 528 # endif 529 #endif 530 531 /* Assorted functions we can declare, now that const and volatile are 532 defined. */ 533 534 extern char * 535 savestring PARAMS ((const char *, int)); 536 537 extern char * 538 msavestring PARAMS ((void *, const char *, int)); 539 540 extern char * 541 strsave PARAMS ((const char *)); 542 543 extern char * 544 mstrsave PARAMS ((void *, const char *)); 545 546 extern char * 547 concat PARAMS ((char *, ...)); 548 549 extern PTR 550 xmalloc PARAMS ((long)); 551 552 extern PTR 553 xrealloc PARAMS ((PTR, long)); 554 555 extern PTR 556 xmmalloc PARAMS ((PTR, long)); 557 558 extern PTR 559 xmrealloc PARAMS ((PTR, PTR, long)); 560 561 extern PTR 562 mmalloc PARAMS ((PTR, long)); 563 564 extern PTR 565 mrealloc PARAMS ((PTR, PTR, long)); 566 567 extern void 568 mfree PARAMS ((PTR, PTR)); 569 570 extern int 571 mmcheck PARAMS ((PTR, void (*) (void))); 572 573 extern int 574 mmtrace PARAMS ((void)); 575 576 extern int 577 parse_escape PARAMS ((char **)); 578 579 extern const char * const reg_names[]; 580 581 extern NORETURN void /* Does not return to the caller. */ 582 error (); 583 584 extern NORETURN void /* Does not return to the caller. */ 585 fatal (); 586 587 extern NORETURN void /* Not specified as volatile in ... */ 588 exit PARAMS ((int)); /* 4.10.4.3 */ 589 590 extern NORETURN void /* Does not return to the caller. */ 591 nomem PARAMS ((long)); 592 593 extern NORETURN void /* Does not return to the caller. */ 594 return_to_top_level PARAMS ((void)); 595 596 extern void 597 warning_setup PARAMS ((void)); 598 599 extern void 600 warning (); 601 602 /* Global functions from other, non-gdb GNU thingies (libiberty for 603 instance) */ 604 605 extern char * 606 basename PARAMS ((char *)); 607 608 extern char * 609 getenv PARAMS ((const char *)); 610 611 extern char ** 612 buildargv PARAMS ((char *)); 613 614 extern void 615 freeargv PARAMS ((char **)); 616 617 extern char * 618 strerrno PARAMS ((int)); 619 620 extern char * 621 strsigno PARAMS ((int)); 622 623 extern int 624 errno_max PARAMS ((void)); 625 626 extern int 627 signo_max PARAMS ((void)); 628 629 extern int 630 strtoerrno PARAMS ((char *)); 631 632 extern int 633 strtosigno PARAMS ((char *)); 634 635 extern char * 636 strsignal PARAMS ((int)); 637 638 /* From other system libraries */ 639 640 #ifndef PSIGNAL_IN_SIGNAL_H 641 extern void 642 psignal PARAMS ((unsigned, char *)); 643 #endif 644 645 /* For now, we can't include <stdlib.h> because it conflicts with 646 "../include/getopt.h". (FIXME) 647 648 However, if a function is defined in the ANSI C standard and a prototype 649 for that function is defined and visible in any header file in an ANSI 650 conforming environment, then that prototype must match the definition in 651 the ANSI standard. So we can just duplicate them here without conflict, 652 since they must be the same in all conforming ANSI environments. If 653 these cause problems, then the environment is not ANSI conformant. */ 654 655 #ifdef __STDC__ 656 #include <stddef.h> 657 #endif 658 659 extern int 660 fclose PARAMS ((FILE *stream)); /* 4.9.5.1 */ 661 662 extern void 663 perror PARAMS ((const char *)); /* 4.9.10.4 */ 664 665 extern double 666 atof PARAMS ((const char *nptr)); /* 4.10.1.1 */ 667 668 extern int 669 atoi PARAMS ((const char *)); /* 4.10.1.2 */ 670 671 #ifndef MALLOC_INCOMPATIBLE 672 673 extern PTR 674 malloc PARAMS ((size_t size)); /* 4.10.3.3 */ 675 676 extern PTR 677 realloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */ 678 679 extern void 680 free PARAMS ((void *)); /* 4.10.3.2 */ 681 682 #endif /* MALLOC_INCOMPATIBLE */ 683 684 extern void 685 qsort PARAMS ((void *base, size_t nmemb, /* 4.10.5.2 */ 686 size_t size, 687 int (*comp)(const void *, const void *))); 688 689 #ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */ 690 extern PTR 691 memcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */ 692 #endif 693 694 extern int 695 memcmp PARAMS ((const void *, const void *, size_t)); /* 4.11.4.1 */ 696 697 extern char * 698 strchr PARAMS ((const char *, int)); /* 4.11.5.2 */ 699 700 extern char * 701 strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */ 702 703 extern char * 704 strstr PARAMS ((const char *, const char *)); /* 4.11.5.7 */ 705 706 extern char * 707 strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */ 708 709 #ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */ 710 extern PTR 711 memset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */ 712 #endif 713 714 extern char * 715 strerror PARAMS ((int)); /* 4.11.6.2 */ 716 717 /* Various possibilities for alloca. */ 718 #ifndef alloca 719 # ifdef notdef /*XXX*/ 720 # define alloca __builtin_alloca 721 # else 722 # ifdef sparc 723 # include <alloca.h> /* NOTE: Doesn't declare alloca() */ 724 # endif 725 # ifdef __STDC__ 726 extern void *alloca (size_t); 727 # else /* __STDC__ */ 728 extern char *alloca (); 729 # endif 730 # endif 731 #endif 732 733 /* TARGET_BYTE_ORDER and HOST_BYTE_ORDER must be defined to one of these. */ 734 735 #if !defined (BIG_ENDIAN) 736 #define BIG_ENDIAN 4321 737 #endif 738 739 #if !defined (LITTLE_ENDIAN) 740 #define LITTLE_ENDIAN 1234 741 #endif 742 743 /* Target-system-dependent parameters for GDB. 744 745 The standard thing is to include defs.h. However, files that are 746 specific to a particular target can define TM_FILE_OVERRIDE before 747 including defs.h, then can include any particular tm-file they desire. */ 748 749 /* Target machine definition. This will be a symlink to one of the 750 tm-*.h files, built by the `configure' script. */ 751 752 #ifndef TM_FILE_OVERRIDE 753 #include "tm.h" 754 #endif 755 756 /* The bit byte-order has to do just with numbering of bits in 757 debugging symbols and such. Conceptually, it's quite separate 758 from byte/word byte order. */ 759 760 #if !defined (BITS_BIG_ENDIAN) 761 #if TARGET_BYTE_ORDER == BIG_ENDIAN 762 #define BITS_BIG_ENDIAN 1 763 #endif /* Big endian. */ 764 765 #if TARGET_BYTE_ORDER == LITTLE_ENDIAN 766 #define BITS_BIG_ENDIAN 0 767 #endif /* Little endian. */ 768 #endif /* BITS_BIG_ENDIAN not defined. */ 769 770 /* Swap LEN bytes at BUFFER between target and host byte-order. */ 771 #if TARGET_BYTE_ORDER == HOST_BYTE_ORDER 772 #define SWAP_TARGET_AND_HOST(buffer,len) 773 #else /* Target and host byte order differ. */ 774 #define SWAP_TARGET_AND_HOST(buffer,len) \ 775 { \ 776 char tmp; \ 777 char *p = (char *)(buffer); \ 778 char *q = ((char *)(buffer)) + len - 1; \ 779 for (; p < q; p++, q--) \ 780 { \ 781 tmp = *q; \ 782 *q = *p; \ 783 *p = tmp; \ 784 } \ 785 } 786 #endif /* Target and host byte order differ. */ 787 788 /* On some machines there are bits in addresses which are not really 789 part of the address, but are used by the kernel, the hardware, etc. 790 for special purposes. ADDR_BITS_REMOVE takes out any such bits 791 so we get a "real" address such as one would find in a symbol 792 table. ADDR_BITS_SET sets those bits the way the system wants 793 them. */ 794 #if !defined (ADDR_BITS_REMOVE) 795 #define ADDR_BITS_REMOVE(addr) (addr) 796 #define ADDR_BITS_SET(addr) (addr) 797 #endif /* No ADDR_BITS_REMOVE. */ 798 799 /* If this definition isn't overridden by the header files, assume 800 that isatty and fileno exist on this system. */ 801 #ifndef ISATTY 802 #define ISATTY(FP) (isatty(fileno(FP))) 803 #endif 804 805 /* From valops.c */ 806 807 extern CORE_ADDR 808 push_bytes PARAMS ((CORE_ADDR, char *, int)); 809 810 /* In some modules, we don't have a definition of REGISTER_TYPE yet, so we 811 must avoid prototyping this function for now. FIXME. Should be: 812 extern CORE_ADDR 813 push_word PARAMS ((CORE_ADDR, REGISTER_TYPE)); 814 */ 815 extern CORE_ADDR 816 push_word (); 817 818 /* Some parts of gdb might be considered optional, in the sense that they 819 are not essential for being able to build a working, usable debugger 820 for a specific environment. For example, the maintenance commands 821 are there for the benefit of gdb maintainers. As another example, 822 some environments really don't need gdb's that are able to read N 823 different object file formats. In order to make it possible (but 824 not necessarily recommended) to build "stripped down" versions of 825 gdb, the following defines control selective compilation of those 826 parts of gdb which can be safely left out when necessary. Note that 827 the default is to include everything. */ 828 829 #ifndef MAINTENANCE_CMDS 830 #define MAINTENANCE_CMDS 1 831 #endif 832 833 #endif /* !defined (DEFS_H) */ 834