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