* NEWS: Add info macros and info definitions commands.
[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.
197e01b6 4 Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
4c38e0a4 5 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009,
7b6bb8da 6 2010, 2011 Free Software Foundation, Inc.
c906108c 7
c5aa993b 8 This file is part of GDB.
c906108c 9
c5aa993b
JM
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
a9762ec7 12 the Free Software Foundation; either version 3 of the License, or
c5aa993b 13 (at your option) any later version.
c906108c 14
c5aa993b
JM
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
c906108c 19
c5aa993b 20 You should have received a copy of the GNU General Public License
a9762ec7 21 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
22
23#ifndef DEFS_H
24#define DEFS_H
25
975ac915
MK
26#include "config.h" /* Generated by configure. */
27
8b04f8b6 28#include <sys/types.h>
c906108c 29#include <stdio.h>
975ac915 30#include <errno.h> /* System call error return status. */
c906108c 31#include <limits.h>
d5af19ba 32#include <stdint.h>
c906108c 33
06e476f5
JB
34/* The libdecnumber library, on which GDB depends, includes a header file
35 called gstdint.h instead of relying directly on stdint.h. GDB, on the
36 other hand, includes stdint.h directly, relying on the fact that gnulib
37 generates a copy if the system doesn't provide one or if it is missing
38 some features. Unfortunately, gstdint.h and stdint.h cannot be included
39 at the same time, which may happen when we include a file from
40 libdecnumber.
41
42 The following macro definition effectively prevents the inclusion of
43 gstdint.h, as all the definitions it provides are guarded against
44 the GCC_GENERATED_STDINT_H macro. We already have gnulib/stdint.h
45 included, so it's ok to blank out gstdint.h. */
46#define GCC_GENERATED_STDINT_H 1
47
c906108c 48#ifdef HAVE_STDDEF_H
917317f4 49#include <stddef.h>
c906108c
SS
50#endif
51
104c1213
JM
52#ifdef HAVE_UNISTD_H
53#include <unistd.h>
54#endif
55
637d6690
CW
56#include <fcntl.h>
57
167baebf
MK
58/* First include ansidecl.h so we can use the various macro definitions
59 here and in all subsequent file inclusions. */
60
61#include "ansidecl.h"
62
0fbb3da7
TT
63#include "gdb_locale.h"
64
6c7a06a3
TT
65#include "gdb_wchar.h"
66
dd7bf85e
DJ
67/* For ``enum target_signal''. */
68#include "gdb/signals.h"
69
975ac915 70/* Just in case they're not defined in stdio.h. */
c906108c
SS
71
72#ifndef SEEK_SET
73#define SEEK_SET 0
74#endif
75#ifndef SEEK_CUR
76#define SEEK_CUR 1
77#endif
78
637d6690
CW
79/* The O_BINARY flag is defined in fcntl.h on some non-Posix platforms.
80 It is used as an access modifier in calls to open(), where it acts
0963b4bd
MS
81 similarly to the "b" character in fopen()'s MODE argument. On Posix
82 platforms it should be a no-op, so it is defined as 0 here. This
83 ensures that the symbol may be used freely elsewhere in gdb. */
637d6690
CW
84
85#ifndef O_BINARY
86#define O_BINARY 0
87#endif
88
975ac915 89#include <stdarg.h> /* For va_list. */
c906108c
SS
90
91#include "libiberty.h"
92
b57b6c2e
MK
93/* Rather than duplicate all the logic in BFD for figuring out what
94 types to use (which can be pretty complicated), symply define them
95 in terms of the corresponding type from BFD. */
96
c906108c
SS
97#include "bfd.h"
98
b57b6c2e
MK
99/* A byte from the program being debugged. */
100typedef bfd_byte gdb_byte;
c906108c 101
b57b6c2e 102/* An address in the program being debugged. Host byte order. */
c906108c
SS
103typedef bfd_vma CORE_ADDR;
104
801e3a5b
JB
105/* The largest CORE_ADDR value. */
106#define CORE_ADDR_MAX (~ (CORE_ADDR) 0)
107
104c1213
JM
108/* This is to make sure that LONGEST is at least as big as CORE_ADDR. */
109
110#ifndef LONGEST
111
112#ifdef BFD64
113
114#define LONGEST BFD_HOST_64_BIT
115#define ULONGEST BFD_HOST_U_64_BIT
116
117#else /* No BFD64 */
118
917317f4
JM
119#ifdef CC_HAS_LONG_LONG
120#define LONGEST long long
121#define ULONGEST unsigned long long
122#else
123#ifdef BFD_HOST_64_BIT
104c1213
JM
124/* BFD_HOST_64_BIT is defined for some hosts that don't have long long
125 (e.g. i386-windows) so try it. */
917317f4
JM
126#define LONGEST BFD_HOST_64_BIT
127#define ULONGEST BFD_HOST_U_64_BIT
128#else
129#define LONGEST long
130#define ULONGEST unsigned long
131#endif
132#endif
104c1213
JM
133
134#endif /* No BFD64 */
135
136#endif /* ! LONGEST */
137
c906108c
SS
138#ifndef min
139#define min(a, b) ((a) < (b) ? (a) : (b))
140#endif
141#ifndef max
142#define max(a, b) ((a) > (b) ? (a) : (b))
143#endif
144
c906108c 145/* Check if a character is one of the commonly used C++ marker characters. */
917317f4 146extern int is_cplus_marker (int);
c906108c 147
0963b4bd 148/* Enable xdb commands if set. */
c906108c
SS
149extern int xdb_commands;
150
0963b4bd 151/* Enable dbx commands if set. */
c906108c
SS
152extern int dbx_commands;
153
030292b7
DJ
154/* System root path, used to find libraries etc. */
155extern char *gdb_sysroot;
156
b14b1491
TT
157/* GDB datadir, used to store data files. */
158extern char *gdb_datadir;
159
0c4a4063
DE
160/* If non-NULL, the possibly relocated path to python's "lib" directory
161 specified with --with-python. */
162extern char *python_libdir;
163
aa28a74e
DJ
164/* Search path for separate debug files. */
165extern char *debug_file_directory;
166
c906108c
SS
167extern int quit_flag;
168extern int immediate_quit;
169extern int sevenbit_strings;
170
917317f4 171extern void quit (void);
c906108c 172
1a0559af
AC
173/* FIXME: cagney/2000-03-13: It has been suggested that the peformance
174 benefits of having a ``QUIT'' macro rather than a function are
175 marginal. If the overhead of a QUIT function call is proving
176 significant then its calling frequency should probably be reduced
177 [kingdon]. A profile analyzing the current situtation is
0963b4bd 178 needed. */
1a0559af 179
c906108c
SS
180#define QUIT { \
181 if (quit_flag) quit (); \
9a4105ab 182 if (deprecated_interactive_hook) deprecated_interactive_hook (); \
c906108c 183}
c906108c 184
c906108c
SS
185/* Languages represented in the symbol table and elsewhere.
186 This should probably be in language.h, but since enum's can't
187 be forward declared to satisfy opaque references before their
0963b4bd 188 actual definition, needs to be here. */
c906108c 189
917317f4
JM
190enum language
191 {
192 language_unknown, /* Language not known */
193 language_auto, /* Placeholder for automatic setting */
194 language_c, /* C */
195 language_cplus, /* C++ */
6aecb9c2 196 language_d, /* D */
50f85cdf 197 language_objc, /* Objective-C */
917317f4 198 language_java, /* Java */
917317f4
JM
199 language_fortran, /* Fortran */
200 language_m2, /* Modula-2 */
201 language_asm, /* Assembly language */
20a0e81d 202 language_pascal, /* Pascal */
963a6417 203 language_ada, /* Ada */
f4b8a18d 204 language_opencl, /* OpenCL */
f290d38e
AC
205 language_minimal, /* All other languages, minimal support only */
206 nr_languages
917317f4 207 };
c906108c
SS
208
209enum precision_type
917317f4
JM
210 {
211 single_precision,
212 double_precision,
213 unspecified_precision
214 };
215
7f19b9a2
AC
216/* A generic, not quite boolean, enumeration. */
217enum auto_boolean
218{
219 AUTO_BOOLEAN_TRUE,
220 AUTO_BOOLEAN_FALSE,
221 AUTO_BOOLEAN_AUTO
222};
223
92ad9cd9
AC
224/* Potential ways that a function can return a value of a given type. */
225enum return_value_convention
226{
227 /* Where the return value has been squeezed into one or more
228 registers. */
229 RETURN_VALUE_REGISTER_CONVENTION,
230 /* Commonly known as the "struct return convention". The caller
231 passes an additional hidden first parameter to the caller. That
232 parameter contains the address at which the value being returned
233 should be stored. While typically, and historically, used for
234 large structs, this is convention is applied to values of many
235 different types. */
31db7b6c
MK
236 RETURN_VALUE_STRUCT_CONVENTION,
237 /* Like the "struct return convention" above, but where the ABI
238 guarantees that the called function stores the address at which
239 the value being returned is stored in a well-defined location,
240 such as a register or memory slot in the stack frame. Don't use
241 this if the ABI doesn't explicitly guarantees this. */
242 RETURN_VALUE_ABI_RETURNS_ADDRESS,
243 /* Like the "struct return convention" above, but where the ABI
244 guarantees that the address at which the value being returned is
245 stored will be available in a well-defined location, such as a
246 register or memory slot in the stack frame. Don't use this if
247 the ABI doesn't explicitly guarantees this. */
248 RETURN_VALUE_ABI_PRESERVES_ADDRESS,
92ad9cd9
AC
249};
250
c906108c
SS
251/* the cleanup list records things that have to be undone
252 if an error happens (descriptors to be closed, memory to be freed, etc.)
253 Each link in the chain records a function to call and an
254 argument to give it.
255
256 Use make_cleanup to add an element to the cleanup chain.
257 Use do_cleanups to do all cleanup actions back to a given
258 point in the chain. Use discard_cleanups to remove cleanups
0963b4bd 259 from the chain back to a given point, not doing them.
0b080f59 260
7a9dd1b2 261 If the argument is pointer to allocated memory, then you need
0b080f59
VP
262 to additionally set the 'free_arg' member to a function that will
263 free that memory. This function will be called both when the cleanup
264 is executed and when it's discarded. */
c906108c
SS
265
266struct cleanup
917317f4
JM
267 {
268 struct cleanup *next;
4efb68b1 269 void (*function) (void *);
0b080f59 270 void (*free_arg) (void *);
4efb68b1 271 void *arg;
917317f4 272 };
c906108c 273
32019081 274/* vec.h-style vectors of strings want a typedef for char * or const char *. */
3149d8c1
SS
275
276typedef char * char_ptr;
32019081 277typedef const char * const_char_ptr;
3149d8c1 278
c906108c
SS
279/* Needed for various prototypes */
280
c906108c
SS
281struct symtab;
282struct breakpoint;
6e4c6c91 283struct frame_info;
8b9b9e1a 284struct gdbarch;
028d0ed5 285struct value;
c906108c 286
478aac75
DE
287/* From main.c. */
288
289/* This really belong in utils.c (path-utils.c?), but it references some
290 globals that are currently only available to main.c. */
291extern char *relocate_gdb_directory (const char *initial, int flag);
292
c906108c
SS
293/* From utils.c */
294
917317f4 295extern void initialize_utils (void);
392a587b 296
917317f4 297extern void notice_quit (void);
c906108c 298
917317f4 299extern int strcmp_iw (const char *, const char *);
c906108c 300
0fe19209
DC
301extern int strcmp_iw_ordered (const char *, const char *);
302
2de7ced7
DJ
303extern int streq (const char *, const char *);
304
917317f4 305extern int subset_compare (char *, char *);
7a292a7a 306
917317f4 307extern char *safe_strerror (int);
c906108c 308
0f3bb72e
PH
309extern void set_display_time (int);
310
311extern void set_display_space (int);
312
60250e8b
AC
313#define ALL_CLEANUPS ((struct cleanup *)0)
314
917317f4
JM
315extern void do_cleanups (struct cleanup *);
316extern void do_final_cleanups (struct cleanup *);
c906108c 317
917317f4
JM
318extern void discard_cleanups (struct cleanup *);
319extern void discard_final_cleanups (struct cleanup *);
917317f4 320extern void discard_my_cleanups (struct cleanup **, struct cleanup *);
c906108c 321
e4005526 322/* NOTE: cagney/2000-03-04: This typedef is strictly for the
0963b4bd 323 make_cleanup function declarations below. Do not use this typedef
e4005526
AC
324 as a cast when passing functions into the make_cleanup() code.
325 Instead either use a bounce function or add a wrapper function.
0963b4bd 326 Calling a f(char*) function with f(void*) is non-portable. */
e4005526
AC
327typedef void (make_cleanup_ftype) (void *);
328
329extern struct cleanup *make_cleanup (make_cleanup_ftype *, void *);
c906108c 330
4f8d22e3
PA
331extern struct cleanup *make_cleanup_dtor (make_cleanup_ftype *, void *,
332 void (*dtor) (void *));
333
917317f4 334extern struct cleanup *make_cleanup_freeargv (char **);
7a292a7a 335
d9fcf2fb
JM
336struct ui_file;
337extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
11cf8741 338
8d4d924b
JK
339struct ui_out;
340extern struct cleanup *
341 make_cleanup_ui_out_redirect_pop (struct ui_out *uiout);
342
7b90c3f9
JB
343struct section_addr_info;
344extern struct cleanup *(make_cleanup_free_section_addr_info
345 (struct section_addr_info *));
346
f5ff8c83
AC
347extern struct cleanup *make_cleanup_close (int fd);
348
7c8a8b04
TT
349extern struct cleanup *make_cleanup_fclose (FILE *file);
350
5c65bbb6
AC
351extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
352
16ad9370
TT
353struct obstack;
354extern struct cleanup *make_cleanup_obstack_free (struct obstack *obstack);
355
0b080f59 356extern struct cleanup *make_cleanup_restore_integer (int *variable);
5da1313b 357extern struct cleanup *make_cleanup_restore_uinteger (unsigned int *variable);
0b080f59 358
c0edd9ed
JK
359struct target_ops;
360extern struct cleanup *make_cleanup_unpush_target (struct target_ops *ops);
361
5da1313b
JK
362extern struct cleanup *
363 make_cleanup_restore_ui_file (struct ui_file **variable);
364
028d0ed5 365extern struct cleanup *make_cleanup_value_free_to_mark (struct value *);
72fc29ff 366extern struct cleanup *make_cleanup_value_free (struct value *);
028d0ed5 367
e4005526 368extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
c906108c 369
917317f4 370extern struct cleanup *make_my_cleanup (struct cleanup **,
e4005526 371 make_cleanup_ftype *, void *);
c906108c 372
0b080f59
VP
373extern struct cleanup *make_my_cleanup2 (struct cleanup **,
374 make_cleanup_ftype *, void *,
375 void (*free_arg) (void *));
376
917317f4
JM
377extern struct cleanup *save_cleanups (void);
378extern struct cleanup *save_final_cleanups (void);
379extern struct cleanup *save_my_cleanups (struct cleanup **);
c906108c 380
917317f4
JM
381extern void restore_cleanups (struct cleanup *);
382extern void restore_final_cleanups (struct cleanup *);
383extern void restore_my_cleanups (struct cleanup **, struct cleanup *);
c906108c 384
2f9429ae 385extern void free_current_contents (void *);
c906108c 386
e54a9244 387extern void null_cleanup (void *);
c906108c 388
0f3bb72e
PH
389extern struct cleanup *make_command_stats_cleanup (int);
390
917317f4 391extern int myread (int, char *, int);
c906108c 392
a0b31db1
JK
393extern int query (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
394extern int nquery (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
395extern int yquery (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
c906108c 396
917317f4 397extern void init_page_info (void);
392a587b 398
5da1313b
JK
399extern struct cleanup *make_cleanup_restore_page_info (void);
400extern struct cleanup *
401 set_batch_flag_and_make_cleanup_restore_page_info (void);
402
58d370e0 403extern char *gdb_realpath (const char *);
08b204d1 404extern char *xfullpath (const char *);
58d370e0 405
5b5d99cf
JB
406extern unsigned long gnu_debuglink_crc32 (unsigned long crc,
407 unsigned char *buf, size_t len);
408
253c8abb
DJ
409ULONGEST strtoulst (const char *num, const char **trailer, int base);
410
e1024ff1
DJ
411char *ldirname (const char *filename);
412
d1a41061
PP
413char **gdb_buildargv (const char *);
414
dc146f7c
VP
415int compare_positive_ints (const void *ap, const void *bp);
416
d18b8b7a
HZ
417/* A wrapper for bfd_errmsg to produce a more helpful error message
418 in the case of bfd_error_file_ambiguously recognized.
419 MATCHING, if non-NULL, is the corresponding argument to
420 bfd_check_format_matches, and will be freed. */
421
422extern const char *gdb_bfd_errmsg (bfd_error_type error_tag, char **matching);
423
74164c56
JK
424extern int parse_pid_to_attach (char *args);
425
c906108c
SS
426/* From demangle.c */
427
917317f4 428extern void set_demangling_style (char *);
c906108c 429
c906108c
SS
430\f
431/* Annotation stuff. */
432
917317f4 433extern int annotation_level; /* in stack.c */
c906108c 434\f
917317f4 435extern void begin_line (void);
c906108c 436
917317f4 437extern void wrap_here (char *);
c906108c 438
917317f4 439extern void reinitialize_more_filter (void);
c906108c 440
0f71a2f6 441/* Normal results */
d9fcf2fb 442extern struct ui_file *gdb_stdout;
449092f6
CV
443/* Input stream */
444extern struct ui_file *gdb_stdin;
0f71a2f6 445/* Serious error notifications */
d9fcf2fb 446extern struct ui_file *gdb_stderr;
0f71a2f6 447/* Log/debug/trace messages that should bypass normal stdout/stderr
1cd348be 448 filtering. For moment, always call this stream using
0963b4bd
MS
449 *_unfiltered. In the very near future that restriction shall be
450 removed - either call shall be unfiltered. (cagney 1999-06-13). */
d9fcf2fb 451extern struct ui_file *gdb_stdlog;
43ff13b4 452/* Target output that should bypass normal stdout/stderr filtering.
0963b4bd 453 For moment, always call this stream using *_unfiltered. In the
43ff13b4 454 very near future that restriction shall be removed - either call
0963b4bd 455 shall be unfiltered. (cagney 1999-07-02). */
d9fcf2fb 456extern struct ui_file *gdb_stdtarg;
449092f6
CV
457extern struct ui_file *gdb_stdtargerr;
458extern struct ui_file *gdb_stdtargin;
c906108c 459
d9fcf2fb 460#include "ui-file.h"
c906108c 461
d1f4cff8
AC
462/* More generic printf like operations. Filtered versions may return
463 non-locally on error. */
c906108c 464
d9fcf2fb 465extern void fputs_filtered (const char *, struct ui_file *);
c906108c 466
d9fcf2fb 467extern void fputs_unfiltered (const char *, struct ui_file *);
c906108c 468
d9fcf2fb 469extern int fputc_filtered (int c, struct ui_file *);
c906108c 470
d9fcf2fb 471extern int fputc_unfiltered (int c, struct ui_file *);
c906108c 472
d1f4cff8
AC
473extern int putchar_filtered (int c);
474
917317f4 475extern int putchar_unfiltered (int c);
c906108c 476
917317f4 477extern void puts_filtered (const char *);
c906108c 478
917317f4 479extern void puts_unfiltered (const char *);
c906108c 480
4a351cef
AF
481extern void puts_filtered_tabular (char *string, int width, int right);
482
917317f4 483extern void puts_debug (char *prefix, char *string, char *suffix);
c906108c 484
a0b31db1 485extern void vprintf_filtered (const char *, va_list) ATTRIBUTE_PRINTF (1, 0);
c906108c 486
3e43a32a
MS
487extern void vfprintf_filtered (struct ui_file *, const char *, va_list)
488 ATTRIBUTE_PRINTF (2, 0);
c906108c 489
3e43a32a
MS
490extern void fprintf_filtered (struct ui_file *, const char *, ...)
491 ATTRIBUTE_PRINTF (2, 3);
c906108c 492
3e43a32a
MS
493extern void fprintfi_filtered (int, struct ui_file *, const char *, ...)
494 ATTRIBUTE_PRINTF (3, 4);
c906108c 495
a0b31db1 496extern void printf_filtered (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
c906108c 497
a0b31db1 498extern void printfi_filtered (int, const char *, ...) ATTRIBUTE_PRINTF (2, 3);
c906108c 499
a0b31db1 500extern void vprintf_unfiltered (const char *, va_list) ATTRIBUTE_PRINTF (1, 0);
c906108c 501
3e43a32a
MS
502extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list)
503 ATTRIBUTE_PRINTF (2, 0);
c906108c 504
3e43a32a
MS
505extern void fprintf_unfiltered (struct ui_file *, const char *, ...)
506 ATTRIBUTE_PRINTF (2, 3);
917317f4 507
a0b31db1 508extern void printf_unfiltered (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
c906108c 509
d9fcf2fb 510extern void print_spaces (int, struct ui_file *);
c906108c 511
d9fcf2fb 512extern void print_spaces_filtered (int, struct ui_file *);
c906108c 513
917317f4 514extern char *n_spaces (int);
c906108c 515
3e43a32a
MS
516extern void fputstr_filtered (const char *str, int quotr,
517 struct ui_file * stream);
43e526b9 518
3e43a32a
MS
519extern void fputstr_unfiltered (const char *str, int quotr,
520 struct ui_file * stream);
43e526b9 521
3e43a32a
MS
522extern void fputstrn_filtered (const char *str, int n, int quotr,
523 struct ui_file * stream);
0876f84a 524
3e43a32a
MS
525extern void fputstrn_unfiltered (const char *str, int n, int quotr,
526 struct ui_file * stream);
c906108c 527
0963b4bd 528/* Display the host ADDR on STREAM formatted as ``0x%x''. */
ac16bf07 529extern void gdb_print_host_address (const void *addr, struct ui_file *stream);
c906108c 530
17ea7499
CES
531extern const char *host_address_to_string (const void *addr);
532
5af949e3
UW
533/* Convert CORE_ADDR to string in platform-specific manner.
534 This is usually formatted similar to 0x%lx. */
535extern const char *paddress (struct gdbarch *gdbarch, CORE_ADDR addr);
66bf4b3a 536
f1310107
TJB
537/* Return a string representation in hexadecimal notation of ADDRESS,
538 which is suitable for printing. */
539
540extern const char *print_core_address (struct gdbarch *gdbarch,
541 CORE_ADDR address);
542
623d3eb1
DE
543/* %d for LONGEST */
544extern char *plongest (LONGEST l);
545/* %u for ULONGEST */
546extern char *pulongest (ULONGEST l);
547
5683e87a
AC
548extern char *phex (ULONGEST l, int sizeof_l);
549extern char *phex_nz (ULONGEST l, int sizeof_l);
bb599908 550extern char *int_string (LONGEST, int, int, int, int);
c906108c 551
5af949e3
UW
552/* Convert a CORE_ADDR into a HEX string with leading zeros.
553 The output from core_addr_to_string() can be passed direct to
03dd37c3
AC
554 string_to_core_addr(). */
555extern const char *core_addr_to_string (const CORE_ADDR addr);
079777f6 556extern const char *core_addr_to_string_nz (const CORE_ADDR addr);
03dd37c3
AC
557extern CORE_ADDR string_to_core_addr (const char *my_string);
558
0759e0bf
AC
559/* Return a string that contains a number formatted as a hex
560 string. */
561extern char *hex_string (LONGEST);
562extern char *hex_string_custom (LONGEST, int);
563
d9fcf2fb 564extern void fprintf_symbol_filtered (struct ui_file *, char *,
917317f4 565 enum language, int);
c906108c 566
c25c4a8b 567extern void perror_with_name (const char *) ATTRIBUTE_NORETURN;
c906108c 568
6972bc8b 569extern void print_sys_errmsg (const char *, int);
c906108c
SS
570
571/* From regex.c or libc. BSD 4.4 declares this with the argument type as
572 "const char *" in unistd.h, so we can't declare the argument
573 as "char *". */
574
917317f4 575extern char *re_comp (const char *);
c906108c
SS
576
577/* From symfile.c */
578
917317f4
JM
579extern void symbol_file_command (char *, int);
580
581/* Remote targets may wish to use this as their load function. */
582extern void generic_load (char *name, int from_tty);
583
0152ebd7 584/* Report on STREAM the performance of memory transfer operation,
0963b4bd 585 such as 'load'.
0152ebd7
VP
586 DATA_COUNT is the number of bytes transferred.
587 WRITE_COUNT is the number of separate write operations, or 0,
588 if that information is not available.
589 START_TIME is the time at which an operation was started.
590 END_TIME is the time at which an operation ended. */
2b71414d 591struct timeval;
d9fcf2fb 592extern void print_transfer_performance (struct ui_file *stream,
917317f4
JM
593 unsigned long data_count,
594 unsigned long write_count,
2b71414d
DJ
595 const struct timeval *start_time,
596 const struct timeval *end_time);
c906108c
SS
597
598/* From top.c */
599
6426a772
JM
600typedef void initialize_file_ftype (void);
601
389e51db
AC
602extern char *skip_quoted (char *);
603
917317f4 604extern char *gdb_readline (char *);
c906108c 605
b4f5539f
TT
606extern char *gdb_readline_wrapper (char *);
607
917317f4 608extern char *command_line_input (char *, int, char *);
c906108c 609
917317f4 610extern void print_prompt (void);
c906108c 611
917317f4 612extern int input_from_terminal_p (void);
c906108c
SS
613
614extern int info_verbose;
615
616/* From printcmd.c */
617
8b9b9e1a 618extern void set_next_address (struct gdbarch *, CORE_ADDR);
c906108c 619
22e722e1
DJ
620extern void print_address_symbolic (struct gdbarch *, CORE_ADDR,
621 struct ui_file *, int, char *);
c906108c 622
22e722e1
DJ
623extern int build_address_symbolic (struct gdbarch *,
624 CORE_ADDR addr,
7b83ea04
AC
625 int do_demangle,
626 char **name,
627 int *offset,
628 char **filename,
629 int *line,
dfcd3bfb
JM
630 int *unmapped);
631
5af949e3 632extern void print_address (struct gdbarch *, CORE_ADDR, struct ui_file *);
2b28d209 633extern const char *pc_prefix (CORE_ADDR);
c906108c
SS
634
635/* From source.c */
636
014d698b
EZ
637#define OPF_TRY_CWD_FIRST 0x01
638#define OPF_SEARCH_IN_PATH 0x02
639
fbdebf46 640extern int openp (const char *, int, const char *, int, char **);
c906108c 641
24f81874 642extern int source_full_path_of (const char *, char **);
c906108c 643
917317f4 644extern void mod_path (char *, char **);
c906108c 645
c04e0a08
JJ
646extern void add_path (char *, char **, int);
647
917317f4 648extern void directory_command (char *, int);
c906108c 649
13d35ae5
AS
650extern void directory_switch (char *, int);
651
c04e0a08
JJ
652extern char *source_path;
653
917317f4 654extern void init_source_path (void);
c906108c 655
104c1213
JM
656/* From exec.c */
657
b8edc417
JK
658typedef int (*find_memory_region_ftype) (CORE_ADDR addr, unsigned long size,
659 int read, int write, int exec,
660 void *data);
661
0963b4bd 662/* Take over the 'find_mapped_memory' vector from exec.c. */
b8edc417
JK
663extern void exec_set_find_memory_regions
664 (int (*func) (find_memory_region_ftype func, void *data));
be4d1333 665
53a5351d 666/* Possible lvalue types. Like enum language, this should be in
0963b4bd 667 value.h, but needs to be here for the same reason. */
53a5351d
JM
668
669enum lval_type
670 {
0963b4bd 671 /* Not an lval. */
53a5351d 672 not_lval,
25ae5d16 673 /* In memory. */
53a5351d 674 lval_memory,
25ae5d16 675 /* In a register. Registers are relative to a frame. */
53a5351d
JM
676 lval_register,
677 /* In a gdb internal variable. */
678 lval_internalvar,
679 /* Part of a gdb internal variable (structure field). */
5f5233d4
PA
680 lval_internalvar_component,
681 /* Value's bits are fetched and stored using functions provided by
682 its creator. */
683 lval_computed
53a5351d
JM
684 };
685
c906108c
SS
686/* Control types for commands */
687
688enum misc_command_type
917317f4
JM
689 {
690 ok_command,
691 end_command,
692 else_command,
693 nop_command
694 };
c906108c
SS
695
696enum command_control_type
917317f4
JM
697 {
698 simple_control,
699 break_control,
700 continue_control,
701 while_control,
702 if_control,
40c03ae8 703 commands_control,
d57a3c85 704 python_control,
a7bdde9e 705 while_stepping_control,
917317f4
JM
706 invalid_control
707 };
c906108c
SS
708
709/* Structure for saved commands lines
710 (for breakpoints, defined commands, etc). */
711
712struct command_line
917317f4
JM
713 {
714 struct command_line *next;
715 char *line;
716 enum command_control_type control_type;
a7bdde9e 717 /* The number of elements in body_list. */
917317f4 718 int body_count;
0963b4bd
MS
719 /* For composite commands, the nested lists of commands. For
720 example, for "if" command this will contain the then branch and
721 the else branch, if that is available. */
917317f4
JM
722 struct command_line **body_list;
723 };
c906108c 724
a7bdde9e
VP
725extern struct command_line *read_command_lines (char *, int, int,
726 void (*)(char *, void *),
727 void *);
728extern struct command_line *read_command_lines_1 (char * (*) (void), int,
729 void (*)(char *, void *),
730 void *);
c906108c 731
917317f4 732extern void free_command_lines (struct command_line **);
c906108c
SS
733
734/* String containing the current directory (what getwd would return). */
735
736extern char *current_directory;
737
738/* Default radixes for input and output. Only some values supported. */
739extern unsigned input_radix;
740extern unsigned output_radix;
741
742/* Possibilities for prettyprint parameters to routines which print
743 things. Like enum language, this should be in value.h, but needs
744 to be here for the same reason. FIXME: If we can eliminate this
745 as an arg to LA_VAL_PRINT, then we can probably move it back to
0963b4bd 746 value.h. */
c906108c
SS
747
748enum val_prettyprint
917317f4
JM
749 {
750 Val_no_prettyprint = 0,
751 Val_prettyprint,
752 /* Use the default setting which the user has specified. */
753 Val_pretty_default
754 };
39f77062 755
ca6724c1
KB
756/* The ptid struct is a collection of the various "ids" necessary
757 for identifying the inferior. This consists of the process id
758 (pid), thread id (tid), and other fields necessary for uniquely
759 identifying the inferior process/thread being debugged. When
760 manipulating ptids, the constructors, accessors, and predicate
761 declared in inferior.h should be used. These are as follows:
762
763 ptid_build - Make a new ptid from a pid, lwp, and tid.
764 pid_to_ptid - Make a new ptid from just a pid.
765 ptid_get_pid - Fetch the pid component of a ptid.
766 ptid_get_lwp - Fetch the lwp component of a ptid.
767 ptid_get_tid - Fetch the tid component of a ptid.
768 ptid_equal - Test to see if two ptids are equal.
252fbfc8 769 ptid_is_pid - Test to see if this ptid represents a process id.
ca6724c1
KB
770
771 Please do NOT access the struct ptid members directly (except, of
772 course, in the implementation of the above ptid manipulation
773 functions). */
774
775struct ptid
776 {
777 /* Process id */
778 int pid;
39f77062 779
ca6724c1
KB
780 /* Lightweight process id */
781 long lwp;
39f77062 782
ca6724c1
KB
783 /* Thread id */
784 long tid;
785 };
39f77062 786
ca6724c1 787typedef struct ptid ptid_t;
39f77062 788
c906108c 789\f
917317f4 790
5a2402b8
AC
791/* Optional native machine support. Non-native (and possibly pure
792 multi-arch) targets do not need a "nm.h" file. This will be a
793 symlink to one of the nm-*.h files, built by the `configure'
794 script. */
c906108c 795
5a2402b8 796#ifdef GDB_NM_FILE
c906108c 797#include "nm.h"
5a2402b8 798#endif
c906108c 799
06c2338d 800/* Assume that fopen accepts the letter "b" in the mode string.
a880ad57
EZ
801 It is demanded by ISO C9X, and should be supported on all
802 platforms that claim to have a standard-conforming C library. On
06c2338d 803 true POSIX systems it will be ignored and have no effect. There
a880ad57
EZ
804 may still be systems without a standard-conforming C library where
805 an ISO C9X compiler (GCC) is available. Known examples are SunOS
06c2338d
MK
806 4.x and 4.3BSD. This assumption means these systems are no longer
807 supported. */
c906108c 808#ifndef FOPEN_RB
06c2338d 809# include "fopen-bin.h"
c906108c
SS
810#endif
811
c906108c 812/* Defaults for system-wide constants (if not defined by xm.h, we fake it).
0963b4bd 813 FIXME: Assumes 2's complement arithmetic. */
c906108c
SS
814
815#if !defined (UINT_MAX)
0963b4bd 816#define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
c906108c
SS
817#endif
818
819#if !defined (INT_MAX)
0963b4bd 820#define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
c906108c
SS
821#endif
822
823#if !defined (INT_MIN)
0963b4bd 824#define INT_MIN ((int)((int) ~0 ^ INT_MAX)) /* 0x80000000 for 32-bits */
c906108c
SS
825#endif
826
827#if !defined (ULONG_MAX)
0963b4bd 828#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
c906108c
SS
829#endif
830
831#if !defined (LONG_MAX)
0963b4bd 832#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
c906108c
SS
833#endif
834
4ce44c66 835#if !defined (ULONGEST_MAX)
658d99ff 836#define ULONGEST_MAX (~(ULONGEST)0) /* 0xFFFFFFFFFFFFFFFF for 64-bits */
4ce44c66
JM
837#endif
838
658d99ff 839#if !defined (LONGEST_MAX) /* 0x7FFFFFFFFFFFFFFF for 64-bits */
4ce44c66
JM
840#define LONGEST_MAX ((LONGEST)(ULONGEST_MAX >> 1))
841#endif
842
c906108c
SS
843/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
844 arguments to a function, number in a value history, register number, etc.)
845 where the value must not be larger than can fit in an int. */
846
917317f4 847extern int longest_to_int (LONGEST);
c906108c 848
7b83ea04 849/* Assorted functions we can declare, now that const and volatile are
c906108c
SS
850 defined. */
851
5565b556 852extern char *savestring (const char *, size_t);
c906108c 853
c0e61796 854/* xmalloc(), xrealloc() and xcalloc() have already been declared in
0963b4bd 855 "libiberty.h". */
c0e61796
AC
856extern void xfree (void *);
857
5b90c7b5
AC
858/* Like xmalloc, but zero the memory. */
859extern void *xzalloc (size_t);
860
bba2d28d
AC
861/* Utility macros to allocate typed memory. Avoids errors like:
862 struct foo *foo = xmalloc (sizeof struct bar); and memset (foo,
863 sizeof (struct foo), 0). */
5b90c7b5 864#define XZALLOC(TYPE) ((TYPE*) xzalloc (sizeof (TYPE)))
349c5d5f 865#define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
3fadccb3 866#define XCALLOC(NMEMB, TYPE) ((TYPE*) xcalloc ((NMEMB), sizeof (TYPE)))
349c5d5f 867
76995688 868/* Like asprintf/vasprintf but get an internal_error if the call
0963b4bd 869 fails. */
3e43a32a
MS
870extern void xasprintf (char **ret, const char *format, ...)
871 ATTRIBUTE_PRINTF (2, 3);
bee0189a 872extern void xvasprintf (char **ret, const char *format, va_list ap)
a0b31db1 873 ATTRIBUTE_PRINTF (2, 0);
76995688 874
e623b504
AC
875/* Like asprintf and vasprintf, but return the string, throw an error
876 if no memory. */
a0b31db1 877extern char *xstrprintf (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
bee0189a 878extern char *xstrvprintf (const char *format, va_list ap)
a0b31db1 879 ATTRIBUTE_PRINTF (1, 0);
9ebf4acf 880
bde2058d
MK
881/* Like snprintf, but throw an error if the output buffer is too small. */
882extern int xsnprintf (char *str, size_t size, const char *format, ...)
a0b31db1 883 ATTRIBUTE_PRINTF (3, 4);
bde2058d 884
f870a310 885extern int parse_escape (struct gdbarch *, char **);
c906108c 886
c906108c
SS
887/* Message to be printed before the error message, when an error occurs. */
888
889extern char *error_pre_print;
890
891/* Message to be printed before the error message, when an error occurs. */
892
893extern char *quit_pre_print;
894
895/* Message to be printed before the warning message, when a warning occurs. */
896
897extern char *warning_pre_print;
898
c25c4a8b
JK
899extern void verror (const char *fmt, va_list ap)
900 ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
c906108c 901
c25c4a8b
JK
902extern void error (const char *fmt, ...)
903 ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
c906108c 904
c25c4a8b 905extern void error_stream (struct ui_file *) ATTRIBUTE_NORETURN;
2acceee2 906
c25c4a8b
JK
907extern void vfatal (const char *fmt, va_list ap)
908 ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
d75e3c94 909
c25c4a8b
JK
910extern void fatal (const char *fmt, ...)
911 ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
d75e3c94 912
c25c4a8b
JK
913extern void internal_verror (const char *file, int line, const char *,
914 va_list ap)
915 ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0);
4ce44c66 916
c25c4a8b
JK
917extern void internal_error (const char *file, int line, const char *, ...)
918 ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 4);
4ce44c66 919
dec43320 920extern void internal_vwarning (const char *file, int line,
bee0189a 921 const char *, va_list ap)
a0b31db1 922 ATTRIBUTE_PRINTF (3, 0);
dec43320
AC
923
924extern void internal_warning (const char *file, int line,
a0b31db1 925 const char *, ...) ATTRIBUTE_PRINTF (3, 4);
dec43320 926
c25c4a8b 927extern void nomem (long) ATTRIBUTE_NORETURN;
c906108c 928
a0b31db1 929extern void warning (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
c906108c 930
a0b31db1 931extern void vwarning (const char *, va_list args) ATTRIBUTE_PRINTF (1, 0);
f5a96129 932
4be87837
DJ
933/* List of known OS ABIs. If you change this, make sure to update the
934 table in osabi.c. */
935enum gdb_osabi
936{
937 GDB_OSABI_UNINITIALIZED = -1, /* For struct gdbarch_info. */
938
939 GDB_OSABI_UNKNOWN = 0, /* keep this zero */
940
941 GDB_OSABI_SVR4,
942 GDB_OSABI_HURD,
943 GDB_OSABI_SOLARIS,
944 GDB_OSABI_OSF1,
945 GDB_OSABI_LINUX,
946 GDB_OSABI_FREEBSD_AOUT,
947 GDB_OSABI_FREEBSD_ELF,
948 GDB_OSABI_NETBSD_AOUT,
949 GDB_OSABI_NETBSD_ELF,
d33b9831 950 GDB_OSABI_OPENBSD_ELF,
4be87837
DJ
951 GDB_OSABI_WINCE,
952 GDB_OSABI_GO32,
4be87837 953 GDB_OSABI_IRIX,
4be87837
DJ
954 GDB_OSABI_INTERIX,
955 GDB_OSABI_HPUX_ELF,
956 GDB_OSABI_HPUX_SOM,
83461b86 957 GDB_OSABI_QNXNTO,
1762d96d 958 GDB_OSABI_CYGWIN,
1f82754b 959 GDB_OSABI_AIX,
a15c5c83 960 GDB_OSABI_DICOS,
a80b95ba 961 GDB_OSABI_DARWIN,
78664fa3 962 GDB_OSABI_SYMBIAN,
1762d96d 963
4be87837
DJ
964 GDB_OSABI_INVALID /* keep this last */
965};
966
c906108c
SS
967/* Global functions from other, non-gdb GNU thingies.
968 Libiberty thingies are no longer declared here. We include libiberty.h
969 above, instead. */
970
c906108c
SS
971/* From other system libraries */
972
973#ifdef HAVE_STDDEF_H
974#include <stddef.h>
975#endif
976
977#ifdef HAVE_STDLIB_H
c906108c
SS
978#include <stdlib.h>
979#endif
980#ifndef min
981#define min(a, b) ((a) < (b) ? (a) : (b))
982#endif
983#ifndef max
984#define max(a, b) ((a) > (b) ? (a) : (b))
985#endif
986
987
c906108c 988#ifndef atof
917317f4 989extern double atof (const char *); /* X3.159-1989 4.10.1.1 */
c906108c
SS
990#endif
991
c906108c
SS
992/* Various possibilities for alloca. */
993#ifndef alloca
917317f4
JM
994#ifdef __GNUC__
995#define alloca __builtin_alloca
996#else /* Not GNU C */
997#ifdef HAVE_ALLOCA_H
998#include <alloca.h>
999#else
1000#ifdef _AIX
1001#pragma alloca
1002#else
c906108c
SS
1003
1004/* We need to be careful not to declare this in a way which conflicts with
1005 bison. Bison never declares it as char *, but under various circumstances
1006 (like __hpux) we need to use void *. */
917317f4 1007extern void *alloca ();
917317f4
JM
1008#endif /* Not _AIX */
1009#endif /* Not HAVE_ALLOCA_H */
1010#endif /* Not GNU C */
c906108c
SS
1011#endif /* alloca not defined */
1012
0963b4bd 1013/* Dynamic target-system-dependent parameters for GDB. */
c906108c
SS
1014#include "gdbarch.h"
1015
0c92afe8
AC
1016/* Maximum size of a register. Something small, but large enough for
1017 all known ISAs. If it turns out to be too small, make it bigger. */
1018
a5916a62 1019enum { MAX_REGISTER_SIZE = 64 };
0c92afe8 1020
0963b4bd 1021/* Static target-system-dependent parameters for GDB. */
c906108c
SS
1022
1023/* Number of bits in a char or unsigned char for the target machine.
1024 Just like CHAR_BIT in <limits.h> but describes the target machine. */
1025#if !defined (TARGET_CHAR_BIT)
1026#define TARGET_CHAR_BIT 8
1027#endif
1028
c906108c
SS
1029/* If we picked up a copy of CHAR_BIT from a configuration file
1030 (which may get it by including <limits.h>) then use it to set
1031 the number of bits in a host char. If not, use the same size
0963b4bd 1032 as the target. */
c906108c
SS
1033
1034#if defined (CHAR_BIT)
1035#define HOST_CHAR_BIT CHAR_BIT
1036#else
1037#define HOST_CHAR_BIT TARGET_CHAR_BIT
1038#endif
1039
c906108c
SS
1040/* In findvar.c. */
1041
e17a4113
UW
1042extern LONGEST extract_signed_integer (const gdb_byte *, int,
1043 enum bfd_endian);
c906108c 1044
e17a4113
UW
1045extern ULONGEST extract_unsigned_integer (const gdb_byte *, int,
1046 enum bfd_endian);
c906108c 1047
e17a4113
UW
1048extern int extract_long_unsigned_integer (const gdb_byte *, int,
1049 enum bfd_endian, LONGEST *);
c906108c 1050
0d509538
AC
1051extern CORE_ADDR extract_typed_address (const gdb_byte *buf,
1052 struct type *type);
4478b372 1053
e17a4113
UW
1054extern void store_signed_integer (gdb_byte *, int,
1055 enum bfd_endian, LONGEST);
c906108c 1056
e17a4113
UW
1057extern void store_unsigned_integer (gdb_byte *, int,
1058 enum bfd_endian, ULONGEST);
c906108c 1059
0d509538
AC
1060extern void store_typed_address (gdb_byte *buf, struct type *type,
1061 CORE_ADDR addr);
4478b372 1062
c906108c 1063\f
c906108c
SS
1064/* From valops.c */
1065
c906108c 1066extern int watchdog;
c906108c
SS
1067
1068/* Hooks for alternate command interfaces. */
8b93c638 1069
0963b4bd 1070/* The name of the interpreter if specified on the command line. */
fb40c209 1071extern char *interpreter_p;
fb40c209
AC
1072
1073/* If a given interpreter matches INTERPRETER_P then it should update
9a4105ab
AC
1074 deprecated_command_loop_hook and deprecated_init_ui_hook with the
1075 per-interpreter implementation. */
1076/* FIXME: deprecated_command_loop_hook and deprecated_init_ui_hook
0963b4bd 1077 should be moved here. */
fb40c209 1078
c906108c
SS
1079struct target_waitstatus;
1080struct cmd_list_element;
c906108c 1081
769d7dc4
AC
1082extern void (*deprecated_pre_add_symbol_hook) (const char *);
1083extern void (*deprecated_post_add_symbol_hook) (void);
11c949aa 1084extern void (*selected_frame_level_changed_hook) (int);
98bbd631 1085extern int (*deprecated_ui_loop_hook) (int signo);
9a4105ab
AC
1086extern void (*deprecated_init_ui_hook) (char *argv0);
1087extern void (*deprecated_command_loop_hook) (void);
1088extern void (*deprecated_show_load_progress) (const char *section,
1089 unsigned long section_sent,
1090 unsigned long section_size,
1091 unsigned long total_sent,
1092 unsigned long total_size);
1093extern void (*deprecated_print_frame_info_listing_hook) (struct symtab * s,
3e43a32a
MS
1094 int line,
1095 int stopline,
9a4105ab 1096 int noerror);
bee0189a
DJ
1097extern int (*deprecated_query_hook) (const char *, va_list)
1098 ATTRIBUTE_FPTR_PRINTF(1,0);
1099extern void (*deprecated_warning_hook) (const char *, va_list)
1100 ATTRIBUTE_FPTR_PRINTF(1,0);
9a4105ab 1101extern void (*deprecated_flush_hook) (struct ui_file * stream);
9a4105ab 1102extern void (*deprecated_interactive_hook) (void);
bee0189a
DJ
1103extern void (*deprecated_readline_begin_hook) (char *, ...)
1104 ATTRIBUTE_FPTR_PRINTF_1;
9a4105ab
AC
1105extern char *(*deprecated_readline_hook) (char *);
1106extern void (*deprecated_readline_end_hook) (void);
1107extern void (*deprecated_register_changed_hook) (int regno);
9a4105ab
AC
1108extern void (*deprecated_context_hook) (int);
1109extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
47608cb1
PA
1110 struct target_waitstatus *status,
1111 int options);
917317f4 1112
9a4105ab
AC
1113extern void (*deprecated_attach_hook) (void);
1114extern void (*deprecated_detach_hook) (void);
1115extern void (*deprecated_call_command_hook) (struct cmd_list_element * c,
1116 char *cmd, int from_tty);
917317f4 1117
9a4105ab 1118extern void (*deprecated_set_hook) (struct cmd_list_element * c);
917317f4 1119
9a4105ab 1120extern void (*deprecated_error_begin_hook) (void);
917317f4 1121
9a4105ab
AC
1122extern int (*deprecated_ui_load_progress_hook) (const char *section,
1123 unsigned long num);
c906108c
SS
1124
1125
0963b4bd 1126/* Inhibit window interface if non-zero. */
c906108c
SS
1127
1128extern int use_windows;
1129
ab38a727
PA
1130/* Definitions of filename-related things. */
1131
1132/* Host specific things. */
c906108c 1133
29247324
EZ
1134#ifdef __MSDOS__
1135# define CANT_FORK
1136# define GLOBAL_CURDIR
1137# define DIRNAME_SEPARATOR ';'
1138#endif
1139
a6f0780a
EZ
1140#if !defined (__CYGWIN__) && defined (_WIN32)
1141# define DIRNAME_SEPARATOR ';'
1142#endif
1143
c906108c
SS
1144#ifndef DIRNAME_SEPARATOR
1145#define DIRNAME_SEPARATOR ':'
1146#endif
1147
c906108c 1148#ifndef SLASH_STRING
c906108c
SS
1149#define SLASH_STRING "/"
1150#endif
c906108c 1151
ca6724c1
KB
1152/* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
1153 The name ``TIDGET'' is a historical accident. Many uses of TIDGET
1154 in the code actually refer to a lightweight process id, i.e,
1155 something that can be considered a process id in its own right for
1156 certain purposes. */
c906108c
SS
1157
1158#ifndef PIDGET
ca6724c1
KB
1159#define PIDGET(PTID) (ptid_get_pid (PTID))
1160#define TIDGET(PTID) (ptid_get_lwp (PTID))
1161#define MERGEPID(PID, TID) ptid_build (PID, TID, 0)
c906108c
SS
1162#endif
1163
96baa820
JM
1164/* Define well known filenos if the system does not define them. */
1165#ifndef STDIN_FILENO
1166#define STDIN_FILENO 0
1167#endif
1168#ifndef STDOUT_FILENO
1169#define STDOUT_FILENO 1
1170#endif
1171#ifndef STDERR_FILENO
1172#define STDERR_FILENO 2
1173#endif
1174
104c1213
JM
1175/* If this definition isn't overridden by the header files, assume
1176 that isatty and fileno exist on this system. */
1177#ifndef ISATTY
1178#define ISATTY(FP) (isatty (fileno (FP)))
1179#endif
1180
5b03f266
AC
1181/* Ensure that V is aligned to an N byte boundary (B's assumed to be a
1182 power of 2). Round up/down when necessary. Examples of correct
1183 use include:
1184
1185 addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
1186 write_memory (addr, value, len);
1187 addr += len;
1188
1189 and:
1190
1191 sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
1192 write_memory (sp, value, len);
1193
1194 Note that uses such as:
1195
1196 write_memory (addr, value, len);
1197 addr += align_up (len, 8);
1198
1199 and:
1200
1201 sp -= align_up (len, 8);
1202 write_memory (sp, value, len);
1203
1204 are typically not correct as they don't ensure that the address (SP
1205 or ADDR) is correctly aligned (relying on previous alignment to
1206 keep things right). This is also why the methods are called
1207 "align_..." instead of "round_..." as the latter reads better with
1208 this incorrect coding style. */
1209
1210extern ULONGEST align_up (ULONGEST v, int n);
1211extern ULONGEST align_down (ULONGEST v, int n);
1212
ae5a43e0
DJ
1213/* Allocation and deallocation functions for the libiberty hash table
1214 which use obstacks. */
1215void *hashtab_obstack_allocate (void *data, size_t size, size_t count);
1216void dummy_obstack_deallocate (void *object, void *data);
1217
6c95b8df
PA
1218/* From progspace.c */
1219
1220extern void initialize_progspace (void);
1221extern void initialize_inferiors (void);
1222
8903c50d
TT
1223/* Special block numbers */
1224
1225enum block_enum
1226{
1227 GLOBAL_BLOCK = 0,
1228 STATIC_BLOCK = 1,
1229 FIRST_LOCAL_BLOCK = 2
1230};
1231
c906108c 1232#endif /* #ifndef DEFS_H */
This page took 0.891668 seconds and 4 git commands to generate.