]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/defs.h
* main.c (main): Accept --annotate=N option and make --fullname
[thirdparty/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
JK
218\f
219extern int annotation_level; /* in stack.c */
220\f
51b80b00
FF
221extern void
222begin_line PARAMS ((void));
223
d747e0af
MT
224extern void
225wrap_here PARAMS ((char *));
226
227extern void
228reinitialize_more_filter PARAMS ((void));
229
04f566a3
JK
230typedef FILE GDB_FILE;
231#define gdb_stdout stdout
232#define gdb_stderr stderr
233
d747e0af 234extern int
04f566a3
JK
235print_insn PARAMS ((CORE_ADDR, GDB_FILE *));
236
237extern void
238gdb_flush PARAMS ((GDB_FILE *));
239
240extern GDB_FILE *
241gdb_fopen PARAMS ((char * name, char * mode));
242
243extern void
244fputs_filtered PARAMS ((const char *, GDB_FILE *));
245
246extern void
247fputs_unfiltered PARAMS ((const char *, GDB_FILE *));
d747e0af
MT
248
249extern void
04f566a3
JK
250fputc_unfiltered PARAMS ((int, GDB_FILE *));
251
252extern void
253putc_unfiltered PARAMS ((int));
254
255#define putchar_unfiltered(C) putc_unfiltered(C)
d747e0af
MT
256
257extern void
258puts_filtered PARAMS ((char *));
259
04f566a3
JK
260extern void
261puts_unfiltered PARAMS ((char *));
262
51b80b00
FF
263extern void
264vprintf_filtered ();
265
a8e033f2 266extern void
4dba98fb 267vfprintf_filtered ();
a8e033f2 268
d747e0af
MT
269extern void
270fprintf_filtered ();
271
a8e033f2
SG
272extern void
273fprintfi_filtered ();
274
d747e0af
MT
275extern void
276printf_filtered ();
277
a8e033f2
SG
278extern void
279printfi_filtered ();
280
d747e0af 281extern void
04f566a3
JK
282vprintf_unfiltered ();
283
284extern void
285vfprintf_unfiltered ();
286
287extern void
288fprintf_unfiltered ();
d747e0af
MT
289
290extern void
04f566a3
JK
291printf_unfiltered ();
292
293extern void
294print_spaces PARAMS ((int, GDB_FILE *));
295
296extern void
297print_spaces_filtered PARAMS ((int, GDB_FILE *));
d747e0af
MT
298
299extern char *
300n_spaces PARAMS ((int));
301
302extern void
04f566a3 303gdb_printchar PARAMS ((int, GDB_FILE *, int));
d747e0af 304
833e0d94
JK
305/* Print a host address. */
306extern void gdb_print_address PARAMS ((void *, GDB_FILE *));
307
d747e0af 308extern void
04f566a3 309fprintf_symbol_filtered PARAMS ((GDB_FILE *, char *, enum language, int));
d747e0af
MT
310
311extern void
312perror_with_name PARAMS ((char *));
313
314extern void
315print_sys_errmsg PARAMS ((char *, int));
316
1bef45ea
JK
317/* From regex.c or libc. BSD 4.4 declares this with the argument type as
318 "const char *" in unistd.h, so we can't declare the argument
319 as "char *". */
d747e0af
MT
320
321extern char *
1bef45ea 322re_comp PARAMS ((const char *));
d747e0af
MT
323
324/* From symfile.c */
325
326extern void
327symbol_file_command PARAMS ((char *, int));
328
329/* From main.c */
330
d630b615
FF
331extern char *
332skip_quoted PARAMS ((char *));
333
d747e0af
MT
334extern char *
335gdb_readline PARAMS ((char *));
336
337extern char *
338command_line_input PARAMS ((char *, int));
339
340extern void
341print_prompt PARAMS ((void));
342
343extern int
344batch_mode PARAMS ((void));
345
346extern int
347input_from_terminal_p PARAMS ((void));
348
bd5635a1 349/* From printcmd.c */
d747e0af
MT
350
351extern void
352set_next_address PARAMS ((CORE_ADDR));
353
354extern void
04f566a3 355print_address_symbolic PARAMS ((CORE_ADDR, GDB_FILE *, int, char *));
d747e0af 356
833e0d94
JK
357extern void
358print_address_numeric PARAMS ((CORE_ADDR, GDB_FILE *));
359
d747e0af 360extern void
04f566a3 361print_address PARAMS ((CORE_ADDR, GDB_FILE *));
bd5635a1 362
e1ce8aa5 363/* From source.c */
d747e0af
MT
364
365extern int
366openp PARAMS ((char *, int, char *, int, int, char **));
367
368extern void
369mod_path PARAMS ((char *, char **));
370
371extern void
372directory_command PARAMS ((char *, int));
373
374extern void
375init_source_path PARAMS ((void));
376
377/* From findvar.c */
378
379extern int
380read_relative_register_raw_bytes PARAMS ((int, char *));
e1ce8aa5 381
bd5635a1 382/* From readline (but not in any readline .h files). */
d747e0af
MT
383
384extern char *
385tilde_expand PARAMS ((char *));
bd5635a1
RP
386
387/* Structure for saved commands lines
388 (for breakpoints, defined commands, etc). */
389
390struct command_line
391{
392 struct command_line *next;
393 char *line;
394};
395
d747e0af
MT
396extern struct command_line *
397read_command_lines PARAMS ((void));
398
399extern void
400free_command_lines PARAMS ((struct command_line **));
bd5635a1
RP
401
402/* String containing the current directory (what getwd would return). */
403
d747e0af 404extern char *current_directory;
bd5635a1
RP
405
406/* Default radixes for input and output. Only some values supported. */
407extern unsigned input_radix;
408extern unsigned output_radix;
409
a8a69e63
FF
410/* Possibilities for prettyprint parameters to routines which print
411 things. Like enum language, this should be in value.h, but needs
412 to be here for the same reason. FIXME: If we can eliminate this
413 as an arg to LA_VAL_PRINT, then we can probably move it back to
414 value.h. */
415
416enum val_prettyprint
417{
418 Val_no_prettyprint = 0,
419 Val_prettyprint,
420 /* Use the default setting which the user has specified. */
421 Val_pretty_default
422};
423
0a5d35ed
SG
424\f
425/* Host machine definition. This will be a symlink to one of the
426 xm-*.h files, built by the `configure' script. */
427
428#include "xm.h"
429
e58de8a2
FF
430/* Native machine support. This will be a symlink to one of the
431 nm-*.h files, built by the `configure' script. */
432
433#include "nm.h"
434
e146177e
SEF
435/* If the xm.h file did not define the mode string used to open the
436 files, assume that binary files are opened the same way as text
437 files */
438#ifndef FOPEN_RB
439#include "fopen-same.h"
440#endif
441
0a5d35ed
SG
442/*
443 * Allow things in gdb to be declared "const". If compiling ANSI, it
444 * just works. If compiling with gcc but non-ansi, redefine to __const__.
445 * If non-ansi, non-gcc, then eliminate "const" entirely, making those
446 * objects be read-write rather than read-only.
447 */
448
449#ifndef const
450#ifndef __STDC__
451# ifdef __GNUC__
452# define const __const__
453# else
454# define const /*nothing*/
455# endif /* GNUC */
456#endif /* STDC */
457#endif /* const */
458
459#ifndef volatile
460#ifndef __STDC__
461# ifdef __GNUC__
462# define volatile __volatile__
463# else
464# define volatile /*nothing*/
465# endif /* GNUC */
466#endif /* STDC */
467#endif /* volatile */
468
e3c16900
JK
469#if 1
470#define NORETURN /*nothing*/
471#else /* not 1 */
472/* FIXME: This is bogus. Having "volatile void" mean a function doesn't
473 return is a gcc extension and should be based on #ifdef __GNUC__.
474 Also, as of Sep 93 I'm told gcc is changing the syntax for ansi
475 reasons (so declaring exit here as "volatile void" and as "void" in
476 a system header loses). Using the new "__attributes__ ((noreturn));"
477 syntax would lose for old versions of gcc; using
478 typedef void exit_fn_type PARAMS ((int));
479 volatile exit_fn_type exit;
480 would win. */
d747e0af
MT
481/* Some compilers (many AT&T SVR4 compilers for instance), do not accept
482 declarations of functions that never return (exit for instance) as
483 "volatile void". For such compilers "NORETURN" can be defined away
484 to keep them happy */
485
486#ifndef NORETURN
e676a15f
FF
487# ifdef __lucid
488# define NORETURN /*nothing*/
489# else
490# define NORETURN volatile
491# endif
d747e0af 492#endif
e3c16900 493#endif /* not 1 */
d747e0af 494
0a5d35ed
SG
495/* Defaults for system-wide constants (if not defined by xm.h, we fake it). */
496
bd5635a1 497#if !defined (UINT_MAX)
38dc5e12 498#define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
bd5635a1
RP
499#endif
500
e1ce8aa5 501#if !defined (INT_MAX)
dd577ca5 502#define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
e1ce8aa5
JK
503#endif
504
505#if !defined (INT_MIN)
38dc5e12
SG
506#define INT_MIN (-INT_MAX - 1) /* 0x80000000 for 32-bits */
507#endif
508
509#if !defined (ULONG_MAX)
510#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
511#endif
512
513#if !defined (LONG_MAX)
514#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
e1ce8aa5
JK
515#endif
516
7343d716
JK
517#ifdef BFD64
518
519/* This is to make sure that LONGEST is at least as big as CORE_ADDR. */
520
70126bf9 521#define LONGEST BFD_HOST_64_BIT
7343d716
JK
522
523#else /* No BFD64 */
524
fad466eb
SS
525/* If all compilers for this host support "long long" and we want to
526 use it for LONGEST (the performance hit is about 10% on a testsuite
527 run based on one DECstation test), then the xm.h file can define
528 CC_HAS_LONG_LONG.
529
530 Using GCC 1.39 on BSDI with long long causes about 700 new
531 testsuite failures. Using long long for LONGEST on the DECstation
532 causes 3 new FAILs in the testsuite and many heuristic fencepost
533 warnings. These are not investigated, but a first guess would be
534 that the BSDI problems are GCC bugs in long long support and the
535 latter are GDB bugs. */
7efb57c3
FF
536
537#ifndef CC_HAS_LONG_LONG
fad466eb 538# if defined (__GNUC__) && defined (FORCE_LONG_LONG)
7efb57c3
FF
539# define CC_HAS_LONG_LONG 1
540# endif
541#endif
fad466eb 542
7efb57c3
FF
543/* LONGEST should not be a typedef, because "unsigned LONGEST" needs to work.
544 CC_HAS_LONG_LONG is defined if the host compiler supports "long long"
545 variables and we wish to make use of that support. */
d747e0af
MT
546
547#ifndef LONGEST
7efb57c3
FF
548# ifdef CC_HAS_LONG_LONG
549# define LONGEST long long
550# else
551# define LONGEST long
552# endif
553#endif
554
7343d716
JK
555#endif /* No BFD64 */
556
7efb57c3
FF
557/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
558 arguments to a function, number in a value history, register number, etc.)
559 where the value must not be larger than can fit in an int. */
560
fb0f4231 561extern int longest_to_int PARAMS ((LONGEST));
d747e0af 562
0a5d35ed
SG
563/* Assorted functions we can declare, now that const and volatile are
564 defined. */
d747e0af
MT
565
566extern char *
567savestring PARAMS ((const char *, int));
568
318bf84f
FF
569extern char *
570msavestring PARAMS ((void *, const char *, int));
571
d747e0af
MT
572extern char *
573strsave PARAMS ((const char *));
574
318bf84f
FF
575extern char *
576mstrsave PARAMS ((void *, const char *));
577
d747e0af
MT
578extern char *
579concat PARAMS ((char *, ...));
580
581extern PTR
582xmalloc PARAMS ((long));
583
584extern PTR
318bf84f
FF
585xrealloc PARAMS ((PTR, long));
586
587extern PTR
588xmmalloc PARAMS ((PTR, long));
589
590extern PTR
591xmrealloc PARAMS ((PTR, PTR, long));
592
593extern PTR
594mmalloc PARAMS ((PTR, long));
595
596extern PTR
597mrealloc PARAMS ((PTR, PTR, long));
598
599extern void
600mfree PARAMS ((PTR, PTR));
601
602extern int
603mmcheck PARAMS ((PTR, void (*) (void)));
604
605extern int
606mmtrace PARAMS ((void));
d747e0af
MT
607
608extern int
609parse_escape PARAMS ((char **));
610
e676a15f 611extern const char * const reg_names[];
d747e0af 612
833e0d94
JK
613/* Message to be printed before the error message, when an error occurs. */
614
615extern char *error_pre_print;
616
617/* Message to be printed before the warning message, when a warning occurs. */
618
619extern char *warning_pre_print;
620
d747e0af
MT
621extern NORETURN void /* Does not return to the caller. */
622error ();
623
624extern NORETURN void /* Does not return to the caller. */
625fatal ();
626
627extern NORETURN void /* Not specified as volatile in ... */
628exit PARAMS ((int)); /* 4.10.4.3 */
629
318bf84f
FF
630extern NORETURN void /* Does not return to the caller. */
631nomem PARAMS ((long));
632
2fcdae93
PS
633/* Reasons for calling return_to_top_level. */
634enum return_reason {
635 /* User interrupt. */
636 RETURN_QUIT,
637
638 /* Any other error. */
639 RETURN_ERROR
640};
641
642#define RETURN_MASK_QUIT (1 << (int)RETURN_QUIT)
643#define RETURN_MASK_ERROR (1 << (int)RETURN_ERROR)
644#define RETURN_MASK_ALL (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
645typedef int return_mask;
646
d747e0af 647extern NORETURN void /* Does not return to the caller. */
2fcdae93
PS
648return_to_top_level PARAMS ((enum return_reason));
649
650extern int catch_errors PARAMS ((int (*) (char *), void *, char *,
651 return_mask));
d747e0af
MT
652
653extern void
654warning_setup PARAMS ((void));
655
656extern void
657warning ();
658
659/* Global functions from other, non-gdb GNU thingies (libiberty for
660 instance) */
661
662extern char *
663basename PARAMS ((char *));
664
665extern char *
a8e033f2 666getenv PARAMS ((const char *));
d747e0af
MT
667
668extern char **
669buildargv PARAMS ((char *));
670
671extern void
672freeargv PARAMS ((char **));
673
e146177e
SEF
674extern char *
675strerrno PARAMS ((int));
676
677extern char *
678strsigno PARAMS ((int));
679
680extern int
681errno_max PARAMS ((void));
682
683extern int
684signo_max PARAMS ((void));
685
686extern int
687strtoerrno PARAMS ((char *));
688
689extern int
690strtosigno PARAMS ((char *));
691
692extern char *
693strsignal PARAMS ((int));
694
695/* From other system libraries */
696
697#ifndef PSIGNAL_IN_SIGNAL_H
698extern void
7efb57c3 699psignal PARAMS ((unsigned, const char *));
e146177e
SEF
700#endif
701
d747e0af
MT
702/* For now, we can't include <stdlib.h> because it conflicts with
703 "../include/getopt.h". (FIXME)
704
318bf84f
FF
705 However, if a function is defined in the ANSI C standard and a prototype
706 for that function is defined and visible in any header file in an ANSI
707 conforming environment, then that prototype must match the definition in
708 the ANSI standard. So we can just duplicate them here without conflict,
d747e0af
MT
709 since they must be the same in all conforming ANSI environments. If
710 these cause problems, then the environment is not ANSI conformant. */
711
0a5d35ed 712#ifdef __STDC__
d747e0af 713#include <stddef.h>
0a5d35ed 714#endif
d747e0af
MT
715
716extern int
04f566a3 717fclose PARAMS ((GDB_FILE *stream)); /* 4.9.5.1 */
d747e0af 718
e146177e
SEF
719extern void
720perror PARAMS ((const char *)); /* 4.9.10.4 */
721
d747e0af
MT
722extern double
723atof PARAMS ((const char *nptr)); /* 4.10.1.1 */
724
51b57ded
FF
725extern int
726atoi PARAMS ((const char *)); /* 4.10.1.2 */
727
d747e0af 728#ifndef MALLOC_INCOMPATIBLE
318bf84f 729
d747e0af
MT
730extern PTR
731malloc PARAMS ((size_t size)); /* 4.10.3.3 */
732
733extern PTR
734realloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */
735
736extern void
318bf84f
FF
737free PARAMS ((void *)); /* 4.10.3.2 */
738
739#endif /* MALLOC_INCOMPATIBLE */
d747e0af 740
d630b615 741extern void
d747e0af
MT
742qsort PARAMS ((void *base, size_t nmemb, /* 4.10.5.2 */
743 size_t size,
fad466eb 744 int (*compar)(const void *, const void *)));
d747e0af 745
0f552c5f 746#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
51b57ded
FF
747extern PTR
748memcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */
749
750extern int
751memcmp PARAMS ((const void *, const void *, size_t)); /* 4.11.4.1 */
38dc5e12 752#endif
51b57ded 753
d747e0af
MT
754extern char *
755strchr PARAMS ((const char *, int)); /* 4.11.5.2 */
756
757extern char *
758strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */
759
e146177e
SEF
760extern char *
761strstr PARAMS ((const char *, const char *)); /* 4.11.5.7 */
762
d747e0af
MT
763extern char *
764strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */
765
0f552c5f 766#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
51b57ded
FF
767extern PTR
768memset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */
0f552c5f 769#endif
51b57ded 770
d747e0af
MT
771extern char *
772strerror PARAMS ((int)); /* 4.11.6.2 */
e2aab031 773
0a5d35ed
SG
774/* Various possibilities for alloca. */
775#ifndef alloca
776# ifdef __GNUC__
777# define alloca __builtin_alloca
7343d716 778# else /* Not GNU C */
0a5d35ed 779# ifdef sparc
22fd4704 780# include <alloca.h> /* NOTE: Doesn't declare alloca() */
e676a15f 781# endif
7343d716
JK
782
783/* We need to be careful not to declare this in a way which conflicts with
784 bison. Bison never declares it as char *, but under various circumstances
785 (like __hpux) we need to use void *. */
786# if defined (__STDC__) || defined (__hpux)
787 extern void *alloca ();
788# else /* Don't use void *. */
0f552c5f 789 extern char *alloca ();
7343d716
JK
790# endif /* Don't use void *. */
791# endif /* Not GNU C */
792#endif /* alloca not defined */
e2aab031 793
debd3443 794/* TARGET_BYTE_ORDER and HOST_BYTE_ORDER must be defined to one of these. */
a10c0d36 795
0a5d35ed
SG
796#if !defined (BIG_ENDIAN)
797#define BIG_ENDIAN 4321
798#endif
a10c0d36 799
0a5d35ed
SG
800#if !defined (LITTLE_ENDIAN)
801#define LITTLE_ENDIAN 1234
802#endif
a10c0d36 803
2fcdae93 804/* Target-system-dependent parameters for GDB. */
7d9884b9
JG
805
806/* Target machine definition. This will be a symlink to one of the
807 tm-*.h files, built by the `configure' script. */
808
7d9884b9 809#include "tm.h"
7d9884b9 810
04f566a3
JK
811/* Number of bits in a char or unsigned char for the target machine.
812 Just like CHAR_BIT in <limits.h> but describes the target machine. */
813#if !defined (TARGET_CHAR_BIT)
814#define TARGET_CHAR_BIT 8
815#endif
816
817/* Number of bits in a short or unsigned short for the target machine. */
818#if !defined (TARGET_SHORT_BIT)
819#define TARGET_SHORT_BIT (2 * TARGET_CHAR_BIT)
820#endif
821
822/* Number of bits in an int or unsigned int for the target machine. */
823#if !defined (TARGET_INT_BIT)
824#define TARGET_INT_BIT (4 * TARGET_CHAR_BIT)
825#endif
826
827/* Number of bits in a long or unsigned long for the target machine. */
828#if !defined (TARGET_LONG_BIT)
829#define TARGET_LONG_BIT (4 * TARGET_CHAR_BIT)
830#endif
831
832/* Number of bits in a long long or unsigned long long for the target machine. */
833#if !defined (TARGET_LONG_LONG_BIT)
834#define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT)
835#endif
836
837/* Number of bits in a float for the target machine. */
838#if !defined (TARGET_FLOAT_BIT)
839#define TARGET_FLOAT_BIT (4 * TARGET_CHAR_BIT)
840#endif
841
842/* Number of bits in a double for the target machine. */
843#if !defined (TARGET_DOUBLE_BIT)
844#define TARGET_DOUBLE_BIT (8 * TARGET_CHAR_BIT)
845#endif
846
847/* Number of bits in a long double for the target machine. */
848#if !defined (TARGET_LONG_DOUBLE_BIT)
849#define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT)
850#endif
851
852/* Number of bits in a "complex" for the target machine. */
853#if !defined (TARGET_COMPLEX_BIT)
854#define TARGET_COMPLEX_BIT (2 * TARGET_FLOAT_BIT)
855#endif
856
857/* Number of bits in a "double complex" for the target machine. */
858#if !defined (TARGET_DOUBLE_COMPLEX_BIT)
859#define TARGET_DOUBLE_COMPLEX_BIT (2 * TARGET_DOUBLE_BIT)
860#endif
861
862/* Number of bits in a pointer for the target machine */
863#if !defined (TARGET_PTR_BIT)
864#define TARGET_PTR_BIT TARGET_INT_BIT
865#endif
866
867/* If we picked up a copy of CHAR_BIT from a configuration file
868 (which may get it by including <limits.h>) then use it to set
869 the number of bits in a host char. If not, use the same size
870 as the target. */
871
872#if defined (CHAR_BIT)
873#define HOST_CHAR_BIT CHAR_BIT
874#else
875#define HOST_CHAR_BIT TARGET_CHAR_BIT
876#endif
877
7d9884b9
JG
878/* The bit byte-order has to do just with numbering of bits in
879 debugging symbols and such. Conceptually, it's quite separate
880 from byte/word byte order. */
881
882#if !defined (BITS_BIG_ENDIAN)
883#if TARGET_BYTE_ORDER == BIG_ENDIAN
884#define BITS_BIG_ENDIAN 1
885#endif /* Big endian. */
886
887#if TARGET_BYTE_ORDER == LITTLE_ENDIAN
888#define BITS_BIG_ENDIAN 0
889#endif /* Little endian. */
890#endif /* BITS_BIG_ENDIAN not defined. */
891
e3c16900
JK
892/* In findvar.c. */
893LONGEST extract_signed_integer PARAMS ((void *, int));
894unsigned LONGEST extract_unsigned_integer PARAMS ((void *, int));
895CORE_ADDR extract_address PARAMS ((void *, int));
896
897void store_signed_integer PARAMS ((void *, int, LONGEST));
898void store_unsigned_integer PARAMS ((void *, int, unsigned LONGEST));
899void store_address PARAMS ((void *, int, CORE_ADDR));
04f566a3
JK
900
901double extract_floating PARAMS ((void *, int));
902void store_floating PARAMS ((void *, int, double));
e3c16900 903\f
7d9884b9
JG
904/* On some machines there are bits in addresses which are not really
905 part of the address, but are used by the kernel, the hardware, etc.
906 for special purposes. ADDR_BITS_REMOVE takes out any such bits
907 so we get a "real" address such as one would find in a symbol
04f566a3 908 table. This is used only for addresses of instructions, and even then
e3c16900
JK
909 I'm not sure it's used in all contexts. It exists to deal with there
910 being a few stray bits in the PC which would mislead us, not as some sort
04f566a3
JK
911 of generic thing to handle alignment or segmentation (it's possible it
912 should be in TARGET_READ_PC instead). */
7d9884b9
JG
913#if !defined (ADDR_BITS_REMOVE)
914#define ADDR_BITS_REMOVE(addr) (addr)
7d9884b9
JG
915#endif /* No ADDR_BITS_REMOVE. */
916
d747e0af
MT
917/* From valops.c */
918
919extern CORE_ADDR
920push_bytes PARAMS ((CORE_ADDR, char *, int));
921
d747e0af 922extern CORE_ADDR
f4f0d174 923push_word PARAMS ((CORE_ADDR, unsigned LONGEST));
d747e0af 924
0239d9b3
FF
925/* Some parts of gdb might be considered optional, in the sense that they
926 are not essential for being able to build a working, usable debugger
927 for a specific environment. For example, the maintenance commands
928 are there for the benefit of gdb maintainers. As another example,
929 some environments really don't need gdb's that are able to read N
930 different object file formats. In order to make it possible (but
931 not necessarily recommended) to build "stripped down" versions of
932 gdb, the following defines control selective compilation of those
933 parts of gdb which can be safely left out when necessary. Note that
934 the default is to include everything. */
935
936#ifndef MAINTENANCE_CMDS
937#define MAINTENANCE_CMDS 1
938#endif
939
d747e0af 940#endif /* !defined (DEFS_H) */