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