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