* dbxread.c (stabsect_build_psymtabs): Assign to sym_stab_info
[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
7343d716
JK
30/* For BFD64 and bfd_vma. */
31#include "bfd.h"
32
33/* An address in the program being debugged. Host byte order. Rather
34 than duplicate all the logic in BFD which figures out what type
35 this is (long, long long, etc.) and whether it needs to be 64
36 bits (the host/target interactions are subtle), we just use
37 bfd_vma. */
38
39typedef bfd_vma CORE_ADDR;
bd5635a1
RP
40
41#define min(a, b) ((a) < (b) ? (a) : (b))
42#define max(a, b) ((a) > (b) ? (a) : (b))
43
2e4964ad
FF
44/* Gdb does *lots* of string compares. Use macros to speed them up by
45 avoiding function calls if the first characters are not the same. */
46
bd5d07d9 47#define STRCMP(a,b) (*(a) == *(b) ? strcmp ((a), (b)) : (int)*(a) - (int)*(b))
2e4964ad
FF
48#define STREQ(a,b) (*(a) == *(b) ? !strcmp ((a), (b)) : 0)
49#define STREQN(a,b,c) (*(a) == *(b) ? !strncmp ((a), (b), (c)) : 0)
50
dd577ca5 51/* The character GNU C++ uses to build identifiers that must be unique from
bd5635a1
RP
52 the program's identifiers (such as $this and $$vptr). */
53#define CPLUS_MARKER '$' /* May be overridden to '.' for SysV */
54
e146177e 55#include <errno.h> /* System call error return status */
bd5635a1
RP
56
57extern int quit_flag;
58extern int immediate_quit;
51b80b00 59extern int sevenbit_strings;
d747e0af
MT
60
61extern void
62quit PARAMS ((void));
bd5635a1
RP
63
64#define QUIT { if (quit_flag) quit (); }
65
e58de8a2
FF
66/* Command classes are top-level categories into which commands are broken
67 down for "help" purposes.
68 Notes on classes: class_alias is for alias commands which are not
69 abbreviations of the original command. class-pseudo is for commands
70 which are not really commands nor help topics ("stop"). */
bd5635a1
RP
71
72enum command_class
73{
74 /* Special args to help_list */
75 all_classes = -2, all_commands = -1,
76 /* Classes of commands */
77 no_class = -1, class_run = 0, class_vars, class_stack,
78 class_files, class_support, class_info, class_breakpoint,
e58de8a2
FF
79 class_alias, class_obscure, class_user, class_maintenance,
80 class_pseudo
bd5635a1
RP
81};
82
bd5d07d9
FF
83/* Languages represented in the symbol table and elsewhere.
84 This should probably be in language.h, but since enum's can't
85 be forward declared to satisfy opaque references before their
86 actual definition, needs to be here. */
87
88enum language
89{
90 language_unknown, /* Language not known */
91 language_auto, /* Placeholder for automatic setting */
92 language_c, /* C */
93 language_cplus, /* C++ */
bd5d07d9 94 language_chill, /* Chill */
bd5d07d9
FF
95 language_m2 /* Modula-2 */
96};
97
bd5635a1
RP
98/* the cleanup list records things that have to be undone
99 if an error happens (descriptors to be closed, memory to be freed, etc.)
100 Each link in the chain records a function to call and an
101 argument to give it.
102
103 Use make_cleanup to add an element to the cleanup chain.
104 Use do_cleanups to do all cleanup actions back to a given
105 point in the chain. Use discard_cleanups to remove cleanups
106 from the chain back to a given point, not doing them. */
107
108struct cleanup
109{
110 struct cleanup *next;
d747e0af
MT
111 void (*function) PARAMS ((PTR));
112 PTR arg;
bd5635a1
RP
113};
114
d747e0af
MT
115/* From blockframe.c */
116
117extern int
e146177e 118inside_entry_func PARAMS ((CORE_ADDR));
d747e0af
MT
119
120extern int
e146177e 121inside_entry_file PARAMS ((CORE_ADDR addr));
d747e0af
MT
122
123extern int
e146177e 124inside_main_func PARAMS ((CORE_ADDR pc));
d747e0af 125
7532cf10
FF
126/* From ch-lang.c, for the moment. (FIXME) */
127
128extern char *
129chill_demangle PARAMS ((const char *));
7532cf10 130
2e4964ad 131/* From libiberty.a */
d747e0af
MT
132
133extern char *
134cplus_demangle PARAMS ((const char *, int));
135
136extern char *
137cplus_mangle_opname PARAMS ((char *, int));
138
318bf84f 139/* From libmmalloc.a (memory mapped malloc library) */
d747e0af
MT
140
141extern PTR
318bf84f 142mmalloc_attach PARAMS ((int, PTR));
d747e0af
MT
143
144extern PTR
318bf84f 145mmalloc_detach PARAMS ((PTR));
d747e0af
MT
146
147extern PTR
318bf84f 148mmalloc PARAMS ((PTR, long));
d747e0af
MT
149
150extern PTR
318bf84f 151mrealloc PARAMS ((PTR, PTR, long));
d747e0af
MT
152
153extern void
318bf84f 154mfree PARAMS ((PTR, PTR));
d747e0af 155
318bf84f
FF
156extern int
157mmalloc_setkey PARAMS ((PTR, int, PTR));
d747e0af
MT
158
159extern PTR
318bf84f 160mmalloc_getkey PARAMS ((PTR, int));
d747e0af
MT
161
162/* From utils.c */
163
d630b615
FF
164extern int
165strcmp_iw PARAMS ((const char *, const char *));
166
e146177e
SEF
167extern char *
168safe_strerror PARAMS ((int));
169
170extern char *
171safe_strsignal PARAMS ((int));
172
d747e0af 173extern void
e3c16900 174init_malloc PARAMS ((void *));
d747e0af
MT
175
176extern void
177request_quit PARAMS ((int));
178
179extern void
180do_cleanups PARAMS ((struct cleanup *));
181
182extern void
183discard_cleanups PARAMS ((struct cleanup *));
184
185/* The bare make_cleanup function is one of those rare beasts that
186 takes almost any type of function as the first arg and anything that
187 will fit in a "void *" as the second arg.
188
189 Should be, once all calls and called-functions are cleaned up:
190extern struct cleanup *
84d59861 191make_cleanup PARAMS ((void (*function) (void *), void *));
d747e0af
MT
192
193 Until then, lint and/or various type-checking compiler options will
194 complain about make_cleanup calls. It'd be wrong to just cast things,
195 since the type actually passed when the function is called would be
196 wrong. */
197
198extern struct cleanup *
199make_cleanup ();
200
201extern struct cleanup *
202save_cleanups PARAMS ((void));
203
204extern void
205restore_cleanups PARAMS ((struct cleanup *));
206
207extern void
208free_current_contents PARAMS ((char **));
209
210extern void
211null_cleanup PARAMS ((char **));
212
213extern int
214myread PARAMS ((int, char *, int));
215
216extern int
217query ();
6c803036 218\f
96f7edbd
JK
219/* Annotation stuff. */
220
6c803036
JK
221extern int annotation_level; /* in stack.c */
222\f
51b80b00
FF
223extern void
224begin_line PARAMS ((void));
225
d747e0af
MT
226extern void
227wrap_here PARAMS ((char *));
228
229extern void
230reinitialize_more_filter PARAMS ((void));
231
04f566a3
JK
232typedef FILE GDB_FILE;
233#define gdb_stdout stdout
234#define gdb_stderr stderr
235
d747e0af 236extern int
04f566a3
JK
237print_insn PARAMS ((CORE_ADDR, GDB_FILE *));
238
239extern void
240gdb_flush PARAMS ((GDB_FILE *));
241
242extern GDB_FILE *
243gdb_fopen PARAMS ((char * name, char * mode));
244
245extern void
246fputs_filtered PARAMS ((const char *, GDB_FILE *));
247
248extern void
249fputs_unfiltered PARAMS ((const char *, GDB_FILE *));
d747e0af
MT
250
251extern void
04f566a3
JK
252fputc_unfiltered PARAMS ((int, GDB_FILE *));
253
254extern void
255putc_unfiltered PARAMS ((int));
256
257#define putchar_unfiltered(C) putc_unfiltered(C)
d747e0af
MT
258
259extern void
260puts_filtered PARAMS ((char *));
261
04f566a3
JK
262extern void
263puts_unfiltered PARAMS ((char *));
264
51b80b00
FF
265extern void
266vprintf_filtered ();
267
a8e033f2 268extern void
4dba98fb 269vfprintf_filtered ();
a8e033f2 270
d747e0af
MT
271extern void
272fprintf_filtered ();
273
a8e033f2
SG
274extern void
275fprintfi_filtered ();
276
d747e0af
MT
277extern void
278printf_filtered ();
279
a8e033f2
SG
280extern void
281printfi_filtered ();
282
d747e0af 283extern void
04f566a3
JK
284vprintf_unfiltered ();
285
286extern void
287vfprintf_unfiltered ();
288
289extern void
290fprintf_unfiltered ();
d747e0af
MT
291
292extern void
04f566a3
JK
293printf_unfiltered ();
294
295extern void
296print_spaces PARAMS ((int, GDB_FILE *));
297
298extern void
299print_spaces_filtered PARAMS ((int, GDB_FILE *));
d747e0af
MT
300
301extern char *
302n_spaces PARAMS ((int));
303
304extern void
04f566a3 305gdb_printchar PARAMS ((int, GDB_FILE *, int));
d747e0af 306
833e0d94
JK
307/* Print a host address. */
308extern void gdb_print_address PARAMS ((void *, GDB_FILE *));
309
d747e0af 310extern void
04f566a3 311fprintf_symbol_filtered PARAMS ((GDB_FILE *, char *, enum language, int));
d747e0af
MT
312
313extern void
314perror_with_name PARAMS ((char *));
315
316extern void
317print_sys_errmsg PARAMS ((char *, int));
318
1bef45ea
JK
319/* From regex.c or libc. BSD 4.4 declares this with the argument type as
320 "const char *" in unistd.h, so we can't declare the argument
321 as "char *". */
d747e0af
MT
322
323extern char *
1bef45ea 324re_comp PARAMS ((const char *));
d747e0af
MT
325
326/* From symfile.c */
327
328extern void
329symbol_file_command PARAMS ((char *, int));
330
331/* From main.c */
332
d630b615
FF
333extern char *
334skip_quoted PARAMS ((char *));
335
d747e0af
MT
336extern char *
337gdb_readline PARAMS ((char *));
338
339extern char *
340command_line_input PARAMS ((char *, int));
341
342extern void
343print_prompt PARAMS ((void));
344
345extern int
346batch_mode PARAMS ((void));
347
348extern int
349input_from_terminal_p PARAMS ((void));
350
bd5635a1 351/* From printcmd.c */
d747e0af
MT
352
353extern void
354set_next_address PARAMS ((CORE_ADDR));
355
356extern void
04f566a3 357print_address_symbolic PARAMS ((CORE_ADDR, GDB_FILE *, int, char *));
d747e0af 358
833e0d94
JK
359extern void
360print_address_numeric PARAMS ((CORE_ADDR, GDB_FILE *));
361
d747e0af 362extern void
04f566a3 363print_address PARAMS ((CORE_ADDR, GDB_FILE *));
bd5635a1 364
e1ce8aa5 365/* From source.c */
d747e0af
MT
366
367extern int
368openp PARAMS ((char *, int, char *, int, int, char **));
369
370extern void
371mod_path PARAMS ((char *, char **));
372
373extern void
374directory_command PARAMS ((char *, int));
375
376extern void
377init_source_path PARAMS ((void));
378
379/* From findvar.c */
380
381extern int
382read_relative_register_raw_bytes PARAMS ((int, char *));
e1ce8aa5 383
bd5635a1 384/* From readline (but not in any readline .h files). */
d747e0af
MT
385
386extern char *
387tilde_expand PARAMS ((char *));
bd5635a1
RP
388
389/* Structure for saved commands lines
390 (for breakpoints, defined commands, etc). */
391
392struct command_line
393{
394 struct command_line *next;
395 char *line;
396};
397
d747e0af
MT
398extern struct command_line *
399read_command_lines PARAMS ((void));
400
401extern void
402free_command_lines PARAMS ((struct command_line **));
bd5635a1
RP
403
404/* String containing the current directory (what getwd would return). */
405
d747e0af 406extern char *current_directory;
bd5635a1
RP
407
408/* Default radixes for input and output. Only some values supported. */
409extern unsigned input_radix;
410extern unsigned output_radix;
411
a8a69e63
FF
412/* Possibilities for prettyprint parameters to routines which print
413 things. Like enum language, this should be in value.h, but needs
414 to be here for the same reason. FIXME: If we can eliminate this
415 as an arg to LA_VAL_PRINT, then we can probably move it back to
416 value.h. */
417
418enum val_prettyprint
419{
420 Val_no_prettyprint = 0,
421 Val_prettyprint,
422 /* Use the default setting which the user has specified. */
423 Val_pretty_default
424};
425
0a5d35ed
SG
426\f
427/* Host machine definition. This will be a symlink to one of the
428 xm-*.h files, built by the `configure' script. */
429
430#include "xm.h"
431
e58de8a2
FF
432/* Native machine support. This will be a symlink to one of the
433 nm-*.h files, built by the `configure' script. */
434
435#include "nm.h"
436
e146177e
SEF
437/* If the xm.h file did not define the mode string used to open the
438 files, assume that binary files are opened the same way as text
439 files */
440#ifndef FOPEN_RB
441#include "fopen-same.h"
442#endif
443
0a5d35ed
SG
444/*
445 * Allow things in gdb to be declared "const". If compiling ANSI, it
446 * just works. If compiling with gcc but non-ansi, redefine to __const__.
447 * If non-ansi, non-gcc, then eliminate "const" entirely, making those
448 * objects be read-write rather than read-only.
449 */
450
451#ifndef const
452#ifndef __STDC__
453# ifdef __GNUC__
454# define const __const__
455# else
456# define const /*nothing*/
457# endif /* GNUC */
458#endif /* STDC */
459#endif /* const */
460
461#ifndef volatile
462#ifndef __STDC__
463# ifdef __GNUC__
464# define volatile __volatile__
465# else
466# define volatile /*nothing*/
467# endif /* GNUC */
468#endif /* STDC */
469#endif /* volatile */
470
e3c16900
JK
471#if 1
472#define NORETURN /*nothing*/
473#else /* not 1 */
474/* FIXME: This is bogus. Having "volatile void" mean a function doesn't
475 return is a gcc extension and should be based on #ifdef __GNUC__.
476 Also, as of Sep 93 I'm told gcc is changing the syntax for ansi
477 reasons (so declaring exit here as "volatile void" and as "void" in
478 a system header loses). Using the new "__attributes__ ((noreturn));"
479 syntax would lose for old versions of gcc; using
480 typedef void exit_fn_type PARAMS ((int));
481 volatile exit_fn_type exit;
482 would win. */
d747e0af
MT
483/* Some compilers (many AT&T SVR4 compilers for instance), do not accept
484 declarations of functions that never return (exit for instance) as
485 "volatile void". For such compilers "NORETURN" can be defined away
486 to keep them happy */
487
488#ifndef NORETURN
e676a15f
FF
489# ifdef __lucid
490# define NORETURN /*nothing*/
491# else
492# define NORETURN volatile
493# endif
d747e0af 494#endif
e3c16900 495#endif /* not 1 */
d747e0af 496
0a5d35ed
SG
497/* Defaults for system-wide constants (if not defined by xm.h, we fake it). */
498
bd5635a1 499#if !defined (UINT_MAX)
38dc5e12 500#define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
bd5635a1
RP
501#endif
502
e1ce8aa5 503#if !defined (INT_MAX)
dd577ca5 504#define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
e1ce8aa5
JK
505#endif
506
507#if !defined (INT_MIN)
38dc5e12
SG
508#define INT_MIN (-INT_MAX - 1) /* 0x80000000 for 32-bits */
509#endif
510
511#if !defined (ULONG_MAX)
512#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
513#endif
514
515#if !defined (LONG_MAX)
516#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
e1ce8aa5
JK
517#endif
518
7343d716
JK
519#ifdef BFD64
520
521/* This is to make sure that LONGEST is at least as big as CORE_ADDR. */
522
70126bf9 523#define LONGEST BFD_HOST_64_BIT
7343d716
JK
524
525#else /* No BFD64 */
526
fad466eb
SS
527/* If all compilers for this host support "long long" and we want to
528 use it for LONGEST (the performance hit is about 10% on a testsuite
529 run based on one DECstation test), then the xm.h file can define
530 CC_HAS_LONG_LONG.
531
532 Using GCC 1.39 on BSDI with long long causes about 700 new
533 testsuite failures. Using long long for LONGEST on the DECstation
534 causes 3 new FAILs in the testsuite and many heuristic fencepost
535 warnings. These are not investigated, but a first guess would be
536 that the BSDI problems are GCC bugs in long long support and the
537 latter are GDB bugs. */
7efb57c3
FF
538
539#ifndef CC_HAS_LONG_LONG
fad466eb 540# if defined (__GNUC__) && defined (FORCE_LONG_LONG)
7efb57c3
FF
541# define CC_HAS_LONG_LONG 1
542# endif
543#endif
fad466eb 544
7efb57c3
FF
545/* LONGEST should not be a typedef, because "unsigned LONGEST" needs to work.
546 CC_HAS_LONG_LONG is defined if the host compiler supports "long long"
547 variables and we wish to make use of that support. */
d747e0af
MT
548
549#ifndef LONGEST
7efb57c3
FF
550# ifdef CC_HAS_LONG_LONG
551# define LONGEST long long
552# else
553# define LONGEST long
554# endif
555#endif
556
7343d716
JK
557#endif /* No BFD64 */
558
7efb57c3
FF
559/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
560 arguments to a function, number in a value history, register number, etc.)
561 where the value must not be larger than can fit in an int. */
562
fb0f4231 563extern int longest_to_int PARAMS ((LONGEST));
d747e0af 564
0a5d35ed
SG
565/* Assorted functions we can declare, now that const and volatile are
566 defined. */
d747e0af
MT
567
568extern char *
569savestring PARAMS ((const char *, int));
570
318bf84f
FF
571extern char *
572msavestring PARAMS ((void *, const char *, int));
573
d747e0af
MT
574extern char *
575strsave PARAMS ((const char *));
576
318bf84f
FF
577extern char *
578mstrsave PARAMS ((void *, const char *));
579
d747e0af
MT
580extern char *
581concat PARAMS ((char *, ...));
582
583extern PTR
584xmalloc PARAMS ((long));
585
586extern PTR
318bf84f
FF
587xrealloc PARAMS ((PTR, long));
588
589extern PTR
590xmmalloc PARAMS ((PTR, long));
591
592extern PTR
593xmrealloc PARAMS ((PTR, PTR, long));
594
595extern PTR
596mmalloc PARAMS ((PTR, long));
597
598extern PTR
599mrealloc PARAMS ((PTR, PTR, long));
600
601extern void
602mfree PARAMS ((PTR, PTR));
603
604extern int
605mmcheck PARAMS ((PTR, void (*) (void)));
606
607extern int
608mmtrace PARAMS ((void));
d747e0af
MT
609
610extern int
611parse_escape PARAMS ((char **));
612
e676a15f 613extern const char * const reg_names[];
d747e0af 614
833e0d94
JK
615/* Message to be printed before the error message, when an error occurs. */
616
617extern char *error_pre_print;
618
619/* Message to be printed before the warning message, when a warning occurs. */
620
621extern char *warning_pre_print;
622
d747e0af
MT
623extern NORETURN void /* Does not return to the caller. */
624error ();
625
626extern NORETURN void /* Does not return to the caller. */
627fatal ();
628
629extern NORETURN void /* Not specified as volatile in ... */
630exit PARAMS ((int)); /* 4.10.4.3 */
631
318bf84f
FF
632extern NORETURN void /* Does not return to the caller. */
633nomem PARAMS ((long));
634
2fcdae93
PS
635/* Reasons for calling return_to_top_level. */
636enum return_reason {
637 /* User interrupt. */
638 RETURN_QUIT,
639
640 /* Any other error. */
641 RETURN_ERROR
642};
643
644#define RETURN_MASK_QUIT (1 << (int)RETURN_QUIT)
645#define RETURN_MASK_ERROR (1 << (int)RETURN_ERROR)
646#define RETURN_MASK_ALL (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
647typedef int return_mask;
648
d747e0af 649extern NORETURN void /* Does not return to the caller. */
2fcdae93
PS
650return_to_top_level PARAMS ((enum return_reason));
651
652extern int catch_errors PARAMS ((int (*) (char *), void *, char *,
653 return_mask));
d747e0af
MT
654
655extern void
656warning_setup PARAMS ((void));
657
658extern void
659warning ();
660
661/* Global functions from other, non-gdb GNU thingies (libiberty for
662 instance) */
663
664extern char *
665basename PARAMS ((char *));
666
667extern char *
a8e033f2 668getenv PARAMS ((const char *));
d747e0af
MT
669
670extern char **
671buildargv PARAMS ((char *));
672
673extern void
674freeargv PARAMS ((char **));
675
e146177e
SEF
676extern char *
677strerrno PARAMS ((int));
678
679extern char *
680strsigno PARAMS ((int));
681
682extern int
683errno_max PARAMS ((void));
684
685extern int
686signo_max PARAMS ((void));
687
688extern int
689strtoerrno PARAMS ((char *));
690
691extern int
692strtosigno PARAMS ((char *));
693
694extern char *
695strsignal PARAMS ((int));
696
697/* From other system libraries */
698
699#ifndef PSIGNAL_IN_SIGNAL_H
700extern void
7efb57c3 701psignal PARAMS ((unsigned, const char *));
e146177e
SEF
702#endif
703
d747e0af
MT
704/* For now, we can't include <stdlib.h> because it conflicts with
705 "../include/getopt.h". (FIXME)
706
318bf84f
FF
707 However, if a function is defined in the ANSI C standard and a prototype
708 for that function is defined and visible in any header file in an ANSI
709 conforming environment, then that prototype must match the definition in
710 the ANSI standard. So we can just duplicate them here without conflict,
d747e0af
MT
711 since they must be the same in all conforming ANSI environments. If
712 these cause problems, then the environment is not ANSI conformant. */
713
0a5d35ed 714#ifdef __STDC__
d747e0af 715#include <stddef.h>
0a5d35ed 716#endif
d747e0af
MT
717
718extern int
04f566a3 719fclose PARAMS ((GDB_FILE *stream)); /* 4.9.5.1 */
d747e0af 720
e146177e
SEF
721extern void
722perror PARAMS ((const char *)); /* 4.9.10.4 */
723
d747e0af
MT
724extern double
725atof PARAMS ((const char *nptr)); /* 4.10.1.1 */
726
51b57ded
FF
727extern int
728atoi PARAMS ((const char *)); /* 4.10.1.2 */
729
d747e0af 730#ifndef MALLOC_INCOMPATIBLE
318bf84f 731
d747e0af
MT
732extern PTR
733malloc PARAMS ((size_t size)); /* 4.10.3.3 */
734
735extern PTR
736realloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */
737
738extern void
318bf84f
FF
739free PARAMS ((void *)); /* 4.10.3.2 */
740
741#endif /* MALLOC_INCOMPATIBLE */
d747e0af 742
d630b615 743extern void
d747e0af
MT
744qsort PARAMS ((void *base, size_t nmemb, /* 4.10.5.2 */
745 size_t size,
fad466eb 746 int (*compar)(const void *, const void *)));
d747e0af 747
0f552c5f 748#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
51b57ded
FF
749extern PTR
750memcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */
751
752extern int
753memcmp PARAMS ((const void *, const void *, size_t)); /* 4.11.4.1 */
38dc5e12 754#endif
51b57ded 755
d747e0af
MT
756extern char *
757strchr PARAMS ((const char *, int)); /* 4.11.5.2 */
758
759extern char *
760strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */
761
e146177e
SEF
762extern char *
763strstr PARAMS ((const char *, const char *)); /* 4.11.5.7 */
764
d747e0af
MT
765extern char *
766strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */
767
0f552c5f 768#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
51b57ded
FF
769extern PTR
770memset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */
0f552c5f 771#endif
51b57ded 772
d747e0af
MT
773extern char *
774strerror PARAMS ((int)); /* 4.11.6.2 */
e2aab031 775
0a5d35ed
SG
776/* Various possibilities for alloca. */
777#ifndef alloca
778# ifdef __GNUC__
779# define alloca __builtin_alloca
7343d716 780# else /* Not GNU C */
0a5d35ed 781# ifdef sparc
22fd4704 782# include <alloca.h> /* NOTE: Doesn't declare alloca() */
e676a15f 783# endif
7343d716
JK
784
785/* We need to be careful not to declare this in a way which conflicts with
786 bison. Bison never declares it as char *, but under various circumstances
787 (like __hpux) we need to use void *. */
788# if defined (__STDC__) || defined (__hpux)
789 extern void *alloca ();
790# else /* Don't use void *. */
0f552c5f 791 extern char *alloca ();
7343d716
JK
792# endif /* Don't use void *. */
793# endif /* Not GNU C */
794#endif /* alloca not defined */
e2aab031 795
debd3443 796/* TARGET_BYTE_ORDER and HOST_BYTE_ORDER must be defined to one of these. */
a10c0d36 797
0a5d35ed
SG
798#if !defined (BIG_ENDIAN)
799#define BIG_ENDIAN 4321
800#endif
a10c0d36 801
0a5d35ed
SG
802#if !defined (LITTLE_ENDIAN)
803#define LITTLE_ENDIAN 1234
804#endif
a10c0d36 805
2fcdae93 806/* Target-system-dependent parameters for GDB. */
7d9884b9
JG
807
808/* Target machine definition. This will be a symlink to one of the
809 tm-*.h files, built by the `configure' script. */
810
7d9884b9 811#include "tm.h"
7d9884b9 812
04f566a3
JK
813/* Number of bits in a char or unsigned char for the target machine.
814 Just like CHAR_BIT in <limits.h> but describes the target machine. */
815#if !defined (TARGET_CHAR_BIT)
816#define TARGET_CHAR_BIT 8
817#endif
818
819/* Number of bits in a short or unsigned short for the target machine. */
820#if !defined (TARGET_SHORT_BIT)
821#define TARGET_SHORT_BIT (2 * TARGET_CHAR_BIT)
822#endif
823
824/* Number of bits in an int or unsigned int for the target machine. */
825#if !defined (TARGET_INT_BIT)
826#define TARGET_INT_BIT (4 * TARGET_CHAR_BIT)
827#endif
828
829/* Number of bits in a long or unsigned long for the target machine. */
830#if !defined (TARGET_LONG_BIT)
831#define TARGET_LONG_BIT (4 * TARGET_CHAR_BIT)
832#endif
833
834/* Number of bits in a long long or unsigned long long for the target machine. */
835#if !defined (TARGET_LONG_LONG_BIT)
836#define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT)
837#endif
838
839/* Number of bits in a float for the target machine. */
840#if !defined (TARGET_FLOAT_BIT)
841#define TARGET_FLOAT_BIT (4 * TARGET_CHAR_BIT)
842#endif
843
844/* Number of bits in a double for the target machine. */
845#if !defined (TARGET_DOUBLE_BIT)
846#define TARGET_DOUBLE_BIT (8 * TARGET_CHAR_BIT)
847#endif
848
849/* Number of bits in a long double for the target machine. */
850#if !defined (TARGET_LONG_DOUBLE_BIT)
851#define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT)
852#endif
853
854/* Number of bits in a "complex" for the target machine. */
855#if !defined (TARGET_COMPLEX_BIT)
856#define TARGET_COMPLEX_BIT (2 * TARGET_FLOAT_BIT)
857#endif
858
859/* Number of bits in a "double complex" for the target machine. */
860#if !defined (TARGET_DOUBLE_COMPLEX_BIT)
861#define TARGET_DOUBLE_COMPLEX_BIT (2 * TARGET_DOUBLE_BIT)
862#endif
863
864/* Number of bits in a pointer for the target machine */
865#if !defined (TARGET_PTR_BIT)
866#define TARGET_PTR_BIT TARGET_INT_BIT
867#endif
868
869/* If we picked up a copy of CHAR_BIT from a configuration file
870 (which may get it by including <limits.h>) then use it to set
871 the number of bits in a host char. If not, use the same size
872 as the target. */
873
874#if defined (CHAR_BIT)
875#define HOST_CHAR_BIT CHAR_BIT
876#else
877#define HOST_CHAR_BIT TARGET_CHAR_BIT
878#endif
879
7d9884b9
JG
880/* The bit byte-order has to do just with numbering of bits in
881 debugging symbols and such. Conceptually, it's quite separate
882 from byte/word byte order. */
883
884#if !defined (BITS_BIG_ENDIAN)
885#if TARGET_BYTE_ORDER == BIG_ENDIAN
886#define BITS_BIG_ENDIAN 1
887#endif /* Big endian. */
888
889#if TARGET_BYTE_ORDER == LITTLE_ENDIAN
890#define BITS_BIG_ENDIAN 0
891#endif /* Little endian. */
892#endif /* BITS_BIG_ENDIAN not defined. */
893
e3c16900
JK
894/* In findvar.c. */
895LONGEST extract_signed_integer PARAMS ((void *, int));
896unsigned LONGEST extract_unsigned_integer PARAMS ((void *, int));
897CORE_ADDR extract_address PARAMS ((void *, int));
898
899void store_signed_integer PARAMS ((void *, int, LONGEST));
900void store_unsigned_integer PARAMS ((void *, int, unsigned LONGEST));
901void store_address PARAMS ((void *, int, CORE_ADDR));
04f566a3
JK
902
903double extract_floating PARAMS ((void *, int));
904void store_floating PARAMS ((void *, int, double));
e3c16900 905\f
7d9884b9
JG
906/* On some machines there are bits in addresses which are not really
907 part of the address, but are used by the kernel, the hardware, etc.
908 for special purposes. ADDR_BITS_REMOVE takes out any such bits
909 so we get a "real" address such as one would find in a symbol
04f566a3 910 table. This is used only for addresses of instructions, and even then
e3c16900
JK
911 I'm not sure it's used in all contexts. It exists to deal with there
912 being a few stray bits in the PC which would mislead us, not as some sort
04f566a3
JK
913 of generic thing to handle alignment or segmentation (it's possible it
914 should be in TARGET_READ_PC instead). */
7d9884b9
JG
915#if !defined (ADDR_BITS_REMOVE)
916#define ADDR_BITS_REMOVE(addr) (addr)
7d9884b9
JG
917#endif /* No ADDR_BITS_REMOVE. */
918
d747e0af
MT
919/* From valops.c */
920
921extern CORE_ADDR
922push_bytes PARAMS ((CORE_ADDR, char *, int));
923
d747e0af 924extern CORE_ADDR
f4f0d174 925push_word PARAMS ((CORE_ADDR, unsigned LONGEST));
d747e0af 926
0239d9b3
FF
927/* Some parts of gdb might be considered optional, in the sense that they
928 are not essential for being able to build a working, usable debugger
929 for a specific environment. For example, the maintenance commands
930 are there for the benefit of gdb maintainers. As another example,
931 some environments really don't need gdb's that are able to read N
932 different object file formats. In order to make it possible (but
933 not necessarily recommended) to build "stripped down" versions of
934 gdb, the following defines control selective compilation of those
935 parts of gdb which can be safely left out when necessary. Note that
936 the default is to include everything. */
937
938#ifndef MAINTENANCE_CMDS
939#define MAINTENANCE_CMDS 1
940#endif
941
d747e0af 942#endif /* !defined (DEFS_H) */
This page took 0.181386 seconds and 4 git commands to generate.