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