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