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