* complaints.c: New file, code moved from utils.c.
[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
0a5d35ed
SG
361\f
362/* Host machine definition. This will be a symlink to one of the
363 xm-*.h files, built by the `configure' script. */
364
365#include "xm.h"
366
e58de8a2
FF
367/* Native machine support. This will be a symlink to one of the
368 nm-*.h files, built by the `configure' script. */
369
370#include "nm.h"
371
e146177e
SEF
372/* If the xm.h file did not define the mode string used to open the
373 files, assume that binary files are opened the same way as text
374 files */
375#ifndef FOPEN_RB
376#include "fopen-same.h"
377#endif
378
0a5d35ed
SG
379/*
380 * Allow things in gdb to be declared "const". If compiling ANSI, it
381 * just works. If compiling with gcc but non-ansi, redefine to __const__.
382 * If non-ansi, non-gcc, then eliminate "const" entirely, making those
383 * objects be read-write rather than read-only.
384 */
385
386#ifndef const
387#ifndef __STDC__
388# ifdef __GNUC__
389# define const __const__
390# else
391# define const /*nothing*/
392# endif /* GNUC */
393#endif /* STDC */
394#endif /* const */
395
396#ifndef volatile
397#ifndef __STDC__
398# ifdef __GNUC__
399# define volatile __volatile__
400# else
401# define volatile /*nothing*/
402# endif /* GNUC */
403#endif /* STDC */
404#endif /* volatile */
405
d747e0af
MT
406/* Some compilers (many AT&T SVR4 compilers for instance), do not accept
407 declarations of functions that never return (exit for instance) as
408 "volatile void". For such compilers "NORETURN" can be defined away
409 to keep them happy */
410
411#ifndef NORETURN
e676a15f
FF
412# ifdef __lucid
413# define NORETURN /*nothing*/
414# else
415# define NORETURN volatile
416# endif
d747e0af
MT
417#endif
418
0a5d35ed
SG
419/* Defaults for system-wide constants (if not defined by xm.h, we fake it). */
420
bd5635a1
RP
421#if !defined (UINT_MAX)
422#define UINT_MAX 0xffffffff
423#endif
424
425#if !defined (LONG_MAX)
426#define LONG_MAX 0x7fffffff
427#endif
428
e1ce8aa5
JK
429#if !defined (INT_MAX)
430#define INT_MAX 0x7fffffff
431#endif
432
433#if !defined (INT_MIN)
434/* Two's complement, 32 bit. */
435#define INT_MIN -0x80000000
436#endif
437
e2aab031
FF
438/* Number of bits in a char or unsigned char for the target machine.
439 Just like CHAR_BIT in <limits.h> but describes the target machine. */
bd5635a1
RP
440#if !defined (TARGET_CHAR_BIT)
441#define TARGET_CHAR_BIT 8
442#endif
c1ace5b5 443
e2aab031
FF
444/* Number of bits in a short or unsigned short for the target machine. */
445#if !defined (TARGET_SHORT_BIT)
446#define TARGET_SHORT_BIT (sizeof (short) * TARGET_CHAR_BIT)
447#endif
448
449/* Number of bits in an int or unsigned int for the target machine. */
450#if !defined (TARGET_INT_BIT)
451#define TARGET_INT_BIT (sizeof (int) * TARGET_CHAR_BIT)
452#endif
453
454/* Number of bits in a long or unsigned long for the target machine. */
455#if !defined (TARGET_LONG_BIT)
456#define TARGET_LONG_BIT (sizeof (long) * TARGET_CHAR_BIT)
457#endif
458
459/* Number of bits in a long long or unsigned long long for the target machine. */
d166df9b 460#if !defined (TARGET_LONG_LONG_BIT)
e2aab031
FF
461#define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT)
462#endif
463
464/* Number of bits in a float for the target machine. */
465#if !defined (TARGET_FLOAT_BIT)
466#define TARGET_FLOAT_BIT (sizeof (float) * TARGET_CHAR_BIT)
467#endif
468
469/* Number of bits in a double for the target machine. */
470#if !defined (TARGET_DOUBLE_BIT)
471#define TARGET_DOUBLE_BIT (sizeof (double) * TARGET_CHAR_BIT)
472#endif
473
474/* Number of bits in a long double for the target machine. */
475#if !defined (TARGET_LONG_DOUBLE_BIT)
476#define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT)
477#endif
478
479/* Number of bits in a "complex" for the target machine. */
480#if !defined (TARGET_COMPLEX_BIT)
481#define TARGET_COMPLEX_BIT (2 * TARGET_FLOAT_BIT)
482#endif
483
484/* Number of bits in a "double complex" for the target machine. */
485#if !defined (TARGET_DOUBLE_COMPLEX_BIT)
486#define TARGET_DOUBLE_COMPLEX_BIT (2 * TARGET_DOUBLE_BIT)
d166df9b
JK
487#endif
488
d747e0af
MT
489/* Number of bits in a pointer for the target machine */
490#if !defined (TARGET_PTR_BIT)
491#define TARGET_PTR_BIT TARGET_INT_BIT
492#endif
493
e1ce8aa5
JK
494/* Convert a LONGEST to an int. This is used in contexts (e.g. number
495 of arguments to a function, number in a value history, register
496 number, etc.) where the value must not be larger than can fit
497 in an int. */
498#if !defined (longest_to_int)
499#if defined (LONG_LONG)
500#define longest_to_int(x) (((x) > INT_MAX || (x) < INT_MIN) \
28de880c 501 ? (error ("Value out of range."),0) : (int) (x))
e1ce8aa5
JK
502#else /* No LONG_LONG. */
503/* Assume sizeof (int) == sizeof (long). */
504#define longest_to_int(x) ((int) (x))
505#endif /* No LONG_LONG. */
506#endif /* No longest_to_int. */
507
d747e0af
MT
508/* This should not be a typedef, because "unsigned LONGEST" needs
509 to work. LONG_LONG is defined if the host has "long long". */
510
511#ifndef LONGEST
512# ifdef LONG_LONG
513# define LONGEST long long
514# else
515# define LONGEST long
516# endif
517#endif
518
0a5d35ed
SG
519/* Assorted functions we can declare, now that const and volatile are
520 defined. */
d747e0af
MT
521
522extern char *
523savestring PARAMS ((const char *, int));
524
318bf84f
FF
525extern char *
526msavestring PARAMS ((void *, const char *, int));
527
d747e0af
MT
528extern char *
529strsave PARAMS ((const char *));
530
318bf84f
FF
531extern char *
532mstrsave PARAMS ((void *, const char *));
533
d747e0af
MT
534extern char *
535concat PARAMS ((char *, ...));
536
537extern PTR
538xmalloc PARAMS ((long));
539
540extern PTR
318bf84f
FF
541xrealloc PARAMS ((PTR, long));
542
543extern PTR
544xmmalloc PARAMS ((PTR, long));
545
546extern PTR
547xmrealloc PARAMS ((PTR, PTR, long));
548
549extern PTR
550mmalloc PARAMS ((PTR, long));
551
552extern PTR
553mrealloc PARAMS ((PTR, PTR, long));
554
555extern void
556mfree PARAMS ((PTR, PTR));
557
558extern int
559mmcheck PARAMS ((PTR, void (*) (void)));
560
561extern int
562mmtrace PARAMS ((void));
d747e0af
MT
563
564extern int
565parse_escape PARAMS ((char **));
566
e676a15f 567extern const char * const reg_names[];
d747e0af
MT
568
569extern NORETURN void /* Does not return to the caller. */
570error ();
571
572extern NORETURN void /* Does not return to the caller. */
573fatal ();
574
575extern NORETURN void /* Not specified as volatile in ... */
576exit PARAMS ((int)); /* 4.10.4.3 */
577
318bf84f
FF
578extern NORETURN void /* Does not return to the caller. */
579nomem PARAMS ((long));
580
d747e0af
MT
581extern NORETURN void /* Does not return to the caller. */
582return_to_top_level PARAMS ((void));
583
584extern void
585warning_setup PARAMS ((void));
586
587extern void
588warning ();
589
590/* Global functions from other, non-gdb GNU thingies (libiberty for
591 instance) */
592
593extern char *
594basename PARAMS ((char *));
595
596extern char *
a8e033f2 597getenv PARAMS ((const char *));
d747e0af
MT
598
599extern char **
600buildargv PARAMS ((char *));
601
602extern void
603freeargv PARAMS ((char **));
604
e146177e
SEF
605extern char *
606strerrno PARAMS ((int));
607
608extern char *
609strsigno PARAMS ((int));
610
611extern int
612errno_max PARAMS ((void));
613
614extern int
615signo_max PARAMS ((void));
616
617extern int
618strtoerrno PARAMS ((char *));
619
620extern int
621strtosigno PARAMS ((char *));
622
623extern char *
624strsignal PARAMS ((int));
625
626/* From other system libraries */
627
628#ifndef PSIGNAL_IN_SIGNAL_H
629extern void
630psignal PARAMS ((unsigned, char *));
631#endif
632
d747e0af
MT
633/* For now, we can't include <stdlib.h> because it conflicts with
634 "../include/getopt.h". (FIXME)
635
318bf84f
FF
636 However, if a function is defined in the ANSI C standard and a prototype
637 for that function is defined and visible in any header file in an ANSI
638 conforming environment, then that prototype must match the definition in
639 the ANSI standard. So we can just duplicate them here without conflict,
d747e0af
MT
640 since they must be the same in all conforming ANSI environments. If
641 these cause problems, then the environment is not ANSI conformant. */
642
0a5d35ed 643#ifdef __STDC__
d747e0af 644#include <stddef.h>
0a5d35ed 645#endif
d747e0af
MT
646
647extern int
648fclose PARAMS ((FILE *stream)); /* 4.9.5.1 */
649
e146177e
SEF
650extern void
651perror PARAMS ((const char *)); /* 4.9.10.4 */
652
d747e0af
MT
653extern double
654atof PARAMS ((const char *nptr)); /* 4.10.1.1 */
655
51b57ded
FF
656extern int
657atoi PARAMS ((const char *)); /* 4.10.1.2 */
658
d747e0af 659#ifndef MALLOC_INCOMPATIBLE
318bf84f 660
d747e0af
MT
661extern PTR
662malloc PARAMS ((size_t size)); /* 4.10.3.3 */
663
664extern PTR
665realloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */
666
667extern void
318bf84f
FF
668free PARAMS ((void *)); /* 4.10.3.2 */
669
670#endif /* MALLOC_INCOMPATIBLE */
d747e0af 671
d630b615 672extern void
d747e0af
MT
673qsort PARAMS ((void *base, size_t nmemb, /* 4.10.5.2 */
674 size_t size,
675 int (*comp)(const void *, const void *)));
676
0f552c5f 677#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
51b57ded
FF
678extern PTR
679memcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */
0f552c5f 680#endif
51b57ded
FF
681
682extern int
683memcmp PARAMS ((const void *, const void *, size_t)); /* 4.11.4.1 */
684
d747e0af
MT
685extern char *
686strchr PARAMS ((const char *, int)); /* 4.11.5.2 */
687
688extern char *
689strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */
690
e146177e
SEF
691extern char *
692strstr PARAMS ((const char *, const char *)); /* 4.11.5.7 */
693
d747e0af
MT
694extern char *
695strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */
696
0f552c5f 697#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
51b57ded
FF
698extern PTR
699memset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */
0f552c5f 700#endif
51b57ded 701
d747e0af
MT
702extern char *
703strerror PARAMS ((int)); /* 4.11.6.2 */
e2aab031 704
0a5d35ed
SG
705/* Various possibilities for alloca. */
706#ifndef alloca
707# ifdef __GNUC__
708# define alloca __builtin_alloca
709# else
710# ifdef sparc
22fd4704 711# include <alloca.h> /* NOTE: Doesn't declare alloca() */
e676a15f 712# endif
0f552c5f
JG
713# ifdef __STDC__
714 extern void *alloca (size_t);
715# else /* __STDC__ */
716 extern char *alloca ();
717# endif
0a5d35ed
SG
718# endif
719#endif
e2aab031 720
debd3443 721/* TARGET_BYTE_ORDER and HOST_BYTE_ORDER must be defined to one of these. */
a10c0d36 722
0a5d35ed
SG
723#if !defined (BIG_ENDIAN)
724#define BIG_ENDIAN 4321
725#endif
a10c0d36 726
0a5d35ed
SG
727#if !defined (LITTLE_ENDIAN)
728#define LITTLE_ENDIAN 1234
729#endif
a10c0d36 730
0a5d35ed 731/* Target-system-dependent parameters for GDB.
7d9884b9
JG
732
733 The standard thing is to include defs.h. However, files that are
734 specific to a particular target can define TM_FILE_OVERRIDE before
735 including defs.h, then can include any particular tm-file they desire. */
736
737/* Target machine definition. This will be a symlink to one of the
738 tm-*.h files, built by the `configure' script. */
739
740#ifndef TM_FILE_OVERRIDE
741#include "tm.h"
742#endif
743
7d9884b9
JG
744/* The bit byte-order has to do just with numbering of bits in
745 debugging symbols and such. Conceptually, it's quite separate
746 from byte/word byte order. */
747
748#if !defined (BITS_BIG_ENDIAN)
749#if TARGET_BYTE_ORDER == BIG_ENDIAN
750#define BITS_BIG_ENDIAN 1
751#endif /* Big endian. */
752
753#if TARGET_BYTE_ORDER == LITTLE_ENDIAN
754#define BITS_BIG_ENDIAN 0
755#endif /* Little endian. */
756#endif /* BITS_BIG_ENDIAN not defined. */
757
758/* Swap LEN bytes at BUFFER between target and host byte-order. */
759#if TARGET_BYTE_ORDER == HOST_BYTE_ORDER
760#define SWAP_TARGET_AND_HOST(buffer,len)
761#else /* Target and host byte order differ. */
762#define SWAP_TARGET_AND_HOST(buffer,len) \
763 { \
764 char tmp; \
765 char *p = (char *)(buffer); \
766 char *q = ((char *)(buffer)) + len - 1; \
767 for (; p < q; p++, q--) \
768 { \
769 tmp = *q; \
770 *q = *p; \
771 *p = tmp; \
772 } \
773 }
774#endif /* Target and host byte order differ. */
775
776/* On some machines there are bits in addresses which are not really
777 part of the address, but are used by the kernel, the hardware, etc.
778 for special purposes. ADDR_BITS_REMOVE takes out any such bits
779 so we get a "real" address such as one would find in a symbol
780 table. ADDR_BITS_SET sets those bits the way the system wants
781 them. */
782#if !defined (ADDR_BITS_REMOVE)
783#define ADDR_BITS_REMOVE(addr) (addr)
784#define ADDR_BITS_SET(addr) (addr)
785#endif /* No ADDR_BITS_REMOVE. */
786
d747e0af
MT
787/* From valops.c */
788
789extern CORE_ADDR
790push_bytes PARAMS ((CORE_ADDR, char *, int));
791
792/* In some modules, we don't have a definition of REGISTER_TYPE yet, so we
793 must avoid prototyping this function for now. FIXME. Should be:
794extern CORE_ADDR
795push_word PARAMS ((CORE_ADDR, REGISTER_TYPE));
796 */
797extern CORE_ADDR
798push_word ();
799
0239d9b3
FF
800/* Some parts of gdb might be considered optional, in the sense that they
801 are not essential for being able to build a working, usable debugger
802 for a specific environment. For example, the maintenance commands
803 are there for the benefit of gdb maintainers. As another example,
804 some environments really don't need gdb's that are able to read N
805 different object file formats. In order to make it possible (but
806 not necessarily recommended) to build "stripped down" versions of
807 gdb, the following defines control selective compilation of those
808 parts of gdb which can be safely left out when necessary. Note that
809 the default is to include everything. */
810
811#ifndef MAINTENANCE_CMDS
812#define MAINTENANCE_CMDS 1
813#endif
814
d747e0af 815#endif /* !defined (DEFS_H) */
This page took 0.105745 seconds and 4 git commands to generate.