* breakpoint.c (mention), main.c (fputs_unfiltered): Add comments.
[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 */
754e5da2
SG
95 language_m2, /* Modula-2 */
96 language_asm /* Assembly language */
bd5d07d9
FF
97};
98
bd5635a1
RP
99/* the cleanup list records things that have to be undone
100 if an error happens (descriptors to be closed, memory to be freed, etc.)
101 Each link in the chain records a function to call and an
102 argument to give it.
103
104 Use make_cleanup to add an element to the cleanup chain.
105 Use do_cleanups to do all cleanup actions back to a given
106 point in the chain. Use discard_cleanups to remove cleanups
107 from the chain back to a given point, not doing them. */
108
109struct cleanup
110{
111 struct cleanup *next;
d747e0af
MT
112 void (*function) PARAMS ((PTR));
113 PTR arg;
bd5635a1
RP
114};
115
d747e0af
MT
116/* From blockframe.c */
117
118extern int
e146177e 119inside_entry_func PARAMS ((CORE_ADDR));
d747e0af
MT
120
121extern int
e146177e 122inside_entry_file PARAMS ((CORE_ADDR addr));
d747e0af
MT
123
124extern int
e146177e 125inside_main_func PARAMS ((CORE_ADDR pc));
d747e0af 126
7532cf10
FF
127/* From ch-lang.c, for the moment. (FIXME) */
128
129extern char *
130chill_demangle PARAMS ((const char *));
7532cf10 131
2e4964ad 132/* From libiberty.a */
d747e0af
MT
133
134extern char *
135cplus_demangle PARAMS ((const char *, int));
136
137extern char *
138cplus_mangle_opname PARAMS ((char *, int));
139
318bf84f 140/* From libmmalloc.a (memory mapped malloc library) */
d747e0af
MT
141
142extern PTR
318bf84f 143mmalloc_attach PARAMS ((int, PTR));
d747e0af
MT
144
145extern PTR
318bf84f 146mmalloc_detach PARAMS ((PTR));
d747e0af
MT
147
148extern PTR
318bf84f 149mmalloc PARAMS ((PTR, long));
d747e0af
MT
150
151extern PTR
318bf84f 152mrealloc PARAMS ((PTR, PTR, long));
d747e0af
MT
153
154extern void
318bf84f 155mfree PARAMS ((PTR, PTR));
d747e0af 156
318bf84f
FF
157extern int
158mmalloc_setkey PARAMS ((PTR, int, PTR));
d747e0af
MT
159
160extern PTR
318bf84f 161mmalloc_getkey PARAMS ((PTR, int));
d747e0af
MT
162
163/* From utils.c */
164
d630b615
FF
165extern int
166strcmp_iw PARAMS ((const char *, const char *));
167
e146177e
SEF
168extern char *
169safe_strerror PARAMS ((int));
170
171extern char *
172safe_strsignal PARAMS ((int));
173
d747e0af 174extern void
e3c16900 175init_malloc PARAMS ((void *));
d747e0af
MT
176
177extern void
178request_quit PARAMS ((int));
179
180extern void
181do_cleanups PARAMS ((struct cleanup *));
182
183extern void
184discard_cleanups PARAMS ((struct cleanup *));
185
186/* The bare make_cleanup function is one of those rare beasts that
187 takes almost any type of function as the first arg and anything that
188 will fit in a "void *" as the second arg.
189
190 Should be, once all calls and called-functions are cleaned up:
191extern struct cleanup *
84d59861 192make_cleanup PARAMS ((void (*function) (void *), void *));
d747e0af
MT
193
194 Until then, lint and/or various type-checking compiler options will
195 complain about make_cleanup calls. It'd be wrong to just cast things,
196 since the type actually passed when the function is called would be
197 wrong. */
198
199extern struct cleanup *
200make_cleanup ();
201
202extern struct cleanup *
203save_cleanups PARAMS ((void));
204
205extern void
206restore_cleanups PARAMS ((struct cleanup *));
207
208extern void
209free_current_contents PARAMS ((char **));
210
211extern void
212null_cleanup PARAMS ((char **));
213
214extern int
215myread PARAMS ((int, char *, int));
216
217extern int
218query ();
6c803036 219\f
96f7edbd
JK
220/* Annotation stuff. */
221
6c803036
JK
222extern int annotation_level; /* in stack.c */
223\f
51b80b00
FF
224extern void
225begin_line PARAMS ((void));
226
d747e0af
MT
227extern void
228wrap_here PARAMS ((char *));
229
230extern void
231reinitialize_more_filter PARAMS ((void));
232
04f566a3
JK
233typedef FILE GDB_FILE;
234#define gdb_stdout stdout
235#define gdb_stderr stderr
236
d747e0af 237extern int
04f566a3
JK
238print_insn PARAMS ((CORE_ADDR, GDB_FILE *));
239
240extern void
241gdb_flush PARAMS ((GDB_FILE *));
242
243extern GDB_FILE *
244gdb_fopen PARAMS ((char * name, char * mode));
245
246extern void
247fputs_filtered PARAMS ((const char *, GDB_FILE *));
248
249extern void
250fputs_unfiltered PARAMS ((const char *, GDB_FILE *));
d747e0af
MT
251
252extern void
04f566a3
JK
253fputc_unfiltered PARAMS ((int, GDB_FILE *));
254
255extern void
256putc_unfiltered PARAMS ((int));
257
258#define putchar_unfiltered(C) putc_unfiltered(C)
d747e0af
MT
259
260extern void
261puts_filtered PARAMS ((char *));
262
04f566a3
JK
263extern void
264puts_unfiltered PARAMS ((char *));
265
51b80b00
FF
266extern void
267vprintf_filtered ();
268
a8e033f2 269extern void
4dba98fb 270vfprintf_filtered ();
a8e033f2 271
d747e0af
MT
272extern void
273fprintf_filtered ();
274
a8e033f2
SG
275extern void
276fprintfi_filtered ();
277
d747e0af
MT
278extern void
279printf_filtered ();
280
a8e033f2
SG
281extern void
282printfi_filtered ();
283
d747e0af 284extern void
04f566a3
JK
285vprintf_unfiltered ();
286
287extern void
288vfprintf_unfiltered ();
289
290extern void
291fprintf_unfiltered ();
d747e0af
MT
292
293extern void
04f566a3
JK
294printf_unfiltered ();
295
296extern void
297print_spaces PARAMS ((int, GDB_FILE *));
298
299extern void
300print_spaces_filtered PARAMS ((int, GDB_FILE *));
d747e0af
MT
301
302extern char *
303n_spaces PARAMS ((int));
304
305extern void
04f566a3 306gdb_printchar PARAMS ((int, GDB_FILE *, int));
d747e0af 307
833e0d94
JK
308/* Print a host address. */
309extern void gdb_print_address PARAMS ((void *, GDB_FILE *));
310
d747e0af 311extern void
04f566a3 312fprintf_symbol_filtered PARAMS ((GDB_FILE *, char *, enum language, int));
d747e0af
MT
313
314extern void
315perror_with_name PARAMS ((char *));
316
317extern void
318print_sys_errmsg PARAMS ((char *, int));
319
1bef45ea
JK
320/* From regex.c or libc. BSD 4.4 declares this with the argument type as
321 "const char *" in unistd.h, so we can't declare the argument
322 as "char *". */
d747e0af
MT
323
324extern char *
1bef45ea 325re_comp PARAMS ((const char *));
d747e0af
MT
326
327/* From symfile.c */
328
329extern void
330symbol_file_command PARAMS ((char *, int));
331
332/* From main.c */
333
d630b615
FF
334extern char *
335skip_quoted PARAMS ((char *));
336
d747e0af
MT
337extern char *
338gdb_readline PARAMS ((char *));
339
340extern char *
a0cf4681 341command_line_input PARAMS ((char *, int, char *));
d747e0af
MT
342
343extern void
344print_prompt PARAMS ((void));
345
d747e0af
MT
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 357extern void
754e5da2 358print_address_numeric PARAMS ((CORE_ADDR, int, GDB_FILE *));
833e0d94 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 ();
a0cf4681
JK
623
624extern void error_begin PARAMS ((void));
d747e0af
MT
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
754e5da2
SG
942/* Hooks for alternate command interfaces. */
943
944#ifdef __STDC__
945struct symtab;
946struct breakpoint;
947#endif
948
949void (*init_ui_hook) PARAMS ((void));
950void (*command_loop_hook) PARAMS ((void));
951void (*fputs_unfiltered_hook) PARAMS ((const char *linebuffer));
952void (*print_frame_info_listing_hook) PARAMS ((struct symtab *s, int line,
953 int stopline, int noerror));
954int (*query_hook) PARAMS (());
955void (*flush_hook) PARAMS ((FILE *stream));
956void (*create_breakpoint_hook) PARAMS ((struct breakpoint *b));
957void (*delete_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
958void (*enable_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
959void (*disable_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
960
961/* Inhibit window interface if non-zero. */
962
963extern int no_windows;
964
d747e0af 965#endif /* !defined (DEFS_H) */
This page took 0.300893 seconds and 4 git commands to generate.