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