* dwarf2read.c (dwarf2_fetch_die_loc_sect_off): New function.
[deliverable/binutils-gdb.git] / gdb / defs.h
CommitLineData
a0b31db1
JK
1/* *INDENT-OFF* */ /* ATTRIBUTE_PRINTF confuses indent, avoid running it
2 for now. */
c906108c 3/* Basic, host-specific, and target-specific definitions for GDB.
0b302171
JB
4 Copyright (C) 1986, 1988-2005, 2007-2012 Free Software Foundation,
5 Inc.
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
c5aa993b 12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
21
22#ifndef DEFS_H
23#define DEFS_H
24
d26e3629
KY
25#ifdef GDBSERVER
26# error gdbserver should not include gdb/defs.h
27#endif
28
975ac915 29#include "config.h" /* Generated by configure. */
406b1477 30#include "build-gnulib/config.h"
975ac915 31
8b04f8b6 32#include <sys/types.h>
c906108c 33#include <stdio.h>
975ac915 34#include <errno.h> /* System call error return status. */
c906108c 35#include <limits.h>
d5af19ba 36#include <stdint.h>
c906108c 37
06e476f5
JB
38/* The libdecnumber library, on which GDB depends, includes a header file
39 called gstdint.h instead of relying directly on stdint.h. GDB, on the
40 other hand, includes stdint.h directly, relying on the fact that gnulib
41 generates a copy if the system doesn't provide one or if it is missing
42 some features. Unfortunately, gstdint.h and stdint.h cannot be included
43 at the same time, which may happen when we include a file from
44 libdecnumber.
45
46 The following macro definition effectively prevents the inclusion of
47 gstdint.h, as all the definitions it provides are guarded against
48 the GCC_GENERATED_STDINT_H macro. We already have gnulib/stdint.h
49 included, so it's ok to blank out gstdint.h. */
50#define GCC_GENERATED_STDINT_H 1
51
c906108c 52#ifdef HAVE_STDDEF_H
917317f4 53#include <stddef.h>
c906108c
SS
54#endif
55
104c1213
JM
56#ifdef HAVE_UNISTD_H
57#include <unistd.h>
58#endif
59
637d6690
CW
60#include <fcntl.h>
61
167baebf
MK
62/* First include ansidecl.h so we can use the various macro definitions
63 here and in all subsequent file inclusions. */
64
65#include "ansidecl.h"
66
0fbb3da7
TT
67#include "gdb_locale.h"
68
6c7a06a3
TT
69#include "gdb_wchar.h"
70
2ea28649 71/* For ``enum gdb_signal''. */
dd7bf85e
DJ
72#include "gdb/signals.h"
73
48faced0
DE
74#include "ui-file.h"
75
76#include "host-defs.h"
77
975ac915 78/* Just in case they're not defined in stdio.h. */
c906108c
SS
79
80#ifndef SEEK_SET
81#define SEEK_SET 0
82#endif
83#ifndef SEEK_CUR
84#define SEEK_CUR 1
85#endif
86
637d6690
CW
87/* The O_BINARY flag is defined in fcntl.h on some non-Posix platforms.
88 It is used as an access modifier in calls to open(), where it acts
0963b4bd
MS
89 similarly to the "b" character in fopen()'s MODE argument. On Posix
90 platforms it should be a no-op, so it is defined as 0 here. This
91 ensures that the symbol may be used freely elsewhere in gdb. */
637d6690
CW
92
93#ifndef O_BINARY
94#define O_BINARY 0
95#endif
96
975ac915 97#include <stdarg.h> /* For va_list. */
c906108c
SS
98
99#include "libiberty.h"
8e3b41a9 100#include "hashtab.h"
c906108c 101
b57b6c2e
MK
102/* Rather than duplicate all the logic in BFD for figuring out what
103 types to use (which can be pretty complicated), symply define them
104 in terms of the corresponding type from BFD. */
105
c906108c
SS
106#include "bfd.h"
107
b57b6c2e
MK
108/* A byte from the program being debugged. */
109typedef bfd_byte gdb_byte;
c906108c 110
b57b6c2e 111/* An address in the program being debugged. Host byte order. */
c906108c
SS
112typedef bfd_vma CORE_ADDR;
113
801e3a5b
JB
114/* The largest CORE_ADDR value. */
115#define CORE_ADDR_MAX (~ (CORE_ADDR) 0)
116
104c1213
JM
117/* This is to make sure that LONGEST is at least as big as CORE_ADDR. */
118
119#ifndef LONGEST
120
121#ifdef BFD64
122
123#define LONGEST BFD_HOST_64_BIT
124#define ULONGEST BFD_HOST_U_64_BIT
125
126#else /* No BFD64 */
127
917317f4
JM
128#define LONGEST long long
129#define ULONGEST unsigned long long
104c1213
JM
130
131#endif /* No BFD64 */
132
133#endif /* ! LONGEST */
134
c906108c
SS
135#ifndef min
136#define min(a, b) ((a) < (b) ? (a) : (b))
137#endif
138#ifndef max
139#define max(a, b) ((a) > (b) ? (a) : (b))
140#endif
141
d26e3629
KY
142#include "ptid.h"
143
0963b4bd 144/* Enable xdb commands if set. */
c906108c
SS
145extern int xdb_commands;
146
0963b4bd 147/* Enable dbx commands if set. */
c906108c
SS
148extern int dbx_commands;
149
030292b7
DJ
150/* System root path, used to find libraries etc. */
151extern char *gdb_sysroot;
152
b14b1491
TT
153/* GDB datadir, used to store data files. */
154extern char *gdb_datadir;
155
0c4a4063
DE
156/* If non-NULL, the possibly relocated path to python's "lib" directory
157 specified with --with-python. */
158extern char *python_libdir;
159
aa28a74e
DJ
160/* Search path for separate debug files. */
161extern char *debug_file_directory;
162
522002f9
TT
163/* GDB has two methods for handling SIGINT. When immediate_quit is
164 nonzero, a SIGINT results in an immediate longjmp out of the signal
165 handler. Otherwise, SIGINT simply sets a flag; code that might
166 take a long time, and which ought to be interruptible, checks this
167 flag using the QUIT macro.
168
169 If GDB is built with Python support, it uses Python's low-level
170 interface to implement the flag. This approach makes it possible
171 for Python and GDB SIGINT handling to coexist seamlessly.
172
173 If GDB is built without Python, it instead uses its traditional
174 variables. */
175
176/* Clear the quit flag. */
177extern void clear_quit_flag (void);
178/* Evaluate to non-zero if the quit flag is set, zero otherwise. This
179 will clear the quit flag as a side effect. */
180extern int check_quit_flag (void);
181/* Set the quit flag. */
182extern void set_quit_flag (void);
183
c906108c 184extern int immediate_quit;
c906108c 185
917317f4 186extern void quit (void);
c906108c 187
1a0559af
AC
188/* FIXME: cagney/2000-03-13: It has been suggested that the peformance
189 benefits of having a ``QUIT'' macro rather than a function are
190 marginal. If the overhead of a QUIT function call is proving
191 significant then its calling frequency should probably be reduced
192 [kingdon]. A profile analyzing the current situtation is
0963b4bd 193 needed. */
1a0559af 194
c906108c 195#define QUIT { \
522002f9 196 if (check_quit_flag ()) quit (); \
9a4105ab 197 if (deprecated_interactive_hook) deprecated_interactive_hook (); \
c906108c 198}
c906108c 199
c906108c
SS
200/* Languages represented in the symbol table and elsewhere.
201 This should probably be in language.h, but since enum's can't
202 be forward declared to satisfy opaque references before their
0963b4bd 203 actual definition, needs to be here. */
c906108c 204
917317f4
JM
205enum language
206 {
207 language_unknown, /* Language not known */
208 language_auto, /* Placeholder for automatic setting */
209 language_c, /* C */
210 language_cplus, /* C++ */
6aecb9c2 211 language_d, /* D */
a766d390 212 language_go, /* Go */
50f85cdf 213 language_objc, /* Objective-C */
917317f4 214 language_java, /* Java */
917317f4
JM
215 language_fortran, /* Fortran */
216 language_m2, /* Modula-2 */
217 language_asm, /* Assembly language */
20a0e81d 218 language_pascal, /* Pascal */
963a6417 219 language_ada, /* Ada */
f4b8a18d 220 language_opencl, /* OpenCL */
f290d38e
AC
221 language_minimal, /* All other languages, minimal support only */
222 nr_languages
917317f4 223 };
c906108c
SS
224
225enum precision_type
917317f4
JM
226 {
227 single_precision,
228 double_precision,
229 unspecified_precision
230 };
231
7f19b9a2
AC
232/* A generic, not quite boolean, enumeration. */
233enum auto_boolean
234{
235 AUTO_BOOLEAN_TRUE,
236 AUTO_BOOLEAN_FALSE,
237 AUTO_BOOLEAN_AUTO
238};
239
92ad9cd9
AC
240/* Potential ways that a function can return a value of a given type. */
241enum return_value_convention
242{
243 /* Where the return value has been squeezed into one or more
244 registers. */
245 RETURN_VALUE_REGISTER_CONVENTION,
246 /* Commonly known as the "struct return convention". The caller
247 passes an additional hidden first parameter to the caller. That
248 parameter contains the address at which the value being returned
249 should be stored. While typically, and historically, used for
250 large structs, this is convention is applied to values of many
251 different types. */
31db7b6c
MK
252 RETURN_VALUE_STRUCT_CONVENTION,
253 /* Like the "struct return convention" above, but where the ABI
254 guarantees that the called function stores the address at which
255 the value being returned is stored in a well-defined location,
256 such as a register or memory slot in the stack frame. Don't use
257 this if the ABI doesn't explicitly guarantees this. */
258 RETURN_VALUE_ABI_RETURNS_ADDRESS,
259 /* Like the "struct return convention" above, but where the ABI
260 guarantees that the address at which the value being returned is
261 stored will be available in a well-defined location, such as a
262 register or memory slot in the stack frame. Don't use this if
263 the ABI doesn't explicitly guarantees this. */
264 RETURN_VALUE_ABI_PRESERVES_ADDRESS,
92ad9cd9
AC
265};
266
c906108c
SS
267/* Needed for various prototypes */
268
c906108c
SS
269struct symtab;
270struct breakpoint;
6e4c6c91 271struct frame_info;
8b9b9e1a 272struct gdbarch;
028d0ed5 273struct value;
c906108c 274
478aac75
DE
275/* From main.c. */
276
277/* This really belong in utils.c (path-utils.c?), but it references some
278 globals that are currently only available to main.c. */
279extern char *relocate_gdb_directory (const char *initial, int flag);
280
c906108c
SS
281\f
282/* Annotation stuff. */
283
917317f4 284extern int annotation_level; /* in stack.c */
c906108c 285\f
c906108c
SS
286
287/* From regex.c or libc. BSD 4.4 declares this with the argument type as
288 "const char *" in unistd.h, so we can't declare the argument
289 as "char *". */
290
917317f4 291extern char *re_comp (const char *);
c906108c
SS
292
293/* From symfile.c */
294
917317f4
JM
295extern void symbol_file_command (char *, int);
296
297/* Remote targets may wish to use this as their load function. */
298extern void generic_load (char *name, int from_tty);
299
0152ebd7 300/* Report on STREAM the performance of memory transfer operation,
0963b4bd 301 such as 'load'.
0152ebd7
VP
302 DATA_COUNT is the number of bytes transferred.
303 WRITE_COUNT is the number of separate write operations, or 0,
304 if that information is not available.
305 START_TIME is the time at which an operation was started.
306 END_TIME is the time at which an operation ended. */
2b71414d 307struct timeval;
d9fcf2fb 308extern void print_transfer_performance (struct ui_file *stream,
917317f4
JM
309 unsigned long data_count,
310 unsigned long write_count,
2b71414d
DJ
311 const struct timeval *start_time,
312 const struct timeval *end_time);
c906108c
SS
313
314/* From top.c */
315
6426a772
JM
316typedef void initialize_file_ftype (void);
317
389e51db
AC
318extern char *skip_quoted (char *);
319
917317f4 320extern char *gdb_readline (char *);
c906108c 321
b4f5539f
TT
322extern char *gdb_readline_wrapper (char *);
323
917317f4 324extern char *command_line_input (char *, int, char *);
c906108c 325
917317f4 326extern void print_prompt (void);
c906108c 327
917317f4 328extern int input_from_terminal_p (void);
c906108c
SS
329
330extern int info_verbose;
331
332/* From printcmd.c */
333
8b9b9e1a 334extern void set_next_address (struct gdbarch *, CORE_ADDR);
c906108c 335
9cb709b6
TT
336extern int print_address_symbolic (struct gdbarch *, CORE_ADDR,
337 struct ui_file *, int, char *);
c906108c 338
22e722e1
DJ
339extern int build_address_symbolic (struct gdbarch *,
340 CORE_ADDR addr,
7b83ea04
AC
341 int do_demangle,
342 char **name,
343 int *offset,
344 char **filename,
345 int *line,
dfcd3bfb
JM
346 int *unmapped);
347
5af949e3 348extern void print_address (struct gdbarch *, CORE_ADDR, struct ui_file *);
2b28d209 349extern const char *pc_prefix (CORE_ADDR);
c906108c
SS
350
351/* From source.c */
352
014d698b
EZ
353#define OPF_TRY_CWD_FIRST 0x01
354#define OPF_SEARCH_IN_PATH 0x02
355
fbdebf46 356extern int openp (const char *, int, const char *, int, char **);
c906108c 357
24f81874 358extern int source_full_path_of (const char *, char **);
c906108c 359
917317f4 360extern void mod_path (char *, char **);
c906108c 361
c04e0a08
JJ
362extern void add_path (char *, char **, int);
363
917317f4 364extern void directory_command (char *, int);
c906108c 365
13d35ae5
AS
366extern void directory_switch (char *, int);
367
c04e0a08
JJ
368extern char *source_path;
369
917317f4 370extern void init_source_path (void);
c906108c 371
104c1213
JM
372/* From exec.c */
373
4f69f4c2
JK
374/* Process memory area starting at ADDR with length SIZE. Area is readable iff
375 READ is non-zero, writable if WRITE is non-zero, executable if EXEC is
376 non-zero. Area is possibly changed against its original file based copy if
377 MODIFIED is non-zero. DATA is passed without changes from a caller. */
378
b8edc417
JK
379typedef int (*find_memory_region_ftype) (CORE_ADDR addr, unsigned long size,
380 int read, int write, int exec,
4f69f4c2 381 int modified, void *data);
b8edc417 382
0963b4bd 383/* Take over the 'find_mapped_memory' vector from exec.c. */
b8edc417
JK
384extern void exec_set_find_memory_regions
385 (int (*func) (find_memory_region_ftype func, void *data));
be4d1333 386
53a5351d 387/* Possible lvalue types. Like enum language, this should be in
0963b4bd 388 value.h, but needs to be here for the same reason. */
53a5351d
JM
389
390enum lval_type
391 {
0963b4bd 392 /* Not an lval. */
53a5351d 393 not_lval,
25ae5d16 394 /* In memory. */
53a5351d 395 lval_memory,
25ae5d16 396 /* In a register. Registers are relative to a frame. */
53a5351d
JM
397 lval_register,
398 /* In a gdb internal variable. */
399 lval_internalvar,
400 /* Part of a gdb internal variable (structure field). */
5f5233d4
PA
401 lval_internalvar_component,
402 /* Value's bits are fetched and stored using functions provided by
403 its creator. */
404 lval_computed
53a5351d
JM
405 };
406
c906108c
SS
407/* Control types for commands */
408
409enum misc_command_type
917317f4
JM
410 {
411 ok_command,
412 end_command,
413 else_command,
414 nop_command
415 };
c906108c
SS
416
417enum command_control_type
917317f4
JM
418 {
419 simple_control,
420 break_control,
421 continue_control,
422 while_control,
423 if_control,
40c03ae8 424 commands_control,
d57a3c85 425 python_control,
a7bdde9e 426 while_stepping_control,
917317f4
JM
427 invalid_control
428 };
c906108c
SS
429
430/* Structure for saved commands lines
431 (for breakpoints, defined commands, etc). */
432
433struct command_line
917317f4
JM
434 {
435 struct command_line *next;
436 char *line;
437 enum command_control_type control_type;
a7bdde9e 438 /* The number of elements in body_list. */
917317f4 439 int body_count;
0963b4bd
MS
440 /* For composite commands, the nested lists of commands. For
441 example, for "if" command this will contain the then branch and
442 the else branch, if that is available. */
917317f4
JM
443 struct command_line **body_list;
444 };
c906108c 445
a7bdde9e
VP
446extern struct command_line *read_command_lines (char *, int, int,
447 void (*)(char *, void *),
448 void *);
449extern struct command_line *read_command_lines_1 (char * (*) (void), int,
450 void (*)(char *, void *),
451 void *);
c906108c 452
917317f4 453extern void free_command_lines (struct command_line **);
c906108c 454
145b16a9
UW
455/* Parameters of the "info proc" command. */
456
457enum info_proc_what
458 {
459 /* Display the default cmdline, cwd and exe outputs. */
460 IP_MINIMAL,
461
462 /* Display `info proc mappings'. */
463 IP_MAPPINGS,
464
465 /* Display `info proc status'. */
466 IP_STATUS,
467
468 /* Display `info proc stat'. */
469 IP_STAT,
470
471 /* Display `info proc cmdline'. */
472 IP_CMDLINE,
473
474 /* Display `info proc exe'. */
475 IP_EXE,
476
477 /* Display `info proc cwd'. */
478 IP_CWD,
479
480 /* Display all of the above. */
481 IP_ALL
482 };
483
c906108c
SS
484/* String containing the current directory (what getwd would return). */
485
486extern char *current_directory;
487
488/* Default radixes for input and output. Only some values supported. */
489extern unsigned input_radix;
490extern unsigned output_radix;
491
492/* Possibilities for prettyprint parameters to routines which print
493 things. Like enum language, this should be in value.h, but needs
494 to be here for the same reason. FIXME: If we can eliminate this
495 as an arg to LA_VAL_PRINT, then we can probably move it back to
0963b4bd 496 value.h. */
c906108c
SS
497
498enum val_prettyprint
917317f4
JM
499 {
500 Val_no_prettyprint = 0,
501 Val_prettyprint,
502 /* Use the default setting which the user has specified. */
503 Val_pretty_default
504 };
39f77062 505
5a2402b8
AC
506/* Optional native machine support. Non-native (and possibly pure
507 multi-arch) targets do not need a "nm.h" file. This will be a
508 symlink to one of the nm-*.h files, built by the `configure'
509 script. */
c906108c 510
5a2402b8 511#ifdef GDB_NM_FILE
c906108c 512#include "nm.h"
5a2402b8 513#endif
c906108c 514
06c2338d 515/* Assume that fopen accepts the letter "b" in the mode string.
a880ad57
EZ
516 It is demanded by ISO C9X, and should be supported on all
517 platforms that claim to have a standard-conforming C library. On
06c2338d 518 true POSIX systems it will be ignored and have no effect. There
a880ad57
EZ
519 may still be systems without a standard-conforming C library where
520 an ISO C9X compiler (GCC) is available. Known examples are SunOS
06c2338d
MK
521 4.x and 4.3BSD. This assumption means these systems are no longer
522 supported. */
c906108c 523#ifndef FOPEN_RB
06c2338d 524# include "fopen-bin.h"
c906108c
SS
525#endif
526
c906108c 527/* Defaults for system-wide constants (if not defined by xm.h, we fake it).
0963b4bd 528 FIXME: Assumes 2's complement arithmetic. */
c906108c
SS
529
530#if !defined (UINT_MAX)
0963b4bd 531#define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
c906108c
SS
532#endif
533
534#if !defined (INT_MAX)
0963b4bd 535#define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
c906108c
SS
536#endif
537
538#if !defined (INT_MIN)
0963b4bd 539#define INT_MIN ((int)((int) ~0 ^ INT_MAX)) /* 0x80000000 for 32-bits */
c906108c
SS
540#endif
541
542#if !defined (ULONG_MAX)
0963b4bd 543#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
c906108c
SS
544#endif
545
546#if !defined (LONG_MAX)
0963b4bd 547#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
c906108c
SS
548#endif
549
4ce44c66 550#if !defined (ULONGEST_MAX)
658d99ff 551#define ULONGEST_MAX (~(ULONGEST)0) /* 0xFFFFFFFFFFFFFFFF for 64-bits */
4ce44c66
JM
552#endif
553
658d99ff 554#if !defined (LONGEST_MAX) /* 0x7FFFFFFFFFFFFFFF for 64-bits */
4ce44c66
JM
555#define LONGEST_MAX ((LONGEST)(ULONGEST_MAX >> 1))
556#endif
557
c906108c
SS
558/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
559 arguments to a function, number in a value history, register number, etc.)
560 where the value must not be larger than can fit in an int. */
561
917317f4 562extern int longest_to_int (LONGEST);
c906108c 563
bba2d28d
AC
564/* Utility macros to allocate typed memory. Avoids errors like:
565 struct foo *foo = xmalloc (sizeof struct bar); and memset (foo,
566 sizeof (struct foo), 0). */
5b90c7b5 567#define XZALLOC(TYPE) ((TYPE*) xzalloc (sizeof (TYPE)))
349c5d5f 568#define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
3fadccb3 569#define XCALLOC(NMEMB, TYPE) ((TYPE*) xcalloc ((NMEMB), sizeof (TYPE)))
349c5d5f 570
d26e3629 571#include "common-utils.h"
bde2058d 572
4be87837
DJ
573/* List of known OS ABIs. If you change this, make sure to update the
574 table in osabi.c. */
575enum gdb_osabi
576{
577 GDB_OSABI_UNINITIALIZED = -1, /* For struct gdbarch_info. */
578
579 GDB_OSABI_UNKNOWN = 0, /* keep this zero */
580
581 GDB_OSABI_SVR4,
582 GDB_OSABI_HURD,
583 GDB_OSABI_SOLARIS,
584 GDB_OSABI_OSF1,
585 GDB_OSABI_LINUX,
586 GDB_OSABI_FREEBSD_AOUT,
587 GDB_OSABI_FREEBSD_ELF,
588 GDB_OSABI_NETBSD_AOUT,
589 GDB_OSABI_NETBSD_ELF,
d33b9831 590 GDB_OSABI_OPENBSD_ELF,
4be87837
DJ
591 GDB_OSABI_WINCE,
592 GDB_OSABI_GO32,
4be87837 593 GDB_OSABI_IRIX,
4be87837
DJ
594 GDB_OSABI_INTERIX,
595 GDB_OSABI_HPUX_ELF,
596 GDB_OSABI_HPUX_SOM,
83461b86 597 GDB_OSABI_QNXNTO,
1762d96d 598 GDB_OSABI_CYGWIN,
1f82754b 599 GDB_OSABI_AIX,
a15c5c83 600 GDB_OSABI_DICOS,
a80b95ba 601 GDB_OSABI_DARWIN,
78664fa3 602 GDB_OSABI_SYMBIAN,
34864976 603 GDB_OSABI_OPENVMS,
1762d96d 604
4be87837
DJ
605 GDB_OSABI_INVALID /* keep this last */
606};
607
c906108c
SS
608/* Global functions from other, non-gdb GNU thingies.
609 Libiberty thingies are no longer declared here. We include libiberty.h
610 above, instead. */
611
c906108c
SS
612/* From other system libraries */
613
614#ifdef HAVE_STDDEF_H
615#include <stddef.h>
616#endif
617
618#ifdef HAVE_STDLIB_H
c906108c
SS
619#include <stdlib.h>
620#endif
621#ifndef min
622#define min(a, b) ((a) < (b) ? (a) : (b))
623#endif
624#ifndef max
625#define max(a, b) ((a) > (b) ? (a) : (b))
626#endif
627
628
c906108c 629#ifndef atof
917317f4 630extern double atof (const char *); /* X3.159-1989 4.10.1.1 */
c906108c
SS
631#endif
632
c906108c
SS
633/* Various possibilities for alloca. */
634#ifndef alloca
917317f4
JM
635#ifdef __GNUC__
636#define alloca __builtin_alloca
637#else /* Not GNU C */
638#ifdef HAVE_ALLOCA_H
639#include <alloca.h>
640#else
641#ifdef _AIX
642#pragma alloca
643#else
c906108c
SS
644
645/* We need to be careful not to declare this in a way which conflicts with
646 bison. Bison never declares it as char *, but under various circumstances
647 (like __hpux) we need to use void *. */
917317f4 648extern void *alloca ();
917317f4
JM
649#endif /* Not _AIX */
650#endif /* Not HAVE_ALLOCA_H */
651#endif /* Not GNU C */
c906108c
SS
652#endif /* alloca not defined */
653
0963b4bd 654/* Dynamic target-system-dependent parameters for GDB. */
c906108c
SS
655#include "gdbarch.h"
656
0c92afe8
AC
657/* Maximum size of a register. Something small, but large enough for
658 all known ISAs. If it turns out to be too small, make it bigger. */
659
a5916a62 660enum { MAX_REGISTER_SIZE = 64 };
0c92afe8 661
0963b4bd 662/* Static target-system-dependent parameters for GDB. */
c906108c
SS
663
664/* Number of bits in a char or unsigned char for the target machine.
665 Just like CHAR_BIT in <limits.h> but describes the target machine. */
666#if !defined (TARGET_CHAR_BIT)
667#define TARGET_CHAR_BIT 8
668#endif
669
c906108c
SS
670/* If we picked up a copy of CHAR_BIT from a configuration file
671 (which may get it by including <limits.h>) then use it to set
672 the number of bits in a host char. If not, use the same size
0963b4bd 673 as the target. */
c906108c
SS
674
675#if defined (CHAR_BIT)
676#define HOST_CHAR_BIT CHAR_BIT
677#else
678#define HOST_CHAR_BIT TARGET_CHAR_BIT
679#endif
680
c906108c
SS
681/* In findvar.c. */
682
e17a4113
UW
683extern LONGEST extract_signed_integer (const gdb_byte *, int,
684 enum bfd_endian);
c906108c 685
e17a4113
UW
686extern ULONGEST extract_unsigned_integer (const gdb_byte *, int,
687 enum bfd_endian);
c906108c 688
e17a4113
UW
689extern int extract_long_unsigned_integer (const gdb_byte *, int,
690 enum bfd_endian, LONGEST *);
c906108c 691
0d509538
AC
692extern CORE_ADDR extract_typed_address (const gdb_byte *buf,
693 struct type *type);
4478b372 694
e17a4113
UW
695extern void store_signed_integer (gdb_byte *, int,
696 enum bfd_endian, LONGEST);
c906108c 697
e17a4113
UW
698extern void store_unsigned_integer (gdb_byte *, int,
699 enum bfd_endian, ULONGEST);
c906108c 700
0d509538
AC
701extern void store_typed_address (gdb_byte *buf, struct type *type,
702 CORE_ADDR addr);
4478b372 703
c906108c 704\f
c906108c
SS
705/* From valops.c */
706
c906108c 707extern int watchdog;
c906108c
SS
708
709/* Hooks for alternate command interfaces. */
8b93c638 710
0963b4bd 711/* The name of the interpreter if specified on the command line. */
fb40c209 712extern char *interpreter_p;
fb40c209
AC
713
714/* If a given interpreter matches INTERPRETER_P then it should update
9a4105ab
AC
715 deprecated_command_loop_hook and deprecated_init_ui_hook with the
716 per-interpreter implementation. */
717/* FIXME: deprecated_command_loop_hook and deprecated_init_ui_hook
0963b4bd 718 should be moved here. */
fb40c209 719
c906108c
SS
720struct target_waitstatus;
721struct cmd_list_element;
c906108c 722
769d7dc4
AC
723extern void (*deprecated_pre_add_symbol_hook) (const char *);
724extern void (*deprecated_post_add_symbol_hook) (void);
11c949aa 725extern void (*selected_frame_level_changed_hook) (int);
98bbd631 726extern int (*deprecated_ui_loop_hook) (int signo);
9a4105ab
AC
727extern void (*deprecated_init_ui_hook) (char *argv0);
728extern void (*deprecated_command_loop_hook) (void);
729extern void (*deprecated_show_load_progress) (const char *section,
730 unsigned long section_sent,
731 unsigned long section_size,
732 unsigned long total_sent,
733 unsigned long total_size);
734extern void (*deprecated_print_frame_info_listing_hook) (struct symtab * s,
3e43a32a
MS
735 int line,
736 int stopline,
9a4105ab 737 int noerror);
bee0189a
DJ
738extern int (*deprecated_query_hook) (const char *, va_list)
739 ATTRIBUTE_FPTR_PRINTF(1,0);
740extern void (*deprecated_warning_hook) (const char *, va_list)
741 ATTRIBUTE_FPTR_PRINTF(1,0);
9a4105ab 742extern void (*deprecated_flush_hook) (struct ui_file * stream);
9a4105ab 743extern void (*deprecated_interactive_hook) (void);
bee0189a
DJ
744extern void (*deprecated_readline_begin_hook) (char *, ...)
745 ATTRIBUTE_FPTR_PRINTF_1;
9a4105ab
AC
746extern char *(*deprecated_readline_hook) (char *);
747extern void (*deprecated_readline_end_hook) (void);
748extern void (*deprecated_register_changed_hook) (int regno);
9a4105ab
AC
749extern void (*deprecated_context_hook) (int);
750extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
47608cb1
PA
751 struct target_waitstatus *status,
752 int options);
917317f4 753
9a4105ab
AC
754extern void (*deprecated_attach_hook) (void);
755extern void (*deprecated_detach_hook) (void);
756extern void (*deprecated_call_command_hook) (struct cmd_list_element * c,
757 char *cmd, int from_tty);
917317f4 758
9a4105ab 759extern void (*deprecated_set_hook) (struct cmd_list_element * c);
917317f4 760
9a4105ab
AC
761extern int (*deprecated_ui_load_progress_hook) (const char *section,
762 unsigned long num);
c906108c 763
0963b4bd 764/* Inhibit window interface if non-zero. */
c906108c
SS
765
766extern int use_windows;
767
ca6724c1
KB
768/* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
769 The name ``TIDGET'' is a historical accident. Many uses of TIDGET
770 in the code actually refer to a lightweight process id, i.e,
771 something that can be considered a process id in its own right for
772 certain purposes. */
c906108c
SS
773
774#ifndef PIDGET
ca6724c1
KB
775#define PIDGET(PTID) (ptid_get_pid (PTID))
776#define TIDGET(PTID) (ptid_get_lwp (PTID))
777#define MERGEPID(PID, TID) ptid_build (PID, TID, 0)
c906108c
SS
778#endif
779
96baa820
JM
780/* Define well known filenos if the system does not define them. */
781#ifndef STDIN_FILENO
782#define STDIN_FILENO 0
783#endif
784#ifndef STDOUT_FILENO
785#define STDOUT_FILENO 1
786#endif
787#ifndef STDERR_FILENO
788#define STDERR_FILENO 2
789#endif
790
104c1213
JM
791/* If this definition isn't overridden by the header files, assume
792 that isatty and fileno exist on this system. */
793#ifndef ISATTY
794#define ISATTY(FP) (isatty (fileno (FP)))
795#endif
796
3347eb1a 797/* A width that can achieve a better legibility for GDB MI mode. */
798#define GDB_MI_MSG_WIDTH 80
799
6c95b8df
PA
800/* From progspace.c */
801
802extern void initialize_progspace (void);
803extern void initialize_inferiors (void);
804
8903c50d
TT
805/* Special block numbers */
806
807enum block_enum
808{
809 GLOBAL_BLOCK = 0,
810 STATIC_BLOCK = 1,
811 FIRST_LOCAL_BLOCK = 2
812};
813
48faced0
DE
814#include "utils.h"
815
c906108c 816#endif /* #ifndef DEFS_H */
This page took 0.884346 seconds and 4 git commands to generate.