* defs.h (enum misc_command_type, command_control_type): Enums
[binutils-gdb.git] / gdb / defs.h
1 /* Basic, host-specific, and target-specific definitions for GDB.
2 Copyright (C) 1986, 1989, 1991, 1992, 1993, 1994
3 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
20
21 #if !defined (DEFS_H)
22 #define DEFS_H 1
23
24 #include <stdio.h>
25
26 /* First include ansidecl.h so we can use the various macro definitions
27 here and in all subsequent file inclusions. */
28
29 #include "ansidecl.h"
30
31 #include "libiberty.h"
32
33 /* libiberty.h can't declare this one, but evidently we can. */
34 extern char *strsignal PARAMS ((int));
35
36 /* For BFD64 and bfd_vma. */
37 #include "bfd.h"
38
39 /* An address in the program being debugged. Host byte order. Rather
40 than duplicate all the logic in BFD which figures out what type
41 this is (long, long long, etc.) and whether it needs to be 64
42 bits (the host/target interactions are subtle), we just use
43 bfd_vma. */
44
45 typedef bfd_vma CORE_ADDR;
46
47 #define min(a, b) ((a) < (b) ? (a) : (b))
48 #define max(a, b) ((a) > (b) ? (a) : (b))
49
50 /* Gdb does *lots* of string compares. Use macros to speed them up by
51 avoiding function calls if the first characters are not the same. */
52
53 #define STRCMP(a,b) (*(a) == *(b) ? strcmp ((a), (b)) : (int)*(a) - (int)*(b))
54 #define STREQ(a,b) (*(a) == *(b) ? !strcmp ((a), (b)) : 0)
55 #define STREQN(a,b,c) (*(a) == *(b) ? !strncmp ((a), (b), (c)) : 0)
56
57 /* The character GNU C++ uses to build identifiers that must be unique from
58 the program's identifiers (such as $this and $$vptr). */
59 #define CPLUS_MARKER '$' /* May be overridden to '.' for SysV */
60
61 #include <errno.h> /* System call error return status */
62
63 extern int quit_flag;
64 extern int immediate_quit;
65 extern int sevenbit_strings;
66
67 extern void quit PARAMS ((void));
68
69 #define QUIT { if (quit_flag) quit (); }
70
71 /* Command classes are top-level categories into which commands are broken
72 down for "help" purposes.
73 Notes on classes: class_alias is for alias commands which are not
74 abbreviations of the original command. class-pseudo is for commands
75 which are not really commands nor help topics ("stop"). */
76
77 enum command_class
78 {
79 /* Special args to help_list */
80 all_classes = -2, all_commands = -1,
81 /* Classes of commands */
82 no_class = -1, class_run = 0, class_vars, class_stack,
83 class_files, class_support, class_info, class_breakpoint,
84 class_alias, class_obscure, class_user, class_maintenance,
85 class_pseudo
86 };
87
88 /* Languages represented in the symbol table and elsewhere.
89 This should probably be in language.h, but since enum's can't
90 be forward declared to satisfy opaque references before their
91 actual definition, needs to be here. */
92
93 enum language
94 {
95 language_unknown, /* Language not known */
96 language_auto, /* Placeholder for automatic setting */
97 language_c, /* C */
98 language_cplus, /* C++ */
99 language_chill, /* Chill */
100 language_fortran, /* Fortran */
101 language_m2, /* Modula-2 */
102 language_asm /* Assembly language */
103 };
104
105 /* the cleanup list records things that have to be undone
106 if an error happens (descriptors to be closed, memory to be freed, etc.)
107 Each link in the chain records a function to call and an
108 argument to give it.
109
110 Use make_cleanup to add an element to the cleanup chain.
111 Use do_cleanups to do all cleanup actions back to a given
112 point in the chain. Use discard_cleanups to remove cleanups
113 from the chain back to a given point, not doing them. */
114
115 struct cleanup
116 {
117 struct cleanup *next;
118 void (*function) PARAMS ((PTR));
119 PTR arg;
120 };
121
122 /* From blockframe.c */
123
124 extern int inside_entry_func PARAMS ((CORE_ADDR));
125
126 extern int inside_entry_file PARAMS ((CORE_ADDR addr));
127
128 extern int inside_main_func PARAMS ((CORE_ADDR pc));
129
130 /* From ch-lang.c, for the moment. (FIXME) */
131
132 extern char *chill_demangle PARAMS ((const char *));
133
134 /* From libiberty.a */
135
136 extern char *cplus_demangle PARAMS ((const char *, int));
137
138 extern char *cplus_mangle_opname PARAMS ((char *, int));
139
140 /* From libmmalloc.a (memory mapped malloc library) */
141
142 extern PTR mmalloc_attach PARAMS ((int, PTR));
143
144 extern PTR mmalloc_detach PARAMS ((PTR));
145
146 extern PTR mmalloc PARAMS ((PTR, long));
147
148 extern PTR mrealloc PARAMS ((PTR, PTR, long));
149
150 extern void mfree PARAMS ((PTR, PTR));
151
152 extern int mmalloc_setkey PARAMS ((PTR, int, PTR));
153
154 extern PTR mmalloc_getkey PARAMS ((PTR, int));
155
156 /* From utils.c */
157
158 extern int strcmp_iw PARAMS ((const char *, const char *));
159
160 extern char *safe_strerror PARAMS ((int));
161
162 extern char *safe_strsignal PARAMS ((int));
163
164 extern void init_malloc PARAMS ((void *));
165
166 extern void request_quit PARAMS ((int));
167
168 extern void do_cleanups PARAMS ((struct cleanup *));
169
170 extern void discard_cleanups PARAMS ((struct cleanup *));
171
172 /* The bare make_cleanup function is one of those rare beasts that
173 takes almost any type of function as the first arg and anything that
174 will fit in a "void *" as the second arg.
175
176 Should be, once all calls and called-functions are cleaned up:
177 extern struct cleanup *
178 make_cleanup PARAMS ((void (*function) (void *), void *));
179
180 Until then, lint and/or various type-checking compiler options will
181 complain about make_cleanup calls. It'd be wrong to just cast things,
182 since the type actually passed when the function is called would be
183 wrong. */
184
185 extern struct cleanup *make_cleanup ();
186
187 extern struct cleanup *save_cleanups PARAMS ((void));
188
189 extern void restore_cleanups PARAMS ((struct cleanup *));
190
191 extern void free_current_contents PARAMS ((char **));
192
193 extern void null_cleanup PARAMS ((char **));
194
195 extern int myread PARAMS ((int, char *, int));
196
197 extern int query ();
198 \f
199 /* Annotation stuff. */
200
201 extern int annotation_level; /* in stack.c */
202 \f
203 extern void begin_line PARAMS ((void));
204
205 extern void wrap_here PARAMS ((char *));
206
207 extern void reinitialize_more_filter PARAMS ((void));
208
209 typedef FILE GDB_FILE;
210 #define gdb_stdout stdout
211 #define gdb_stderr stderr
212
213 extern int print_insn PARAMS ((CORE_ADDR, GDB_FILE *));
214
215 extern void gdb_flush PARAMS ((GDB_FILE *));
216
217 extern GDB_FILE *gdb_fopen PARAMS ((char * name, char * mode));
218
219 extern void fputs_filtered PARAMS ((const char *, GDB_FILE *));
220
221 extern void fputs_unfiltered PARAMS ((const char *, GDB_FILE *));
222
223 extern void fputc_unfiltered PARAMS ((int, GDB_FILE *));
224
225 extern void putc_unfiltered PARAMS ((int));
226
227 #define putchar_unfiltered(C) putc_unfiltered(C)
228
229 extern void puts_filtered PARAMS ((char *));
230
231 extern void puts_unfiltered PARAMS ((char *));
232
233 extern void vprintf_filtered ();
234
235 extern void vfprintf_filtered ();
236
237 extern void fprintf_filtered ();
238
239 extern void fprintfi_filtered ();
240
241 extern void printf_filtered ();
242
243 extern void printfi_filtered ();
244
245 extern void vprintf_unfiltered ();
246
247 extern void vfprintf_unfiltered ();
248
249 extern void fprintf_unfiltered ();
250
251 extern void printf_unfiltered ();
252
253 extern void print_spaces PARAMS ((int, GDB_FILE *));
254
255 extern void print_spaces_filtered PARAMS ((int, GDB_FILE *));
256
257 extern char *n_spaces PARAMS ((int));
258
259 extern void gdb_printchar PARAMS ((int, GDB_FILE *, int));
260
261 extern void gdb_print_address PARAMS ((void *, GDB_FILE *));
262
263 extern void fprintf_symbol_filtered PARAMS ((GDB_FILE *, char *,
264 enum language, int));
265
266 extern void perror_with_name PARAMS ((char *));
267
268 extern void print_sys_errmsg PARAMS ((char *, int));
269
270 /* From regex.c or libc. BSD 4.4 declares this with the argument type as
271 "const char *" in unistd.h, so we can't declare the argument
272 as "char *". */
273
274 extern char *re_comp PARAMS ((const char *));
275
276 /* From symfile.c */
277
278 extern void symbol_file_command PARAMS ((char *, int));
279
280 /* From main.c */
281
282 extern char *skip_quoted PARAMS ((char *));
283
284 extern char *gdb_readline PARAMS ((char *));
285
286 extern char *command_line_input PARAMS ((char *, int, char *));
287
288 extern void print_prompt PARAMS ((void));
289
290 extern int input_from_terminal_p PARAMS ((void));
291
292 /* From printcmd.c */
293
294 extern void set_next_address PARAMS ((CORE_ADDR));
295
296 extern void print_address_symbolic PARAMS ((CORE_ADDR, GDB_FILE *, int,
297 char *));
298
299 extern void print_address_numeric PARAMS ((CORE_ADDR, int, GDB_FILE *));
300
301 extern void print_address PARAMS ((CORE_ADDR, GDB_FILE *));
302
303 /* From source.c */
304
305 extern int openp PARAMS ((char *, int, char *, int, int, char **));
306
307 extern void mod_path PARAMS ((char *, char **));
308
309 extern void directory_command PARAMS ((char *, int));
310
311 extern void init_source_path PARAMS ((void));
312
313 /* From findvar.c */
314
315 extern int read_relative_register_raw_bytes PARAMS ((int, char *));
316
317 /* From readline (but not in any readline .h files). */
318
319 extern char *tilde_expand PARAMS ((char *));
320
321 /* Control types for commands */
322
323 enum misc_command_type
324 {
325 ok_command,
326 end_command,
327 else_command,
328 nop_command,
329 };
330
331 enum command_control_type
332 {
333 simple_control,
334 break_control,
335 continue_control,
336 while_control,
337 if_control,
338 invalid_control
339 };
340
341 /* Structure for saved commands lines
342 (for breakpoints, defined commands, etc). */
343
344 struct command_line
345 {
346 struct command_line *next;
347 char *line;
348 enum command_control_type control_type;
349 int body_count;
350 struct command_line **body_list;
351 };
352
353 extern struct command_line *read_command_lines PARAMS ((void));
354
355 extern void free_command_lines PARAMS ((struct command_line **));
356
357 /* String containing the current directory (what getwd would return). */
358
359 extern char *current_directory;
360
361 /* Default radixes for input and output. Only some values supported. */
362 extern unsigned input_radix;
363 extern unsigned output_radix;
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 /* The ability to declare that a function never returns is useful, but
425 not really required to compile GDB successfully, so the NORETURN and
426 ATTR_NORETURN macros normally expand into nothing. */
427
428 /* If compiling with older versions of GCC, a function may be declared
429 "volatile" to indicate that it does not return. */
430
431 #ifndef NORETURN
432 # if defined(__GNUC__) \
433 && (__GNUC__ == 1 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
434 # define NORETURN volatile
435 # else
436 # define NORETURN /* nothing */
437 # endif
438 #endif
439
440 /* GCC 2.5 and later versions define a function attribute "noreturn",
441 which is the preferred way to declare that a function never returns. */
442
443 #ifndef ATTR_NORETURN
444 # if defined(__GNUC__) && __GNUC__ >= 2 && __GNUC_MINOR__ >= 5
445 # define ATTR_NORETURN __attribute__ ((noreturn))
446 # else
447 # define ATTR_NORETURN /* nothing */
448 # endif
449 #endif
450
451 /* Defaults for system-wide constants (if not defined by xm.h, we fake it). */
452
453 #if !defined (UINT_MAX)
454 #define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
455 #endif
456
457 #if !defined (INT_MAX)
458 #define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
459 #endif
460
461 #if !defined (INT_MIN)
462 #define INT_MIN (-INT_MAX - 1) /* 0x80000000 for 32-bits */
463 #endif
464
465 #if !defined (ULONG_MAX)
466 #define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
467 #endif
468
469 #if !defined (LONG_MAX)
470 #define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
471 #endif
472
473 #ifdef BFD64
474
475 /* This is to make sure that LONGEST is at least as big as CORE_ADDR. */
476
477 #define LONGEST BFD_HOST_64_BIT
478
479 #else /* No BFD64 */
480
481 /* If all compilers for this host support "long long" and we want to
482 use it for LONGEST (the performance hit is about 10% on a testsuite
483 run based on one DECstation test), then the xm.h file can define
484 CC_HAS_LONG_LONG.
485
486 Using GCC 1.39 on BSDI with long long causes about 700 new
487 testsuite failures. Using long long for LONGEST on the DECstation
488 causes 3 new FAILs in the testsuite and many heuristic fencepost
489 warnings. These are not investigated, but a first guess would be
490 that the BSDI problems are GCC bugs in long long support and the
491 latter are GDB bugs. */
492
493 #ifndef CC_HAS_LONG_LONG
494 # if defined (__GNUC__) && defined (FORCE_LONG_LONG)
495 # define CC_HAS_LONG_LONG 1
496 # endif
497 #endif
498
499 /* LONGEST should not be a typedef, because "unsigned LONGEST" needs to work.
500 CC_HAS_LONG_LONG is defined if the host compiler supports "long long"
501 variables and we wish to make use of that support. */
502
503 #ifndef LONGEST
504 # ifdef CC_HAS_LONG_LONG
505 # define LONGEST long long
506 # else
507 # define LONGEST long
508 # endif
509 #endif
510
511 #endif /* No BFD64 */
512
513 /* Convert a LONGEST to an int. This is used in contexts (e.g. number of
514 arguments to a function, number in a value history, register number, etc.)
515 where the value must not be larger than can fit in an int. */
516
517 extern int longest_to_int PARAMS ((LONGEST));
518
519 /* Assorted functions we can declare, now that const and volatile are
520 defined. */
521
522 extern char *savestring PARAMS ((const char *, int));
523
524 extern char *msavestring PARAMS ((void *, const char *, int));
525
526 extern char *strsave PARAMS ((const char *));
527
528 extern char *mstrsave PARAMS ((void *, const char *));
529
530 extern PTR xmalloc PARAMS ((long));
531
532 extern PTR xrealloc PARAMS ((PTR, long));
533
534 extern PTR xmmalloc PARAMS ((PTR, long));
535
536 extern PTR xmrealloc PARAMS ((PTR, PTR, long));
537
538 extern PTR mmalloc PARAMS ((PTR, long));
539
540 extern PTR mrealloc PARAMS ((PTR, PTR, long));
541
542 extern void mfree PARAMS ((PTR, PTR));
543
544 extern int mmcheck PARAMS ((PTR, void (*) (void)));
545
546 extern int mmtrace PARAMS ((void));
547
548 extern int parse_escape PARAMS ((char **));
549
550 extern const char * const reg_names[];
551
552 /* Message to be printed before the error message, when an error occurs. */
553
554 extern char *error_pre_print;
555
556 /* Message to be printed before the warning message, when a warning occurs. */
557
558 extern char *warning_pre_print;
559
560 extern NORETURN void error () ATTR_NORETURN;
561
562 extern void error_begin PARAMS ((void));
563
564 extern NORETURN void fatal () ATTR_NORETURN;
565
566 extern NORETURN void exit PARAMS ((int)) ATTR_NORETURN; /* 4.10.4.3 */
567
568 extern NORETURN void nomem PARAMS ((long)) ATTR_NORETURN;
569
570 /* Reasons for calling return_to_top_level. */
571 enum return_reason {
572 /* User interrupt. */
573 RETURN_QUIT,
574
575 /* Any other error. */
576 RETURN_ERROR
577 };
578
579 #define RETURN_MASK_QUIT (1 << (int)RETURN_QUIT)
580 #define RETURN_MASK_ERROR (1 << (int)RETURN_ERROR)
581 #define RETURN_MASK_ALL (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
582 typedef int return_mask;
583
584 extern NORETURN void
585 return_to_top_level PARAMS ((enum return_reason)) ATTR_NORETURN;
586
587 extern int
588 catch_errors PARAMS ((int (*) (char *), void *, char *, return_mask));
589
590 extern void warning_setup PARAMS ((void));
591
592 extern void warning ();
593
594 /* Global functions from other, non-gdb GNU thingies.
595 Libiberty thingies are no longer declared here. We include libiberty.h
596 above, instead. */
597
598 extern char *getenv PARAMS ((const char *));
599
600 /* From other system libraries */
601
602 #ifndef PSIGNAL_IN_SIGNAL_H
603 extern void psignal PARAMS ((unsigned, const char *));
604 #endif
605
606 /* For now, we can't include <stdlib.h> because it conflicts with
607 "../include/getopt.h". (FIXME)
608
609 However, if a function is defined in the ANSI C standard and a prototype
610 for that function is defined and visible in any header file in an ANSI
611 conforming environment, then that prototype must match the definition in
612 the ANSI standard. So we can just duplicate them here without conflict,
613 since they must be the same in all conforming ANSI environments. If
614 these cause problems, then the environment is not ANSI conformant. */
615
616 #ifdef __STDC__
617 #include <stddef.h>
618 #endif
619
620 extern int fclose PARAMS ((GDB_FILE *stream)); /* 4.9.5.1 */
621
622 extern void perror PARAMS ((const char *)); /* 4.9.10.4 */
623
624 extern double atof PARAMS ((const char *nptr)); /* 4.10.1.1 */
625
626 extern int atoi PARAMS ((const char *)); /* 4.10.1.2 */
627
628 #ifndef MALLOC_INCOMPATIBLE
629
630 extern PTR malloc PARAMS ((size_t size)); /* 4.10.3.3 */
631
632 extern PTR realloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */
633
634 extern void free PARAMS ((void *)); /* 4.10.3.2 */
635
636 #endif /* MALLOC_INCOMPATIBLE */
637
638 extern void
639 qsort PARAMS ((void *base, size_t nmemb, /* 4.10.5.2 */
640 size_t size,
641 int (*compar)(const void *, const void *)));
642
643 #ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
644 extern PTR memcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */
645
646 extern int memcmp PARAMS ((const void *, const void *, size_t)); /* 4.11.4.1 */
647 #endif
648
649 extern char *strchr PARAMS ((const char *, int)); /* 4.11.5.2 */
650
651 extern char *strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */
652
653 extern char *strstr PARAMS ((const char *, const char *)); /* 4.11.5.7 */
654
655 extern char *strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */
656
657 #ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
658 extern PTR memset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */
659 #endif
660
661 extern char *strerror PARAMS ((int)); /* 4.11.6.2 */
662
663 /* Various possibilities for alloca. */
664 #ifndef alloca
665 # ifdef __GNUC__
666 # define alloca __builtin_alloca
667 # else /* Not GNU C */
668 # ifdef sparc
669 # include <alloca.h> /* NOTE: Doesn't declare alloca() */
670 # endif
671
672 /* We need to be careful not to declare this in a way which conflicts with
673 bison. Bison never declares it as char *, but under various circumstances
674 (like __hpux) we need to use void *. */
675 # if defined (__STDC__) || defined (__hpux)
676 extern void *alloca ();
677 # else /* Don't use void *. */
678 extern char *alloca ();
679 # endif /* Don't use void *. */
680 # endif /* Not GNU C */
681 #endif /* alloca not defined */
682
683 /* TARGET_BYTE_ORDER and HOST_BYTE_ORDER must be defined to one of these. */
684
685 #if !defined (BIG_ENDIAN)
686 #define BIG_ENDIAN 4321
687 #endif
688
689 #if !defined (LITTLE_ENDIAN)
690 #define LITTLE_ENDIAN 1234
691 #endif
692
693 /* Target-system-dependent parameters for GDB. */
694
695 /* Target machine definition. This will be a symlink to one of the
696 tm-*.h files, built by the `configure' script. */
697
698 #include "tm.h"
699
700 /* Number of bits in a char or unsigned char for the target machine.
701 Just like CHAR_BIT in <limits.h> but describes the target machine. */
702 #if !defined (TARGET_CHAR_BIT)
703 #define TARGET_CHAR_BIT 8
704 #endif
705
706 /* Number of bits in a short or unsigned short for the target machine. */
707 #if !defined (TARGET_SHORT_BIT)
708 #define TARGET_SHORT_BIT (2 * TARGET_CHAR_BIT)
709 #endif
710
711 /* Number of bits in an int or unsigned int for the target machine. */
712 #if !defined (TARGET_INT_BIT)
713 #define TARGET_INT_BIT (4 * TARGET_CHAR_BIT)
714 #endif
715
716 /* Number of bits in a long or unsigned long for the target machine. */
717 #if !defined (TARGET_LONG_BIT)
718 #define TARGET_LONG_BIT (4 * TARGET_CHAR_BIT)
719 #endif
720
721 /* Number of bits in a long long or unsigned long long for the target machine. */
722 #if !defined (TARGET_LONG_LONG_BIT)
723 #define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT)
724 #endif
725
726 /* Number of bits in a float for the target machine. */
727 #if !defined (TARGET_FLOAT_BIT)
728 #define TARGET_FLOAT_BIT (4 * TARGET_CHAR_BIT)
729 #endif
730
731 /* Number of bits in a double for the target machine. */
732 #if !defined (TARGET_DOUBLE_BIT)
733 #define TARGET_DOUBLE_BIT (8 * TARGET_CHAR_BIT)
734 #endif
735
736 /* Number of bits in a long double for the target machine. */
737 #if !defined (TARGET_LONG_DOUBLE_BIT)
738 #define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT)
739 #endif
740
741 /* Number of bits in a "complex" for the target machine. */
742 #if !defined (TARGET_COMPLEX_BIT)
743 #define TARGET_COMPLEX_BIT (2 * TARGET_FLOAT_BIT)
744 #endif
745
746 /* Number of bits in a "double complex" for the target machine. */
747 #if !defined (TARGET_DOUBLE_COMPLEX_BIT)
748 #define TARGET_DOUBLE_COMPLEX_BIT (2 * TARGET_DOUBLE_BIT)
749 #endif
750
751 /* Number of bits in a pointer for the target machine */
752 #if !defined (TARGET_PTR_BIT)
753 #define TARGET_PTR_BIT TARGET_INT_BIT
754 #endif
755
756 /* If we picked up a copy of CHAR_BIT from a configuration file
757 (which may get it by including <limits.h>) then use it to set
758 the number of bits in a host char. If not, use the same size
759 as the target. */
760
761 #if defined (CHAR_BIT)
762 #define HOST_CHAR_BIT CHAR_BIT
763 #else
764 #define HOST_CHAR_BIT TARGET_CHAR_BIT
765 #endif
766
767 /* The bit byte-order has to do just with numbering of bits in
768 debugging symbols and such. Conceptually, it's quite separate
769 from byte/word byte order. */
770
771 #if !defined (BITS_BIG_ENDIAN)
772 #if TARGET_BYTE_ORDER == BIG_ENDIAN
773 #define BITS_BIG_ENDIAN 1
774 #endif /* Big endian. */
775
776 #if TARGET_BYTE_ORDER == LITTLE_ENDIAN
777 #define BITS_BIG_ENDIAN 0
778 #endif /* Little endian. */
779 #endif /* BITS_BIG_ENDIAN not defined. */
780
781 /* In findvar.c. */
782
783 extern LONGEST extract_signed_integer PARAMS ((void *, int));
784
785 extern unsigned LONGEST extract_unsigned_integer PARAMS ((void *, int));
786
787 extern CORE_ADDR extract_address PARAMS ((void *, int));
788
789 extern void store_signed_integer PARAMS ((void *, int, LONGEST));
790
791 extern void store_unsigned_integer PARAMS ((void *, int, unsigned LONGEST));
792
793 extern void store_address PARAMS ((void *, int, CORE_ADDR));
794
795 extern double extract_floating PARAMS ((void *, int));
796
797 extern void store_floating PARAMS ((void *, int, double));
798 \f
799 /* On some machines there are bits in addresses which are not really
800 part of the address, but are used by the kernel, the hardware, etc.
801 for special purposes. ADDR_BITS_REMOVE takes out any such bits
802 so we get a "real" address such as one would find in a symbol
803 table. This is used only for addresses of instructions, and even then
804 I'm not sure it's used in all contexts. It exists to deal with there
805 being a few stray bits in the PC which would mislead us, not as some sort
806 of generic thing to handle alignment or segmentation (it's possible it
807 should be in TARGET_READ_PC instead). */
808 #if !defined (ADDR_BITS_REMOVE)
809 #define ADDR_BITS_REMOVE(addr) (addr)
810 #endif /* No ADDR_BITS_REMOVE. */
811
812 /* From valops.c */
813
814 extern CORE_ADDR push_bytes PARAMS ((CORE_ADDR, char *, int));
815
816 extern CORE_ADDR push_word PARAMS ((CORE_ADDR, unsigned LONGEST));
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 /* Hooks for alternate command interfaces. */
834
835 #ifdef __STDC__
836 struct symtab;
837 struct breakpoint;
838 #endif
839
840 extern void (*init_ui_hook) PARAMS ((void));
841 extern void (*command_loop_hook) PARAMS ((void));
842 extern void (*fputs_unfiltered_hook) PARAMS ((const char *linebuffer));
843 extern void (*print_frame_info_listing_hook) PARAMS ((struct symtab *s, int line,
844 int stopline, int noerror));
845 extern int (*query_hook) PARAMS (());
846 extern void (*flush_hook) PARAMS ((FILE *stream));
847 extern void (*create_breakpoint_hook) PARAMS ((struct breakpoint *b));
848 extern void (*delete_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
849 extern void (*enable_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
850 extern void (*disable_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
851
852 /* Inhibit window interface if non-zero. */
853
854 extern int no_windows;
855
856 #endif /* !defined (DEFS_H) */