Merge branch 'master' into merge-job
[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.
b811d2c2 4 Copyright (C) 1986-2020 Free Software Foundation, Inc.
4e5106e6 5 Copyright (C) 2019-2020 Advanced Micro Devices, Inc. All rights reserved.
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
268a13a5 29#include "gdbsupport/common-defs.h"
975ac915 30
8b04f8b6 31#include <sys/types.h>
c906108c
SS
32#include <limits.h>
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
104c1213 48#include <unistd.h>
d8d2a3ee 49
637d6690
CW
50#include <fcntl.h>
51
6c7a06a3
TT
52#include "gdb_wchar.h"
53
48faced0
DE
54#include "ui-file.h"
55
268a13a5
TT
56#include "gdbsupport/host-defs.h"
57#include "gdbsupport/enum-flags.h"
48faced0 58
bb2ec1b3
TT
59/* Scope types enumerator. List the types of scopes the compiler will
60 accept. */
61
62enum compile_i_scope_types
63 {
64 COMPILE_I_INVALID_SCOPE,
65
66 /* A simple scope. Wrap an expression into a simple scope that
67 takes no arguments, returns no value, and uses the generic
68 function name "_gdb_expr". */
69
70 COMPILE_I_SIMPLE_SCOPE,
71
72 /* Do not wrap the expression,
73 it has to provide function "_gdb_expr" on its own. */
74 COMPILE_I_RAW_SCOPE,
36de76f9
JK
75
76 /* A printable expression scope. Wrap an expression into a scope
77 suitable for the "compile print" command. It uses the generic
78 function name "_gdb_expr". COMPILE_I_PRINT_ADDRESS_SCOPE variant
79 is the usual one, taking address of the object.
80 COMPILE_I_PRINT_VALUE_SCOPE is needed for arrays where the array
81 name already specifies its address. See get_out_value_type. */
82 COMPILE_I_PRINT_ADDRESS_SCOPE,
83 COMPILE_I_PRINT_VALUE_SCOPE,
bb2ec1b3
TT
84 };
85
6f98355c
YQ
86
87template<typename T>
88using RequireLongest = gdb::Requires<gdb::Or<std::is_same<T, LONGEST>,
89 std::is_same<T, ULONGEST>>>;
90
975ac915 91/* Just in case they're not defined in stdio.h. */
c906108c
SS
92
93#ifndef SEEK_SET
94#define SEEK_SET 0
95#endif
96#ifndef SEEK_CUR
97#define SEEK_CUR 1
98#endif
99
637d6690
CW
100/* The O_BINARY flag is defined in fcntl.h on some non-Posix platforms.
101 It is used as an access modifier in calls to open(), where it acts
0963b4bd
MS
102 similarly to the "b" character in fopen()'s MODE argument. On Posix
103 platforms it should be a no-op, so it is defined as 0 here. This
104 ensures that the symbol may be used freely elsewhere in gdb. */
637d6690
CW
105
106#ifndef O_BINARY
107#define O_BINARY 0
108#endif
109
8e3b41a9 110#include "hashtab.h"
c906108c 111
a8b16220 112/* * Enable dbx commands if set. */
c906108c
SS
113extern int dbx_commands;
114
a8b16220 115/* * System root path, used to find libraries etc. */
030292b7
DJ
116extern char *gdb_sysroot;
117
a8b16220 118/* * GDB datadir, used to store data files. */
f2aec7f6 119extern std::string gdb_datadir;
b14b1491 120
f2aec7f6 121/* * If not empty, the possibly relocated path to python's "lib" directory
0c4a4063 122 specified with --with-python. */
f2aec7f6 123extern std::string python_libdir;
0c4a4063 124
a8b16220 125/* * Search path for separate debug files. */
aa28a74e
DJ
126extern char *debug_file_directory;
127
585a46a2
PA
128/* GDB's SIGINT handler basically sets a flag; code that might take a
129 long time before it gets back to the event loop, and which ought to
130 be interruptible, checks this flag using the QUIT macro, which, if
131 GDB has the terminal, throws a quit exception.
522002f9 132
f0881b37
PA
133 In addition to setting a flag, the SIGINT handler also marks a
134 select/poll-able file descriptor as read-ready. That is used by
135 interruptible_select in order to support interrupting blocking I/O
136 in a race-free manner.
137
6dddc817
DE
138 These functions use the extension_language_ops API to allow extension
139 language(s) and GDB SIGINT handling to coexist seamlessly. */
522002f9 140
a8b16220 141/* * Evaluate to non-zero if the quit flag is set, zero otherwise. This
522002f9
TT
142 will clear the quit flag as a side effect. */
143extern int check_quit_flag (void);
a8b16220 144/* * Set the quit flag. */
522002f9
TT
145extern void set_quit_flag (void);
146
048094ac
PA
147/* The current quit handler (and its type). This is called from the
148 QUIT macro. See default_quit_handler below for default behavior.
149 Parts of GDB temporarily override this to e.g., completely suppress
150 Ctrl-C because it would not be safe to throw. E.g., normally, you
151 wouldn't want to quit between a RSP command and its response, as
152 that would break the communication with the target, but you may
153 still want to intercept the Ctrl-C and offer to disconnect if the
154 user presses Ctrl-C multiple times while the target is stuck
155 waiting for the wedged remote stub. */
156typedef void (quit_handler_ftype) (void);
157extern quit_handler_ftype *quit_handler;
158
048094ac
PA
159/* The default quit handler. Checks whether Ctrl-C was pressed, and
160 if so:
161
162 - If GDB owns the terminal, throws a quit exception.
163
164 - If GDB does not own the terminal, forwards the Ctrl-C to the
165 target.
166*/
167extern void default_quit_handler (void);
168
06c868a8
JK
169/* Flag that function quit should call quit_force. */
170extern volatile int sync_quit_force_run;
171
917317f4 172extern void quit (void);
c906108c 173
abc56d60
PA
174/* Helper for the QUIT macro. */
175
176extern void maybe_quit (void);
177
048094ac
PA
178/* Check whether a Ctrl-C was typed, and if so, call the current quit
179 handler. */
abc56d60 180#define QUIT maybe_quit ()
c906108c 181
f0881b37
PA
182/* Set the serial event associated with the quit flag. */
183extern void quit_serial_event_set (void);
184
185/* Clear the serial event associated with the quit flag. */
186extern void quit_serial_event_clear (void);
187
a8b16220 188/* * Languages represented in the symbol table and elsewhere.
c906108c
SS
189 This should probably be in language.h, but since enum's can't
190 be forward declared to satisfy opaque references before their
8b302db8
TT
191 actual definition, needs to be here.
192
193 The constants here are in priority order. In particular,
194 demangling is attempted according to this order.
195
196 Note that there's ambiguity between the mangling schemes of some of
197 these languages, so some symbols could be successfully demangled by
198 several languages. For that reason, the constants here are sorted
9c37b5ae
TT
199 in the order we'll attempt demangling them. For example: Rust uses
200 C++ mangling, so must come after C++; Ada must come last (see
47e77640
PA
201 ada_sniff_from_mangled_name). (Keep this order in sync with the
202 'languages' array in language.c.) */
c906108c 203
917317f4
JM
204enum language
205 {
206 language_unknown, /* Language not known */
207 language_auto, /* Placeholder for automatic setting */
208 language_c, /* C */
8b302db8 209 language_objc, /* Objective-C */
917317f4 210 language_cplus, /* C++ */
6aecb9c2 211 language_d, /* D */
a766d390 212 language_go, /* Go */
917317f4
JM
213 language_fortran, /* Fortran */
214 language_m2, /* Modula-2 */
215 language_asm, /* Assembly language */
20a0e81d 216 language_pascal, /* Pascal */
f4b8a18d 217 language_opencl, /* OpenCL */
c44af4eb 218 language_rust, /* Rust */
f290d38e 219 language_minimal, /* All other languages, minimal support only */
8b302db8 220 language_ada, /* Ada */
f290d38e 221 nr_languages
917317f4 222 };
c906108c 223
51cdc993
DE
224/* The number of bits needed to represent all languages, with enough
225 padding to allow for reasonable growth. */
226#define LANGUAGE_BITS 5
227gdb_static_assert (nr_languages <= (1 << LANGUAGE_BITS));
228
c906108c 229enum precision_type
917317f4
JM
230 {
231 single_precision,
232 double_precision,
233 unspecified_precision
234 };
235
a8b16220
SS
236/* * A generic, not quite boolean, enumeration. This is used for
237 set/show commands in which the options are on/off/automatic. */
7f19b9a2
AC
238enum auto_boolean
239{
240 AUTO_BOOLEAN_TRUE,
241 AUTO_BOOLEAN_FALSE,
242 AUTO_BOOLEAN_AUTO
243};
244
a8b16220
SS
245/* * Potential ways that a function can return a value of a given
246 type. */
247
92ad9cd9
AC
248enum return_value_convention
249{
a8b16220 250 /* * Where the return value has been squeezed into one or more
92ad9cd9
AC
251 registers. */
252 RETURN_VALUE_REGISTER_CONVENTION,
a8b16220 253 /* * Commonly known as the "struct return convention". The caller
92ad9cd9
AC
254 passes an additional hidden first parameter to the caller. That
255 parameter contains the address at which the value being returned
256 should be stored. While typically, and historically, used for
257 large structs, this is convention is applied to values of many
258 different types. */
31db7b6c 259 RETURN_VALUE_STRUCT_CONVENTION,
a8b16220 260 /* * Like the "struct return convention" above, but where the ABI
31db7b6c
MK
261 guarantees that the called function stores the address at which
262 the value being returned is stored in a well-defined location,
263 such as a register or memory slot in the stack frame. Don't use
264 this if the ABI doesn't explicitly guarantees this. */
265 RETURN_VALUE_ABI_RETURNS_ADDRESS,
a8b16220 266 /* * Like the "struct return convention" above, but where the ABI
31db7b6c
MK
267 guarantees that the address at which the value being returned is
268 stored will be available in a well-defined location, such as a
269 register or memory slot in the stack frame. Don't use this if
270 the ABI doesn't explicitly guarantees this. */
271 RETURN_VALUE_ABI_PRESERVES_ADDRESS,
92ad9cd9
AC
272};
273
c906108c
SS
274/* Needed for various prototypes */
275
c906108c
SS
276struct symtab;
277struct breakpoint;
6e4c6c91 278struct frame_info;
8b9b9e1a 279struct gdbarch;
028d0ed5 280struct value;
c906108c 281
478aac75
DE
282/* From main.c. */
283
284/* This really belong in utils.c (path-utils.c?), but it references some
285 globals that are currently only available to main.c. */
f2aec7f6 286extern std::string relocate_gdb_directory (const char *initial, bool relocatable);
478aac75 287
c906108c
SS
288\f
289/* Annotation stuff. */
290
917317f4 291extern int annotation_level; /* in stack.c */
c906108c 292\f
c906108c
SS
293
294/* From regex.c or libc. BSD 4.4 declares this with the argument type as
295 "const char *" in unistd.h, so we can't declare the argument
296 as "char *". */
297
56000a98 298EXTERN_C char *re_comp (const char *);
c906108c
SS
299
300/* From symfile.c */
301
1d8b34a7 302extern void symbol_file_command (const char *, int);
917317f4 303
c906108c
SS
304/* From top.c */
305
6426a772
JM
306typedef void initialize_file_ftype (void);
307
38bcc89d 308extern char *gdb_readline_wrapper (const char *);
b4f5539f 309
992a7040 310extern const char *command_line_input (const char *, const char *);
c906108c 311
917317f4 312extern void print_prompt (void);
c906108c 313
268a799a
PA
314struct ui;
315
316extern int input_interactive_p (struct ui *);
c906108c 317
491144b5 318extern bool info_verbose;
c906108c
SS
319
320/* From printcmd.c */
321
8b9b9e1a 322extern void set_next_address (struct gdbarch *, CORE_ADDR);
c906108c 323
9cb709b6 324extern int print_address_symbolic (struct gdbarch *, CORE_ADDR,
a121b7c1
PA
325 struct ui_file *, int,
326 const char *);
c906108c 327
5af949e3 328extern void print_address (struct gdbarch *, CORE_ADDR, struct ui_file *);
2b28d209 329extern const char *pc_prefix (CORE_ADDR);
c906108c 330
104c1213
JM
331/* From exec.c */
332
a8b16220
SS
333/* * Process memory area starting at ADDR with length SIZE. Area is
334 readable iff READ is non-zero, writable if WRITE is non-zero,
335 executable if EXEC is non-zero. Area is possibly changed against
336 its original file based copy if MODIFIED is non-zero. DATA is
337 passed without changes from a caller. */
4f69f4c2 338
b8edc417
JK
339typedef int (*find_memory_region_ftype) (CORE_ADDR addr, unsigned long size,
340 int read, int write, int exec,
4f69f4c2 341 int modified, void *data);
b8edc417 342
a8b16220 343/* * Possible lvalue types. Like enum language, this should be in
0963b4bd 344 value.h, but needs to be here for the same reason. */
53a5351d
JM
345
346enum lval_type
347 {
a8b16220 348 /* * Not an lval. */
53a5351d 349 not_lval,
a8b16220 350 /* * In memory. */
53a5351d 351 lval_memory,
a8b16220 352 /* * In a register. Registers are relative to a frame. */
53a5351d 353 lval_register,
a8b16220 354 /* * In a gdb internal variable. */
53a5351d 355 lval_internalvar,
e81e7f5e
SC
356 /* * Value encapsulates a callable defined in an extension language. */
357 lval_xcallable,
a8b16220 358 /* * Part of a gdb internal variable (structure field). */
5f5233d4 359 lval_internalvar_component,
a8b16220
SS
360 /* * Value's bits are fetched and stored using functions provided
361 by its creator. */
5f5233d4 362 lval_computed
53a5351d
JM
363 };
364
a8b16220 365/* * Parameters of the "info proc" command. */
145b16a9
UW
366
367enum info_proc_what
368 {
a8b16220 369 /* * Display the default cmdline, cwd and exe outputs. */
145b16a9
UW
370 IP_MINIMAL,
371
a8b16220 372 /* * Display `info proc mappings'. */
145b16a9
UW
373 IP_MAPPINGS,
374
a8b16220 375 /* * Display `info proc status'. */
145b16a9
UW
376 IP_STATUS,
377
a8b16220 378 /* * Display `info proc stat'. */
145b16a9
UW
379 IP_STAT,
380
a8b16220 381 /* * Display `info proc cmdline'. */
145b16a9
UW
382 IP_CMDLINE,
383
a8b16220 384 /* * Display `info proc exe'. */
145b16a9
UW
385 IP_EXE,
386
a8b16220 387 /* * Display `info proc cwd'. */
145b16a9
UW
388 IP_CWD,
389
e98ee8c4
JB
390 /* * Display `info proc files'. */
391 IP_FILES,
392
a8b16220 393 /* * Display all of the above. */
145b16a9
UW
394 IP_ALL
395 };
396
a8b16220 397/* * Default radixes for input and output. Only some values supported. */
c906108c
SS
398extern unsigned input_radix;
399extern unsigned output_radix;
400
a8b16220 401/* * Possibilities for prettyformat parameters to routines which print
c906108c
SS
402 things. Like enum language, this should be in value.h, but needs
403 to be here for the same reason. FIXME: If we can eliminate this
404 as an arg to LA_VAL_PRINT, then we can probably move it back to
0963b4bd 405 value.h. */
c906108c 406
2a998fc0 407enum val_prettyformat
917317f4 408 {
2a998fc0
DE
409 Val_no_prettyformat = 0,
410 Val_prettyformat,
a8b16220 411 /* * Use the default setting which the user has specified. */
2a998fc0 412 Val_prettyformat_default
917317f4 413 };
39f77062 414
a8b16220 415/* * Optional native machine support. Non-native (and possibly pure
5a2402b8
AC
416 multi-arch) targets do not need a "nm.h" file. This will be a
417 symlink to one of the nm-*.h files, built by the `configure'
418 script. */
c906108c 419
5a2402b8 420#ifdef GDB_NM_FILE
c906108c 421#include "nm.h"
5a2402b8 422#endif
c906108c 423
06c2338d 424/* Assume that fopen accepts the letter "b" in the mode string.
a880ad57
EZ
425 It is demanded by ISO C9X, and should be supported on all
426 platforms that claim to have a standard-conforming C library. On
06c2338d 427 true POSIX systems it will be ignored and have no effect. There
a880ad57
EZ
428 may still be systems without a standard-conforming C library where
429 an ISO C9X compiler (GCC) is available. Known examples are SunOS
06c2338d
MK
430 4.x and 4.3BSD. This assumption means these systems are no longer
431 supported. */
c906108c 432#ifndef FOPEN_RB
06c2338d 433# include "fopen-bin.h"
c906108c
SS
434#endif
435
c906108c 436/* Defaults for system-wide constants (if not defined by xm.h, we fake it).
0963b4bd 437 FIXME: Assumes 2's complement arithmetic. */
c906108c
SS
438
439#if !defined (UINT_MAX)
0963b4bd 440#define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
c906108c
SS
441#endif
442
443#if !defined (INT_MAX)
0963b4bd 444#define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
c906108c
SS
445#endif
446
447#if !defined (INT_MIN)
0963b4bd 448#define INT_MIN ((int)((int) ~0 ^ INT_MAX)) /* 0x80000000 for 32-bits */
c906108c
SS
449#endif
450
451#if !defined (ULONG_MAX)
0963b4bd 452#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
c906108c
SS
453#endif
454
455#if !defined (LONG_MAX)
0963b4bd 456#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
c906108c
SS
457#endif
458
4ce44c66 459#if !defined (ULONGEST_MAX)
658d99ff 460#define ULONGEST_MAX (~(ULONGEST)0) /* 0xFFFFFFFFFFFFFFFF for 64-bits */
4ce44c66
JM
461#endif
462
658d99ff 463#if !defined (LONGEST_MAX) /* 0x7FFFFFFFFFFFFFFF for 64-bits */
4ce44c66
JM
464#define LONGEST_MAX ((LONGEST)(ULONGEST_MAX >> 1))
465#endif
466
a8b16220 467/* * Convert a LONGEST to an int. This is used in contexts (e.g. number of
c906108c
SS
468 arguments to a function, number in a value history, register number, etc.)
469 where the value must not be larger than can fit in an int. */
470
917317f4 471extern int longest_to_int (LONGEST);
c906108c 472
a8b16220 473/* * List of known OS ABIs. If you change this, make sure to update the
4be87837
DJ
474 table in osabi.c. */
475enum gdb_osabi
476{
4be87837 477 GDB_OSABI_UNKNOWN = 0, /* keep this zero */
26540402 478 GDB_OSABI_NONE,
4be87837
DJ
479
480 GDB_OSABI_SVR4,
481 GDB_OSABI_HURD,
482 GDB_OSABI_SOLARIS,
4be87837 483 GDB_OSABI_LINUX,
1736a7bd
PA
484 GDB_OSABI_FREEBSD,
485 GDB_OSABI_NETBSD,
486 GDB_OSABI_OPENBSD,
4be87837
DJ
487 GDB_OSABI_WINCE,
488 GDB_OSABI_GO32,
83461b86 489 GDB_OSABI_QNXNTO,
1762d96d 490 GDB_OSABI_CYGWIN,
1f82754b 491 GDB_OSABI_AIX,
a15c5c83 492 GDB_OSABI_DICOS,
a80b95ba 493 GDB_OSABI_DARWIN,
78664fa3 494 GDB_OSABI_SYMBIAN,
34864976 495 GDB_OSABI_OPENVMS,
d5367fe1 496 GDB_OSABI_LYNXOS178,
cf0dbd6f 497 GDB_OSABI_NEWLIB,
bb7e3f4d 498 GDB_OSABI_SDE,
e1c3a373 499 GDB_OSABI_PIKEOS,
5922befa 500 GDB_OSABI_AMDGPU_HSA,
1762d96d 501
4be87837
DJ
502 GDB_OSABI_INVALID /* keep this last */
503};
504
0b31a4bc
TT
505/* Enumerate the requirements a symbol has in order to be evaluated.
506 These are listed in order of "strength" -- a later entry subsumes
507 earlier ones. This fine-grained distinction is important because
508 it allows for the evaluation of a TLS symbol during unwinding --
509 when unwinding one has access to registers, but not the frame
510 itself, because that is being constructed. */
511
512enum symbol_needs_kind
513{
514 /* No special requirements -- just memory. */
515 SYMBOL_NEEDS_NONE,
516
517 /* The symbol needs registers. */
518 SYMBOL_NEEDS_REGISTERS,
519
520 /* The symbol needs a frame. */
521 SYMBOL_NEEDS_FRAME
522};
523
c906108c
SS
524/* In findvar.c. */
525
6f98355c
YQ
526template<typename T, typename = RequireLongest<T>>
527T extract_integer (const gdb_byte *addr, int len, enum bfd_endian byte_order);
c906108c 528
6f98355c
YQ
529static inline LONGEST
530extract_signed_integer (const gdb_byte *addr, int len,
531 enum bfd_endian byte_order)
532{
533 return extract_integer<LONGEST> (addr, len, byte_order);
534}
535
536static inline ULONGEST
537extract_unsigned_integer (const gdb_byte *addr, int len,
538 enum bfd_endian byte_order)
539{
540 return extract_integer<ULONGEST> (addr, len, byte_order);
541}
c906108c 542
e17a4113
UW
543extern int extract_long_unsigned_integer (const gdb_byte *, int,
544 enum bfd_endian, LONGEST *);
c906108c 545
0d509538
AC
546extern CORE_ADDR extract_typed_address (const gdb_byte *buf,
547 struct type *type);
4478b372 548
6f98355c
YQ
549/* All 'store' functions accept a host-format integer and store a
550 target-format integer at ADDR which is LEN bytes long. */
c906108c 551
6f98355c
YQ
552template<typename T, typename = RequireLongest<T>>
553extern void store_integer (gdb_byte *addr, int len, enum bfd_endian byte_order,
554 T val);
555
556static inline void
557store_signed_integer (gdb_byte *addr, int len,
558 enum bfd_endian byte_order, LONGEST val)
559{
560 return store_integer (addr, len, byte_order, val);
561}
562
563static inline void
564store_unsigned_integer (gdb_byte *addr, int len,
565 enum bfd_endian byte_order, ULONGEST val)
566{
567 return store_integer (addr, len, byte_order, val);
568}
c906108c 569
0d509538
AC
570extern void store_typed_address (gdb_byte *buf, struct type *type,
571 CORE_ADDR addr);
4478b372 572
b057297a
AH
573extern void copy_integer_to_size (gdb_byte *dest, int dest_size,
574 const gdb_byte *source, int source_size,
575 bool is_signed, enum bfd_endian byte_order);
576
c906108c 577/* Hooks for alternate command interfaces. */
8b93c638 578
c906108c
SS
579struct target_waitstatus;
580struct cmd_list_element;
c906108c 581
769d7dc4
AC
582extern void (*deprecated_pre_add_symbol_hook) (const char *);
583extern void (*deprecated_post_add_symbol_hook) (void);
11c949aa 584extern void (*selected_frame_level_changed_hook) (int);
98bbd631 585extern int (*deprecated_ui_loop_hook) (int signo);
9a4105ab
AC
586extern void (*deprecated_show_load_progress) (const char *section,
587 unsigned long section_sent,
588 unsigned long section_size,
589 unsigned long total_sent,
590 unsigned long total_size);
591extern void (*deprecated_print_frame_info_listing_hook) (struct symtab * s,
3e43a32a
MS
592 int line,
593 int stopline,
9a4105ab 594 int noerror);
bee0189a
DJ
595extern int (*deprecated_query_hook) (const char *, va_list)
596 ATTRIBUTE_FPTR_PRINTF(1,0);
597extern void (*deprecated_warning_hook) (const char *, va_list)
598 ATTRIBUTE_FPTR_PRINTF(1,0);
a121b7c1 599extern void (*deprecated_readline_begin_hook) (const char *, ...)
bee0189a 600 ATTRIBUTE_FPTR_PRINTF_1;
38bcc89d 601extern char *(*deprecated_readline_hook) (const char *);
9a4105ab 602extern void (*deprecated_readline_end_hook) (void);
9a4105ab
AC
603extern void (*deprecated_context_hook) (int);
604extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
47608cb1
PA
605 struct target_waitstatus *status,
606 int options);
917317f4 607
9a4105ab
AC
608extern void (*deprecated_attach_hook) (void);
609extern void (*deprecated_detach_hook) (void);
610extern void (*deprecated_call_command_hook) (struct cmd_list_element * c,
95a6b0a1 611 const char *cmd, int from_tty);
917317f4 612
9a4105ab
AC
613extern int (*deprecated_ui_load_progress_hook) (const char *section,
614 unsigned long num);
c906108c 615
104c1213
JM
616/* If this definition isn't overridden by the header files, assume
617 that isatty and fileno exist on this system. */
618#ifndef ISATTY
619#define ISATTY(FP) (isatty (fileno (FP)))
620#endif
621
a8b16220 622/* * A width that can achieve a better legibility for GDB MI mode. */
3347eb1a 623#define GDB_MI_MSG_WIDTH 80
624
6c95b8df
PA
625/* From progspace.c */
626
627extern void initialize_progspace (void);
628extern void initialize_inferiors (void);
629
a8b16220 630/* * Special block numbers */
8903c50d
TT
631
632enum block_enum
633{
634 GLOBAL_BLOCK = 0,
635 STATIC_BLOCK = 1,
636 FIRST_LOCAL_BLOCK = 2
637};
638
76727919 639/* User selection used in observable.h and multiple print functions. */
4034d0ff
AT
640
641enum user_selected_what_flag
642 {
643 /* Inferior selected. */
644 USER_SELECTED_INFERIOR = 1 << 1,
645
646 /* Thread selected. */
647 USER_SELECTED_THREAD = 1 << 2,
648
649 /* Frame selected. */
650 USER_SELECTED_FRAME = 1 << 3
651 };
652DEF_ENUM_FLAGS_TYPE (enum user_selected_what_flag, user_selected_what);
653
48faced0
DE
654#include "utils.h"
655
c906108c 656#endif /* #ifndef DEFS_H */
This page took 2.310634 seconds and 4 git commands to generate.