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