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