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