6bbf019cff25bb1406c25f882ac51107c229e14c
[deliverable/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 /* For BFD64 and bfd_vma. */
31 #include "bfd.h"
32
33 /* An address in the program being debugged. Host byte order. Rather
34 than duplicate all the logic in BFD which figures out what type
35 this is (long, long long, etc.) and whether it needs to be 64
36 bits (the host/target interactions are subtle), we just use
37 bfd_vma. */
38
39 typedef bfd_vma CORE_ADDR;
40
41 #define min(a, b) ((a) < (b) ? (a) : (b))
42 #define max(a, b) ((a) > (b) ? (a) : (b))
43
44 /* Gdb does *lots* of string compares. Use macros to speed them up by
45 avoiding function calls if the first characters are not the same. */
46
47 #define STRCMP(a,b) (*(a) == *(b) ? strcmp ((a), (b)) : (int)*(a) - (int)*(b))
48 #define STREQ(a,b) (*(a) == *(b) ? !strcmp ((a), (b)) : 0)
49 #define STREQN(a,b,c) (*(a) == *(b) ? !strncmp ((a), (b), (c)) : 0)
50
51 /* The character GNU C++ uses to build identifiers that must be unique from
52 the program's identifiers (such as $this and $$vptr). */
53 #define CPLUS_MARKER '$' /* May be overridden to '.' for SysV */
54
55 #include <errno.h> /* System call error return status */
56
57 extern int quit_flag;
58 extern int immediate_quit;
59 extern int sevenbit_strings;
60
61 extern void
62 quit PARAMS ((void));
63
64 #define QUIT { if (quit_flag) quit (); }
65
66 /* Command classes are top-level categories into which commands are broken
67 down for "help" purposes.
68 Notes on classes: class_alias is for alias commands which are not
69 abbreviations of the original command. class-pseudo is for commands
70 which are not really commands nor help topics ("stop"). */
71
72 enum command_class
73 {
74 /* Special args to help_list */
75 all_classes = -2, all_commands = -1,
76 /* Classes of commands */
77 no_class = -1, class_run = 0, class_vars, class_stack,
78 class_files, class_support, class_info, class_breakpoint,
79 class_alias, class_obscure, class_user, class_maintenance,
80 class_pseudo
81 };
82
83 /* Languages represented in the symbol table and elsewhere.
84 This should probably be in language.h, but since enum's can't
85 be forward declared to satisfy opaque references before their
86 actual definition, needs to be here. */
87
88 enum language
89 {
90 language_unknown, /* Language not known */
91 language_auto, /* Placeholder for automatic setting */
92 language_c, /* C */
93 language_cplus, /* C++ */
94 language_chill, /* Chill */
95 language_m2, /* Modula-2 */
96 language_asm /* Assembly language */
97 };
98
99 /* the cleanup list records things that have to be undone
100 if an error happens (descriptors to be closed, memory to be freed, etc.)
101 Each link in the chain records a function to call and an
102 argument to give it.
103
104 Use make_cleanup to add an element to the cleanup chain.
105 Use do_cleanups to do all cleanup actions back to a given
106 point in the chain. Use discard_cleanups to remove cleanups
107 from the chain back to a given point, not doing them. */
108
109 struct cleanup
110 {
111 struct cleanup *next;
112 void (*function) PARAMS ((PTR));
113 PTR arg;
114 };
115
116 /* From blockframe.c */
117
118 extern int
119 inside_entry_func PARAMS ((CORE_ADDR));
120
121 extern int
122 inside_entry_file PARAMS ((CORE_ADDR addr));
123
124 extern int
125 inside_main_func PARAMS ((CORE_ADDR pc));
126
127 /* From ch-lang.c, for the moment. (FIXME) */
128
129 extern char *
130 chill_demangle PARAMS ((const char *));
131
132 /* From libiberty.a */
133
134 extern char *
135 cplus_demangle PARAMS ((const char *, int));
136
137 extern char *
138 cplus_mangle_opname PARAMS ((char *, int));
139
140 /* From libmmalloc.a (memory mapped malloc library) */
141
142 extern PTR
143 mmalloc_attach PARAMS ((int, PTR));
144
145 extern PTR
146 mmalloc_detach PARAMS ((PTR));
147
148 extern PTR
149 mmalloc PARAMS ((PTR, long));
150
151 extern PTR
152 mrealloc PARAMS ((PTR, PTR, long));
153
154 extern void
155 mfree PARAMS ((PTR, PTR));
156
157 extern int
158 mmalloc_setkey PARAMS ((PTR, int, PTR));
159
160 extern PTR
161 mmalloc_getkey PARAMS ((PTR, int));
162
163 /* From utils.c */
164
165 extern int
166 strcmp_iw PARAMS ((const char *, const char *));
167
168 extern char *
169 safe_strerror PARAMS ((int));
170
171 extern char *
172 safe_strsignal PARAMS ((int));
173
174 extern void
175 init_malloc PARAMS ((void *));
176
177 extern void
178 request_quit PARAMS ((int));
179
180 extern void
181 do_cleanups PARAMS ((struct cleanup *));
182
183 extern void
184 discard_cleanups PARAMS ((struct cleanup *));
185
186 /* The bare make_cleanup function is one of those rare beasts that
187 takes almost any type of function as the first arg and anything that
188 will fit in a "void *" as the second arg.
189
190 Should be, once all calls and called-functions are cleaned up:
191 extern struct cleanup *
192 make_cleanup PARAMS ((void (*function) (void *), void *));
193
194 Until then, lint and/or various type-checking compiler options will
195 complain about make_cleanup calls. It'd be wrong to just cast things,
196 since the type actually passed when the function is called would be
197 wrong. */
198
199 extern struct cleanup *
200 make_cleanup ();
201
202 extern struct cleanup *
203 save_cleanups PARAMS ((void));
204
205 extern void
206 restore_cleanups PARAMS ((struct cleanup *));
207
208 extern void
209 free_current_contents PARAMS ((char **));
210
211 extern void
212 null_cleanup PARAMS ((char **));
213
214 extern int
215 myread PARAMS ((int, char *, int));
216
217 extern int
218 query ();
219 \f
220 /* Annotation stuff. */
221
222 extern int annotation_level; /* in stack.c */
223 \f
224 extern void
225 begin_line PARAMS ((void));
226
227 extern void
228 wrap_here PARAMS ((char *));
229
230 extern void
231 reinitialize_more_filter PARAMS ((void));
232
233 typedef FILE GDB_FILE;
234 #define gdb_stdout stdout
235 #define gdb_stderr stderr
236
237 extern int
238 print_insn PARAMS ((CORE_ADDR, GDB_FILE *));
239
240 extern void
241 gdb_flush PARAMS ((GDB_FILE *));
242
243 extern GDB_FILE *
244 gdb_fopen PARAMS ((char * name, char * mode));
245
246 extern void
247 fputs_filtered PARAMS ((const char *, GDB_FILE *));
248
249 extern void
250 fputs_unfiltered PARAMS ((const char *, GDB_FILE *));
251
252 extern void
253 fputc_unfiltered PARAMS ((int, GDB_FILE *));
254
255 extern void
256 putc_unfiltered PARAMS ((int));
257
258 #define putchar_unfiltered(C) putc_unfiltered(C)
259
260 extern void
261 puts_filtered PARAMS ((char *));
262
263 extern void
264 puts_unfiltered PARAMS ((char *));
265
266 extern void
267 vprintf_filtered ();
268
269 extern void
270 vfprintf_filtered ();
271
272 extern void
273 fprintf_filtered ();
274
275 extern void
276 fprintfi_filtered ();
277
278 extern void
279 printf_filtered ();
280
281 extern void
282 printfi_filtered ();
283
284 extern void
285 vprintf_unfiltered ();
286
287 extern void
288 vfprintf_unfiltered ();
289
290 extern void
291 fprintf_unfiltered ();
292
293 extern void
294 printf_unfiltered ();
295
296 extern void
297 print_spaces PARAMS ((int, GDB_FILE *));
298
299 extern void
300 print_spaces_filtered PARAMS ((int, GDB_FILE *));
301
302 extern char *
303 n_spaces PARAMS ((int));
304
305 extern void
306 gdb_printchar PARAMS ((int, GDB_FILE *, int));
307
308 /* Print a host address. */
309 extern void gdb_print_address PARAMS ((void *, GDB_FILE *));
310
311 extern void
312 fprintf_symbol_filtered PARAMS ((GDB_FILE *, char *, enum language, int));
313
314 extern void
315 perror_with_name PARAMS ((char *));
316
317 extern void
318 print_sys_errmsg PARAMS ((char *, int));
319
320 /* From regex.c or libc. BSD 4.4 declares this with the argument type as
321 "const char *" in unistd.h, so we can't declare the argument
322 as "char *". */
323
324 extern char *
325 re_comp PARAMS ((const char *));
326
327 /* From symfile.c */
328
329 extern void
330 symbol_file_command PARAMS ((char *, int));
331
332 /* From main.c */
333
334 extern char *
335 skip_quoted PARAMS ((char *));
336
337 extern char *
338 gdb_readline PARAMS ((char *));
339
340 extern char *
341 command_line_input PARAMS ((char *, int, char *));
342
343 extern void
344 print_prompt PARAMS ((void));
345
346 extern int
347 input_from_terminal_p PARAMS ((void));
348
349 /* From printcmd.c */
350
351 extern void
352 set_next_address PARAMS ((CORE_ADDR));
353
354 extern void
355 print_address_symbolic PARAMS ((CORE_ADDR, GDB_FILE *, int, char *));
356
357 extern void
358 print_address_numeric PARAMS ((CORE_ADDR, int, GDB_FILE *));
359
360 extern void
361 print_address PARAMS ((CORE_ADDR, GDB_FILE *));
362
363 /* From source.c */
364
365 extern int
366 openp PARAMS ((char *, int, char *, int, int, char **));
367
368 extern void
369 mod_path PARAMS ((char *, char **));
370
371 extern void
372 directory_command PARAMS ((char *, int));
373
374 extern void
375 init_source_path PARAMS ((void));
376
377 /* From findvar.c */
378
379 extern int
380 read_relative_register_raw_bytes PARAMS ((int, char *));
381
382 /* From readline (but not in any readline .h files). */
383
384 extern char *
385 tilde_expand PARAMS ((char *));
386
387 /* Structure for saved commands lines
388 (for breakpoints, defined commands, etc). */
389
390 struct command_line
391 {
392 struct command_line *next;
393 char *line;
394 };
395
396 extern struct command_line *
397 read_command_lines PARAMS ((void));
398
399 extern void
400 free_command_lines PARAMS ((struct command_line **));
401
402 /* String containing the current directory (what getwd would return). */
403
404 extern char *current_directory;
405
406 /* Default radixes for input and output. Only some values supported. */
407 extern unsigned input_radix;
408 extern unsigned output_radix;
409
410 /* Possibilities for prettyprint parameters to routines which print
411 things. Like enum language, this should be in value.h, but needs
412 to be here for the same reason. FIXME: If we can eliminate this
413 as an arg to LA_VAL_PRINT, then we can probably move it back to
414 value.h. */
415
416 enum val_prettyprint
417 {
418 Val_no_prettyprint = 0,
419 Val_prettyprint,
420 /* Use the default setting which the user has specified. */
421 Val_pretty_default
422 };
423
424 \f
425 /* Host machine definition. This will be a symlink to one of the
426 xm-*.h files, built by the `configure' script. */
427
428 #include "xm.h"
429
430 /* Native machine support. This will be a symlink to one of the
431 nm-*.h files, built by the `configure' script. */
432
433 #include "nm.h"
434
435 /* If the xm.h file did not define the mode string used to open the
436 files, assume that binary files are opened the same way as text
437 files */
438 #ifndef FOPEN_RB
439 #include "fopen-same.h"
440 #endif
441
442 /*
443 * Allow things in gdb to be declared "const". If compiling ANSI, it
444 * just works. If compiling with gcc but non-ansi, redefine to __const__.
445 * If non-ansi, non-gcc, then eliminate "const" entirely, making those
446 * objects be read-write rather than read-only.
447 */
448
449 #ifndef const
450 #ifndef __STDC__
451 # ifdef __GNUC__
452 # define const __const__
453 # else
454 # define const /*nothing*/
455 # endif /* GNUC */
456 #endif /* STDC */
457 #endif /* const */
458
459 #ifndef volatile
460 #ifndef __STDC__
461 # ifdef __GNUC__
462 # define volatile __volatile__
463 # else
464 # define volatile /*nothing*/
465 # endif /* GNUC */
466 #endif /* STDC */
467 #endif /* volatile */
468
469 #if 1
470 #define NORETURN /*nothing*/
471 #else /* not 1 */
472 /* FIXME: This is bogus. Having "volatile void" mean a function doesn't
473 return is a gcc extension and should be based on #ifdef __GNUC__.
474 Also, as of Sep 93 I'm told gcc is changing the syntax for ansi
475 reasons (so declaring exit here as "volatile void" and as "void" in
476 a system header loses). Using the new "__attributes__ ((noreturn));"
477 syntax would lose for old versions of gcc; using
478 typedef void exit_fn_type PARAMS ((int));
479 volatile exit_fn_type exit;
480 would win. */
481 /* Some compilers (many AT&T SVR4 compilers for instance), do not accept
482 declarations of functions that never return (exit for instance) as
483 "volatile void". For such compilers "NORETURN" can be defined away
484 to keep them happy */
485
486 #ifndef NORETURN
487 # ifdef __lucid
488 # define NORETURN /*nothing*/
489 # else
490 # define NORETURN volatile
491 # endif
492 #endif
493 #endif /* not 1 */
494
495 /* Defaults for system-wide constants (if not defined by xm.h, we fake it). */
496
497 #if !defined (UINT_MAX)
498 #define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
499 #endif
500
501 #if !defined (INT_MAX)
502 #define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
503 #endif
504
505 #if !defined (INT_MIN)
506 #define INT_MIN (-INT_MAX - 1) /* 0x80000000 for 32-bits */
507 #endif
508
509 #if !defined (ULONG_MAX)
510 #define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
511 #endif
512
513 #if !defined (LONG_MAX)
514 #define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
515 #endif
516
517 #ifdef BFD64
518
519 /* This is to make sure that LONGEST is at least as big as CORE_ADDR. */
520
521 #define LONGEST BFD_HOST_64_BIT
522
523 #else /* No BFD64 */
524
525 /* If all compilers for this host support "long long" and we want to
526 use it for LONGEST (the performance hit is about 10% on a testsuite
527 run based on one DECstation test), then the xm.h file can define
528 CC_HAS_LONG_LONG.
529
530 Using GCC 1.39 on BSDI with long long causes about 700 new
531 testsuite failures. Using long long for LONGEST on the DECstation
532 causes 3 new FAILs in the testsuite and many heuristic fencepost
533 warnings. These are not investigated, but a first guess would be
534 that the BSDI problems are GCC bugs in long long support and the
535 latter are GDB bugs. */
536
537 #ifndef CC_HAS_LONG_LONG
538 # if defined (__GNUC__) && defined (FORCE_LONG_LONG)
539 # define CC_HAS_LONG_LONG 1
540 # endif
541 #endif
542
543 /* LONGEST should not be a typedef, because "unsigned LONGEST" needs to work.
544 CC_HAS_LONG_LONG is defined if the host compiler supports "long long"
545 variables and we wish to make use of that support. */
546
547 #ifndef LONGEST
548 # ifdef CC_HAS_LONG_LONG
549 # define LONGEST long long
550 # else
551 # define LONGEST long
552 # endif
553 #endif
554
555 #endif /* No BFD64 */
556
557 /* Convert a LONGEST to an int. This is used in contexts (e.g. number of
558 arguments to a function, number in a value history, register number, etc.)
559 where the value must not be larger than can fit in an int. */
560
561 extern int longest_to_int PARAMS ((LONGEST));
562
563 /* Assorted functions we can declare, now that const and volatile are
564 defined. */
565
566 extern char *
567 savestring PARAMS ((const char *, int));
568
569 extern char *
570 msavestring PARAMS ((void *, const char *, int));
571
572 extern char *
573 strsave PARAMS ((const char *));
574
575 extern char *
576 mstrsave PARAMS ((void *, const char *));
577
578 extern char *
579 concat PARAMS ((char *, ...));
580
581 extern PTR
582 xmalloc PARAMS ((long));
583
584 extern PTR
585 xrealloc PARAMS ((PTR, long));
586
587 extern PTR
588 xmmalloc PARAMS ((PTR, long));
589
590 extern PTR
591 xmrealloc PARAMS ((PTR, PTR, long));
592
593 extern PTR
594 mmalloc PARAMS ((PTR, long));
595
596 extern PTR
597 mrealloc PARAMS ((PTR, PTR, long));
598
599 extern void
600 mfree PARAMS ((PTR, PTR));
601
602 extern int
603 mmcheck PARAMS ((PTR, void (*) (void)));
604
605 extern int
606 mmtrace PARAMS ((void));
607
608 extern int
609 parse_escape PARAMS ((char **));
610
611 extern const char * const reg_names[];
612
613 /* Message to be printed before the error message, when an error occurs. */
614
615 extern char *error_pre_print;
616
617 /* Message to be printed before the warning message, when a warning occurs. */
618
619 extern char *warning_pre_print;
620
621 extern NORETURN void /* Does not return to the caller. */
622 error ();
623
624 extern void error_begin PARAMS ((void));
625
626 extern NORETURN void /* Does not return to the caller. */
627 fatal ();
628
629 extern NORETURN void /* Not specified as volatile in ... */
630 exit PARAMS ((int)); /* 4.10.4.3 */
631
632 extern NORETURN void /* Does not return to the caller. */
633 nomem PARAMS ((long));
634
635 /* Reasons for calling return_to_top_level. */
636 enum return_reason {
637 /* User interrupt. */
638 RETURN_QUIT,
639
640 /* Any other error. */
641 RETURN_ERROR
642 };
643
644 #define RETURN_MASK_QUIT (1 << (int)RETURN_QUIT)
645 #define RETURN_MASK_ERROR (1 << (int)RETURN_ERROR)
646 #define RETURN_MASK_ALL (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
647 typedef int return_mask;
648
649 extern NORETURN void /* Does not return to the caller. */
650 return_to_top_level PARAMS ((enum return_reason));
651
652 extern int catch_errors PARAMS ((int (*) (char *), void *, char *,
653 return_mask));
654
655 extern void
656 warning_setup PARAMS ((void));
657
658 extern void
659 warning ();
660
661 /* Global functions from other, non-gdb GNU thingies (libiberty for
662 instance) */
663
664 extern char *
665 basename PARAMS ((char *));
666
667 extern char *
668 getenv PARAMS ((const char *));
669
670 extern char **
671 buildargv PARAMS ((char *));
672
673 extern void
674 freeargv PARAMS ((char **));
675
676 extern char *
677 strerrno PARAMS ((int));
678
679 extern char *
680 strsigno PARAMS ((int));
681
682 extern int
683 errno_max PARAMS ((void));
684
685 extern int
686 signo_max PARAMS ((void));
687
688 extern int
689 strtoerrno PARAMS ((char *));
690
691 extern int
692 strtosigno PARAMS ((char *));
693
694 extern char *
695 strsignal PARAMS ((int));
696
697 /* From other system libraries */
698
699 #ifndef PSIGNAL_IN_SIGNAL_H
700 extern void
701 psignal PARAMS ((unsigned, const char *));
702 #endif
703
704 /* For now, we can't include <stdlib.h> because it conflicts with
705 "../include/getopt.h". (FIXME)
706
707 However, if a function is defined in the ANSI C standard and a prototype
708 for that function is defined and visible in any header file in an ANSI
709 conforming environment, then that prototype must match the definition in
710 the ANSI standard. So we can just duplicate them here without conflict,
711 since they must be the same in all conforming ANSI environments. If
712 these cause problems, then the environment is not ANSI conformant. */
713
714 #ifdef __STDC__
715 #include <stddef.h>
716 #endif
717
718 extern int
719 fclose PARAMS ((GDB_FILE *stream)); /* 4.9.5.1 */
720
721 extern void
722 perror PARAMS ((const char *)); /* 4.9.10.4 */
723
724 extern double
725 atof PARAMS ((const char *nptr)); /* 4.10.1.1 */
726
727 extern int
728 atoi PARAMS ((const char *)); /* 4.10.1.2 */
729
730 #ifndef MALLOC_INCOMPATIBLE
731
732 extern PTR
733 malloc PARAMS ((size_t size)); /* 4.10.3.3 */
734
735 extern PTR
736 realloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */
737
738 extern void
739 free PARAMS ((void *)); /* 4.10.3.2 */
740
741 #endif /* MALLOC_INCOMPATIBLE */
742
743 extern void
744 qsort PARAMS ((void *base, size_t nmemb, /* 4.10.5.2 */
745 size_t size,
746 int (*compar)(const void *, const void *)));
747
748 #ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
749 extern PTR
750 memcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */
751
752 extern int
753 memcmp PARAMS ((const void *, const void *, size_t)); /* 4.11.4.1 */
754 #endif
755
756 extern char *
757 strchr PARAMS ((const char *, int)); /* 4.11.5.2 */
758
759 extern char *
760 strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */
761
762 extern char *
763 strstr PARAMS ((const char *, const char *)); /* 4.11.5.7 */
764
765 extern char *
766 strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */
767
768 #ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
769 extern PTR
770 memset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */
771 #endif
772
773 extern char *
774 strerror PARAMS ((int)); /* 4.11.6.2 */
775
776 /* Various possibilities for alloca. */
777 #ifndef alloca
778 # ifdef __GNUC__
779 # define alloca __builtin_alloca
780 # else /* Not GNU C */
781 # ifdef sparc
782 # include <alloca.h> /* NOTE: Doesn't declare alloca() */
783 # endif
784
785 /* We need to be careful not to declare this in a way which conflicts with
786 bison. Bison never declares it as char *, but under various circumstances
787 (like __hpux) we need to use void *. */
788 # if defined (__STDC__) || defined (__hpux)
789 extern void *alloca ();
790 # else /* Don't use void *. */
791 extern char *alloca ();
792 # endif /* Don't use void *. */
793 # endif /* Not GNU C */
794 #endif /* alloca not defined */
795
796 /* TARGET_BYTE_ORDER and HOST_BYTE_ORDER must be defined to one of these. */
797
798 #if !defined (BIG_ENDIAN)
799 #define BIG_ENDIAN 4321
800 #endif
801
802 #if !defined (LITTLE_ENDIAN)
803 #define LITTLE_ENDIAN 1234
804 #endif
805
806 /* Target-system-dependent parameters for GDB. */
807
808 /* Target machine definition. This will be a symlink to one of the
809 tm-*.h files, built by the `configure' script. */
810
811 #include "tm.h"
812
813 /* Number of bits in a char or unsigned char for the target machine.
814 Just like CHAR_BIT in <limits.h> but describes the target machine. */
815 #if !defined (TARGET_CHAR_BIT)
816 #define TARGET_CHAR_BIT 8
817 #endif
818
819 /* Number of bits in a short or unsigned short for the target machine. */
820 #if !defined (TARGET_SHORT_BIT)
821 #define TARGET_SHORT_BIT (2 * TARGET_CHAR_BIT)
822 #endif
823
824 /* Number of bits in an int or unsigned int for the target machine. */
825 #if !defined (TARGET_INT_BIT)
826 #define TARGET_INT_BIT (4 * TARGET_CHAR_BIT)
827 #endif
828
829 /* Number of bits in a long or unsigned long for the target machine. */
830 #if !defined (TARGET_LONG_BIT)
831 #define TARGET_LONG_BIT (4 * TARGET_CHAR_BIT)
832 #endif
833
834 /* Number of bits in a long long or unsigned long long for the target machine. */
835 #if !defined (TARGET_LONG_LONG_BIT)
836 #define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT)
837 #endif
838
839 /* Number of bits in a float for the target machine. */
840 #if !defined (TARGET_FLOAT_BIT)
841 #define TARGET_FLOAT_BIT (4 * TARGET_CHAR_BIT)
842 #endif
843
844 /* Number of bits in a double for the target machine. */
845 #if !defined (TARGET_DOUBLE_BIT)
846 #define TARGET_DOUBLE_BIT (8 * TARGET_CHAR_BIT)
847 #endif
848
849 /* Number of bits in a long double for the target machine. */
850 #if !defined (TARGET_LONG_DOUBLE_BIT)
851 #define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT)
852 #endif
853
854 /* Number of bits in a "complex" for the target machine. */
855 #if !defined (TARGET_COMPLEX_BIT)
856 #define TARGET_COMPLEX_BIT (2 * TARGET_FLOAT_BIT)
857 #endif
858
859 /* Number of bits in a "double complex" for the target machine. */
860 #if !defined (TARGET_DOUBLE_COMPLEX_BIT)
861 #define TARGET_DOUBLE_COMPLEX_BIT (2 * TARGET_DOUBLE_BIT)
862 #endif
863
864 /* Number of bits in a pointer for the target machine */
865 #if !defined (TARGET_PTR_BIT)
866 #define TARGET_PTR_BIT TARGET_INT_BIT
867 #endif
868
869 /* If we picked up a copy of CHAR_BIT from a configuration file
870 (which may get it by including <limits.h>) then use it to set
871 the number of bits in a host char. If not, use the same size
872 as the target. */
873
874 #if defined (CHAR_BIT)
875 #define HOST_CHAR_BIT CHAR_BIT
876 #else
877 #define HOST_CHAR_BIT TARGET_CHAR_BIT
878 #endif
879
880 /* The bit byte-order has to do just with numbering of bits in
881 debugging symbols and such. Conceptually, it's quite separate
882 from byte/word byte order. */
883
884 #if !defined (BITS_BIG_ENDIAN)
885 #if TARGET_BYTE_ORDER == BIG_ENDIAN
886 #define BITS_BIG_ENDIAN 1
887 #endif /* Big endian. */
888
889 #if TARGET_BYTE_ORDER == LITTLE_ENDIAN
890 #define BITS_BIG_ENDIAN 0
891 #endif /* Little endian. */
892 #endif /* BITS_BIG_ENDIAN not defined. */
893
894 /* In findvar.c. */
895 LONGEST extract_signed_integer PARAMS ((void *, int));
896 unsigned LONGEST extract_unsigned_integer PARAMS ((void *, int));
897 CORE_ADDR extract_address PARAMS ((void *, int));
898
899 void store_signed_integer PARAMS ((void *, int, LONGEST));
900 void store_unsigned_integer PARAMS ((void *, int, unsigned LONGEST));
901 void store_address PARAMS ((void *, int, CORE_ADDR));
902
903 double extract_floating PARAMS ((void *, int));
904 void store_floating PARAMS ((void *, int, double));
905 \f
906 /* On some machines there are bits in addresses which are not really
907 part of the address, but are used by the kernel, the hardware, etc.
908 for special purposes. ADDR_BITS_REMOVE takes out any such bits
909 so we get a "real" address such as one would find in a symbol
910 table. This is used only for addresses of instructions, and even then
911 I'm not sure it's used in all contexts. It exists to deal with there
912 being a few stray bits in the PC which would mislead us, not as some sort
913 of generic thing to handle alignment or segmentation (it's possible it
914 should be in TARGET_READ_PC instead). */
915 #if !defined (ADDR_BITS_REMOVE)
916 #define ADDR_BITS_REMOVE(addr) (addr)
917 #endif /* No ADDR_BITS_REMOVE. */
918
919 /* From valops.c */
920
921 extern CORE_ADDR
922 push_bytes PARAMS ((CORE_ADDR, char *, int));
923
924 extern CORE_ADDR
925 push_word PARAMS ((CORE_ADDR, unsigned LONGEST));
926
927 /* Some parts of gdb might be considered optional, in the sense that they
928 are not essential for being able to build a working, usable debugger
929 for a specific environment. For example, the maintenance commands
930 are there for the benefit of gdb maintainers. As another example,
931 some environments really don't need gdb's that are able to read N
932 different object file formats. In order to make it possible (but
933 not necessarily recommended) to build "stripped down" versions of
934 gdb, the following defines control selective compilation of those
935 parts of gdb which can be safely left out when necessary. Note that
936 the default is to include everything. */
937
938 #ifndef MAINTENANCE_CMDS
939 #define MAINTENANCE_CMDS 1
940 #endif
941
942 /* Hooks for alternate command interfaces. */
943
944 #ifdef __STDC__
945 struct symtab;
946 struct breakpoint;
947 #endif
948
949 void (*init_ui_hook) PARAMS ((void));
950 void (*command_loop_hook) PARAMS ((void));
951 void (*fputs_unfiltered_hook) PARAMS ((const char *linebuffer));
952 void (*print_frame_info_listing_hook) PARAMS ((struct symtab *s, int line,
953 int stopline, int noerror));
954 int (*query_hook) PARAMS (());
955 void (*flush_hook) PARAMS ((FILE *stream));
956 void (*create_breakpoint_hook) PARAMS ((struct breakpoint *b));
957 void (*delete_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
958 void (*enable_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
959 void (*disable_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
960
961 /* Inhibit window interface if non-zero. */
962
963 extern int no_windows;
964
965 #endif /* !defined (DEFS_H) */
This page took 0.051706 seconds and 4 git commands to generate.