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