* serial.h (SERIAL_SET_TTY_STATE): Comment return value.
[deliverable/binutils-gdb.git] / gdb / defs.h
... / ...
CommitLineData
1/* Basic, host-specific, and target-specific definitions for GDB.
2 Copyright (C) 1986, 1989, 1991 Free Software Foundation, Inc.
3
4This file is part of GDB.
5
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with this program; if not, write to the Free Software
18Foundation, 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
32typedef unsigned int CORE_ADDR;
33#else
34typedef 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
53extern int quit_flag;
54extern int immediate_quit;
55extern int sevenbit_strings;
56
57extern void
58quit 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
68enum 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
84enum 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
104struct cleanup
105{
106 struct cleanup *next;
107 void (*function) PARAMS ((PTR));
108 PTR arg;
109};
110
111/* From blockframe.c */
112
113extern int
114inside_entry_func PARAMS ((CORE_ADDR));
115
116extern int
117inside_entry_file PARAMS ((CORE_ADDR addr));
118
119extern int
120inside_main_func PARAMS ((CORE_ADDR pc));
121
122/* From ch-lang.c, for the moment. (FIXME) */
123
124extern char *
125chill_demangle PARAMS ((const char *));
126
127/* From libiberty.a */
128
129extern char *
130cplus_demangle PARAMS ((const char *, int));
131
132extern char *
133cplus_mangle_opname PARAMS ((char *, int));
134
135/* From libmmalloc.a (memory mapped malloc library) */
136
137extern PTR
138mmalloc_attach PARAMS ((int, PTR));
139
140extern PTR
141mmalloc_detach PARAMS ((PTR));
142
143extern PTR
144mmalloc PARAMS ((PTR, long));
145
146extern PTR
147mrealloc PARAMS ((PTR, PTR, long));
148
149extern void
150mfree PARAMS ((PTR, PTR));
151
152extern int
153mmalloc_setkey PARAMS ((PTR, int, PTR));
154
155extern PTR
156mmalloc_getkey PARAMS ((PTR, int));
157
158/* From utils.c */
159
160extern int
161strcmp_iw PARAMS ((const char *, const char *));
162
163extern char *
164safe_strerror PARAMS ((int));
165
166extern char *
167safe_strsignal PARAMS ((int));
168
169extern void
170init_malloc PARAMS ((void *));
171
172extern void
173request_quit PARAMS ((int));
174
175extern void
176do_cleanups PARAMS ((struct cleanup *));
177
178extern void
179discard_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:
186extern struct cleanup *
187make_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
194extern struct cleanup *
195make_cleanup ();
196
197extern struct cleanup *
198save_cleanups PARAMS ((void));
199
200extern void
201restore_cleanups PARAMS ((struct cleanup *));
202
203extern void
204free_current_contents PARAMS ((char **));
205
206extern void
207null_cleanup PARAMS ((char **));
208
209extern int
210myread PARAMS ((int, char *, int));
211
212extern int
213query ();
214
215extern void
216begin_line PARAMS ((void));
217
218extern void
219wrap_here PARAMS ((char *));
220
221extern void
222reinitialize_more_filter PARAMS ((void));
223
224typedef FILE GDB_FILE;
225#define gdb_stdout stdout
226#define gdb_stderr stderr
227
228extern int
229print_insn PARAMS ((CORE_ADDR, GDB_FILE *));
230
231extern void
232gdb_flush PARAMS ((GDB_FILE *));
233
234extern GDB_FILE *
235gdb_fopen PARAMS ((char * name, char * mode));
236
237extern void
238fputs_filtered PARAMS ((const char *, GDB_FILE *));
239
240extern void
241fputs_unfiltered PARAMS ((const char *, GDB_FILE *));
242
243extern void
244fputc_unfiltered PARAMS ((int, GDB_FILE *));
245
246extern void
247putc_unfiltered PARAMS ((int));
248
249#define putchar_unfiltered(C) putc_unfiltered(C)
250
251extern void
252puts_filtered PARAMS ((char *));
253
254extern void
255puts_unfiltered PARAMS ((char *));
256
257extern void
258vprintf_filtered ();
259
260extern void
261vfprintf_filtered ();
262
263extern void
264fprintf_filtered ();
265
266extern void
267fprintfi_filtered ();
268
269extern void
270printf_filtered ();
271
272extern void
273printfi_filtered ();
274
275extern void
276vprintf_unfiltered ();
277
278extern void
279vfprintf_unfiltered ();
280
281extern void
282fprintf_unfiltered ();
283
284extern void
285printf_unfiltered ();
286
287extern void
288print_spaces PARAMS ((int, GDB_FILE *));
289
290extern void
291print_spaces_filtered PARAMS ((int, GDB_FILE *));
292
293extern char *
294n_spaces PARAMS ((int));
295
296extern void
297gdb_printchar PARAMS ((int, GDB_FILE *, int));
298
299/* Print a host address. */
300extern void gdb_print_address PARAMS ((void *, GDB_FILE *));
301
302extern void
303fprintf_symbol_filtered PARAMS ((GDB_FILE *, char *, enum language, int));
304
305extern void
306perror_with_name PARAMS ((char *));
307
308extern void
309print_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
315extern char *
316re_comp PARAMS ((const char *));
317
318/* From symfile.c */
319
320extern void
321symbol_file_command PARAMS ((char *, int));
322
323/* From main.c */
324
325extern char *
326skip_quoted PARAMS ((char *));
327
328extern char *
329gdb_readline PARAMS ((char *));
330
331extern char *
332command_line_input PARAMS ((char *, int));
333
334extern void
335print_prompt PARAMS ((void));
336
337extern int
338batch_mode PARAMS ((void));
339
340extern int
341input_from_terminal_p PARAMS ((void));
342
343/* From printcmd.c */
344
345extern void
346set_next_address PARAMS ((CORE_ADDR));
347
348extern void
349print_address_symbolic PARAMS ((CORE_ADDR, GDB_FILE *, int, char *));
350
351extern void
352print_address_numeric PARAMS ((CORE_ADDR, GDB_FILE *));
353
354extern void
355print_address PARAMS ((CORE_ADDR, GDB_FILE *));
356
357/* From source.c */
358
359extern int
360openp PARAMS ((char *, int, char *, int, int, char **));
361
362extern void
363mod_path PARAMS ((char *, char **));
364
365extern void
366directory_command PARAMS ((char *, int));
367
368extern void
369init_source_path PARAMS ((void));
370
371/* From findvar.c */
372
373extern int
374read_relative_register_raw_bytes PARAMS ((int, char *));
375
376/* From readline (but not in any readline .h files). */
377
378extern char *
379tilde_expand PARAMS ((char *));
380
381/* Structure for saved commands lines
382 (for breakpoints, defined commands, etc). */
383
384struct command_line
385{
386 struct command_line *next;
387 char *line;
388};
389
390extern struct command_line *
391read_command_lines PARAMS ((void));
392
393extern void
394free_command_lines PARAMS ((struct command_line **));
395
396/* String containing the current directory (what getwd would return). */
397
398extern char *current_directory;
399
400/* Default radixes for input and output. Only some values supported. */
401extern unsigned input_radix;
402extern 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
410enum 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
558extern char *
559savestring PARAMS ((const char *, int));
560
561extern char *
562msavestring PARAMS ((void *, const char *, int));
563
564extern char *
565strsave PARAMS ((const char *));
566
567extern char *
568mstrsave PARAMS ((void *, const char *));
569
570extern char *
571concat PARAMS ((char *, ...));
572
573extern PTR
574xmalloc PARAMS ((long));
575
576extern PTR
577xrealloc PARAMS ((PTR, long));
578
579extern PTR
580xmmalloc PARAMS ((PTR, long));
581
582extern PTR
583xmrealloc PARAMS ((PTR, PTR, long));
584
585extern PTR
586mmalloc PARAMS ((PTR, long));
587
588extern PTR
589mrealloc PARAMS ((PTR, PTR, long));
590
591extern void
592mfree PARAMS ((PTR, PTR));
593
594extern int
595mmcheck PARAMS ((PTR, void (*) (void)));
596
597extern int
598mmtrace PARAMS ((void));
599
600extern int
601parse_escape PARAMS ((char **));
602
603extern const char * const reg_names[];
604
605/* Message to be printed before the error message, when an error occurs. */
606
607extern char *error_pre_print;
608
609/* Message to be printed before the warning message, when a warning occurs. */
610
611extern char *warning_pre_print;
612
613extern NORETURN void /* Does not return to the caller. */
614error ();
615
616extern NORETURN void /* Does not return to the caller. */
617fatal ();
618
619extern NORETURN void /* Not specified as volatile in ... */
620exit PARAMS ((int)); /* 4.10.4.3 */
621
622extern NORETURN void /* Does not return to the caller. */
623nomem PARAMS ((long));
624
625/* Reasons for calling return_to_top_level. */
626enum 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)
637typedef int return_mask;
638
639extern NORETURN void /* Does not return to the caller. */
640return_to_top_level PARAMS ((enum return_reason));
641
642extern int catch_errors PARAMS ((int (*) (char *), void *, char *,
643 return_mask));
644
645extern void
646warning_setup PARAMS ((void));
647
648extern void
649warning ();
650
651/* Global functions from other, non-gdb GNU thingies (libiberty for
652 instance) */
653
654extern char *
655basename PARAMS ((char *));
656
657extern char *
658getenv PARAMS ((const char *));
659
660extern char **
661buildargv PARAMS ((char *));
662
663extern void
664freeargv PARAMS ((char **));
665
666extern char *
667strerrno PARAMS ((int));
668
669extern char *
670strsigno PARAMS ((int));
671
672extern int
673errno_max PARAMS ((void));
674
675extern int
676signo_max PARAMS ((void));
677
678extern int
679strtoerrno PARAMS ((char *));
680
681extern int
682strtosigno PARAMS ((char *));
683
684extern char *
685strsignal PARAMS ((int));
686
687/* From other system libraries */
688
689#ifndef PSIGNAL_IN_SIGNAL_H
690extern void
691psignal 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
708extern int
709fclose PARAMS ((GDB_FILE *stream)); /* 4.9.5.1 */
710
711extern void
712perror PARAMS ((const char *)); /* 4.9.10.4 */
713
714extern double
715atof PARAMS ((const char *nptr)); /* 4.10.1.1 */
716
717extern int
718atoi PARAMS ((const char *)); /* 4.10.1.2 */
719
720#ifndef MALLOC_INCOMPATIBLE
721
722extern PTR
723malloc PARAMS ((size_t size)); /* 4.10.3.3 */
724
725extern PTR
726realloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */
727
728extern void
729free PARAMS ((void *)); /* 4.10.3.2 */
730
731#endif /* MALLOC_INCOMPATIBLE */
732
733extern void
734qsort 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 *. */
739extern PTR
740memcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */
741
742extern int
743memcmp PARAMS ((const void *, const void *, size_t)); /* 4.11.4.1 */
744#endif
745
746extern char *
747strchr PARAMS ((const char *, int)); /* 4.11.5.2 */
748
749extern char *
750strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */
751
752extern char *
753strstr PARAMS ((const char *, const char *)); /* 4.11.5.7 */
754
755extern char *
756strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */
757
758#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
759extern PTR
760memset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */
761#endif
762
763extern char *
764strerror 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. */
881LONGEST extract_signed_integer PARAMS ((void *, int));
882unsigned LONGEST extract_unsigned_integer PARAMS ((void *, int));
883CORE_ADDR extract_address PARAMS ((void *, int));
884
885void store_signed_integer PARAMS ((void *, int, LONGEST));
886void store_unsigned_integer PARAMS ((void *, int, unsigned LONGEST));
887void store_address PARAMS ((void *, int, CORE_ADDR));
888
889double extract_floating PARAMS ((void *, int));
890void 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
907extern CORE_ADDR
908push_bytes PARAMS ((CORE_ADDR, char *, int));
909
910extern CORE_ADDR
911push_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.024151 seconds and 4 git commands to generate.