Eliminate safe_strsignal().
[deliverable/binutils-gdb.git] / gdb / defs.h
CommitLineData
9846de1b 1/* *INDENT-OFF* */ /* ATTR_FORMAT confuses indent, avoid running it for now */
c906108c 2/* Basic, host-specific, and target-specific definitions for GDB.
d9fcf2fb 3 Copyright (C) 1986, 1989, 1991-1996, 1998-2000
c906108c
SS
4 Free Software Foundation, Inc.
5
c5aa993b 6 This file is part of GDB.
c906108c 7
c5aa993b
JM
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
c906108c 12
c5aa993b
JM
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
c906108c 17
c5aa993b
JM
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
c906108c
SS
22
23#ifndef DEFS_H
24#define DEFS_H
25
26#include "config.h" /* Generated by configure */
27#include <stdio.h>
28#include <errno.h> /* System call error return status */
29#include <limits.h>
30
31#ifdef HAVE_STDDEF_H
917317f4 32#include <stddef.h>
c906108c 33#else
917317f4 34#include <sys/types.h> /* for size_t */
c906108c
SS
35#endif
36
104c1213
JM
37#ifdef HAVE_UNISTD_H
38#include <unistd.h>
39#endif
40
c906108c
SS
41/* Just in case they're not defined in stdio.h. */
42
43#ifndef SEEK_SET
44#define SEEK_SET 0
45#endif
46#ifndef SEEK_CUR
47#define SEEK_CUR 1
48#endif
49
50/* First include ansidecl.h so we can use the various macro definitions
51 here and in all subsequent file inclusions. */
52
53#include "ansidecl.h"
54
917317f4 55#include <stdarg.h> /* for va_list */
c906108c
SS
56
57#include "libiberty.h"
58
c906108c
SS
59#include "progress.h"
60
61#ifdef USE_MMALLOC
62#include "mmalloc.h"
63#endif
64
65/* For BFD64 and bfd_vma. */
66#include "bfd.h"
67
68/* An address in the program being debugged. Host byte order. Rather
69 than duplicate all the logic in BFD which figures out what type
70 this is (long, long long, etc.) and whether it needs to be 64
71 bits (the host/target interactions are subtle), we just use
72 bfd_vma. */
73
74typedef bfd_vma CORE_ADDR;
75
104c1213
JM
76/* This is to make sure that LONGEST is at least as big as CORE_ADDR. */
77
78#ifndef LONGEST
79
80#ifdef BFD64
81
82#define LONGEST BFD_HOST_64_BIT
83#define ULONGEST BFD_HOST_U_64_BIT
84
85#else /* No BFD64 */
86
917317f4
JM
87#ifdef CC_HAS_LONG_LONG
88#define LONGEST long long
89#define ULONGEST unsigned long long
90#else
91#ifdef BFD_HOST_64_BIT
104c1213
JM
92/* BFD_HOST_64_BIT is defined for some hosts that don't have long long
93 (e.g. i386-windows) so try it. */
917317f4
JM
94#define LONGEST BFD_HOST_64_BIT
95#define ULONGEST BFD_HOST_U_64_BIT
96#else
97#define LONGEST long
98#define ULONGEST unsigned long
99#endif
100#endif
104c1213
JM
101
102#endif /* No BFD64 */
103
104#endif /* ! LONGEST */
105
c906108c
SS
106#ifndef min
107#define min(a, b) ((a) < (b) ? (a) : (b))
108#endif
109#ifndef max
110#define max(a, b) ((a) > (b) ? (a) : (b))
111#endif
112
1a0559af
AC
113/* Macros to do string compares.
114
115 NOTE: cagney/2000-03-14:
116
117 While old code can continue to refer to these macros, new code is
118 probably better off using strcmp() directly vis: ``strcmp() == 0''
119 and ``strcmp() != 0''.
120
121 This is because modern compilers can directly inline strcmp()
122 making the original justification for these macros - avoid function
123 call overhead by pre-testing the first characters
124 (``*X==*Y?...:0'') - redundant.
125
126 ``Even if [...] testing the first character does have a modest
127 performance improvement, I'd rather that whenever a performance
128 issue is found that we spend the effort on algorithmic
129 optimizations than micro-optimizing.'' J.T. */
c906108c
SS
130
131#define STRCMP(a,b) (*(a) == *(b) ? strcmp ((a), (b)) : (int)*(a) - (int)*(b))
132#define STREQ(a,b) (*(a) == *(b) ? !strcmp ((a), (b)) : 0)
133#define STREQN(a,b,c) (*(a) == *(b) ? !strncmp ((a), (b), (c)) : 0)
134
135/* The character GNU C++ uses to build identifiers that must be unique from
136 the program's identifiers (such as $this and $$vptr). */
137#define CPLUS_MARKER '$' /* May be overridden to '.' for SysV */
138
139/* Check if a character is one of the commonly used C++ marker characters. */
917317f4 140extern int is_cplus_marker (int);
c906108c
SS
141
142/* use tui interface if non-zero */
143extern int tui_version;
144
145#if defined(TUI)
146/* all invocations of TUIDO should have two sets of parens */
147#define TUIDO(x) tuiDo x
148#else
149#define TUIDO(x)
150#endif
151
152/* enable xdb commands if set */
153extern int xdb_commands;
154
155/* enable dbx commands if set */
156extern int dbx_commands;
157
158extern int quit_flag;
159extern int immediate_quit;
160extern int sevenbit_strings;
161
917317f4 162extern void quit (void);
c906108c 163
1a0559af
AC
164/* FIXME: cagney/2000-03-13: It has been suggested that the peformance
165 benefits of having a ``QUIT'' macro rather than a function are
166 marginal. If the overhead of a QUIT function call is proving
167 significant then its calling frequency should probably be reduced
168 [kingdon]. A profile analyzing the current situtation is
169 needed. */
170
c906108c
SS
171#ifdef QUIT
172/* do twice to force compiler warning */
173#define QUIT_FIXME "FIXME"
174#define QUIT_FIXME "ignoring redefinition of QUIT"
175#else
176#define QUIT { \
177 if (quit_flag) quit (); \
178 if (interactive_hook) interactive_hook (); \
179 PROGRESS (1); \
180}
181#endif
182
c906108c
SS
183/* Languages represented in the symbol table and elsewhere.
184 This should probably be in language.h, but since enum's can't
185 be forward declared to satisfy opaque references before their
186 actual definition, needs to be here. */
187
917317f4
JM
188enum language
189 {
190 language_unknown, /* Language not known */
191 language_auto, /* Placeholder for automatic setting */
192 language_c, /* C */
193 language_cplus, /* C++ */
194 language_java, /* Java */
195 language_chill, /* Chill */
196 language_fortran, /* Fortran */
197 language_m2, /* Modula-2 */
198 language_asm, /* Assembly language */
199 language_scm /* Scheme / Guile */
200 };
c906108c
SS
201
202enum precision_type
917317f4
JM
203 {
204 single_precision,
205 double_precision,
206 unspecified_precision
207 };
208
c906108c
SS
209/* the cleanup list records things that have to be undone
210 if an error happens (descriptors to be closed, memory to be freed, etc.)
211 Each link in the chain records a function to call and an
212 argument to give it.
213
214 Use make_cleanup to add an element to the cleanup chain.
215 Use do_cleanups to do all cleanup actions back to a given
216 point in the chain. Use discard_cleanups to remove cleanups
217 from the chain back to a given point, not doing them. */
218
219struct cleanup
917317f4
JM
220 {
221 struct cleanup *next;
222 void (*function) (PTR);
223 PTR arg;
224 };
c906108c
SS
225
226
227/* The ability to declare that a function never returns is useful, but
228 not really required to compile GDB successfully, so the NORETURN and
229 ATTR_NORETURN macros normally expand into nothing. */
230
231/* If compiling with older versions of GCC, a function may be declared
232 "volatile" to indicate that it does not return. */
233
234#ifndef NORETURN
917317f4 235#if defined(__GNUC__) \
c906108c 236 && (__GNUC__ == 1 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7))
917317f4
JM
237#define NORETURN volatile
238#else
239#define NORETURN /* nothing */
240#endif
c906108c
SS
241#endif
242
243/* GCC 2.5 and later versions define a function attribute "noreturn",
244 which is the preferred way to declare that a function never returns.
245 However GCC 2.7 appears to be the first version in which this fully
246 works everywhere we use it. */
247
248#ifndef ATTR_NORETURN
7d418785 249#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
917317f4
JM
250#define ATTR_NORETURN __attribute__ ((noreturn))
251#else
252#define ATTR_NORETURN /* nothing */
253#endif
c906108c
SS
254#endif
255
256#ifndef ATTR_FORMAT
7d418785 257#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4))
917317f4
JM
258#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y)))
259#else
260#define ATTR_FORMAT(type, x, y) /* nothing */
261#endif
c906108c
SS
262#endif
263
264/* Needed for various prototypes */
265
c906108c
SS
266struct symtab;
267struct breakpoint;
c906108c
SS
268
269/* From blockframe.c */
270
917317f4 271extern int inside_entry_func (CORE_ADDR);
c906108c 272
917317f4 273extern int inside_entry_file (CORE_ADDR addr);
c906108c 274
917317f4 275extern int inside_main_func (CORE_ADDR pc);
c906108c
SS
276
277/* From ch-lang.c, for the moment. (FIXME) */
278
917317f4 279extern char *chill_demangle (const char *);
c906108c
SS
280
281/* From utils.c */
282
917317f4 283extern void initialize_utils (void);
392a587b 284
917317f4 285extern void notice_quit (void);
c906108c 286
917317f4 287extern int strcmp_iw (const char *, const char *);
c906108c 288
917317f4 289extern int subset_compare (char *, char *);
7a292a7a 290
917317f4 291extern char *safe_strerror (int);
c906108c 292
917317f4 293extern void init_malloc (void *);
c906108c 294
917317f4 295extern void request_quit (int);
c906108c 296
917317f4
JM
297extern void do_cleanups (struct cleanup *);
298extern void do_final_cleanups (struct cleanup *);
299extern void do_my_cleanups (struct cleanup **, struct cleanup *);
300extern void do_run_cleanups (struct cleanup *);
301extern void do_exec_cleanups (struct cleanup *);
302extern void do_exec_error_cleanups (struct cleanup *);
c906108c 303
917317f4
JM
304extern void discard_cleanups (struct cleanup *);
305extern void discard_final_cleanups (struct cleanup *);
306extern void discard_exec_error_cleanups (struct cleanup *);
307extern void discard_my_cleanups (struct cleanup **, struct cleanup *);
c906108c 308
e4005526
AC
309/* DEPRECATED: cagney/2000-03-04: Do not use this typedef to cast
310 function pointers so that they match the argument to the various
311 cleanup functions. Post GDB 5.0, this typedef will be
312 deleted. [Editors note: cagney was the person that added most of
313 those type casts] */
917317f4 314typedef void (*make_cleanup_func) (void *);
c906108c 315
e4005526
AC
316/* NOTE: cagney/2000-03-04: This typedef is strictly for the
317 make_cleanup function declarations below. Do not use this typedef
318 as a cast when passing functions into the make_cleanup() code.
319 Instead either use a bounce function or add a wrapper function.
320 Calling a f(char*) function with f(void*) is non-portable. */
321typedef void (make_cleanup_ftype) (void *);
322
323extern struct cleanup *make_cleanup (make_cleanup_ftype *, void *);
c906108c 324
917317f4 325extern struct cleanup *make_cleanup_freeargv (char **);
7a292a7a 326
d9fcf2fb
JM
327struct ui_file;
328extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
11cf8741 329
f5ff8c83
AC
330extern struct cleanup *make_cleanup_close (int fd);
331
5c65bbb6
AC
332extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
333
e4005526 334extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
c906108c 335
917317f4 336extern struct cleanup *make_my_cleanup (struct cleanup **,
e4005526 337 make_cleanup_ftype *, void *);
c906108c 338
e4005526 339extern struct cleanup *make_run_cleanup (make_cleanup_ftype *, void *);
c906108c 340
e4005526
AC
341extern struct cleanup *make_exec_cleanup (make_cleanup_ftype *, void *);
342extern struct cleanup *make_exec_error_cleanup (make_cleanup_ftype *, void *);
43ff13b4 343
917317f4
JM
344extern struct cleanup *save_cleanups (void);
345extern struct cleanup *save_final_cleanups (void);
346extern struct cleanup *save_my_cleanups (struct cleanup **);
c906108c 347
917317f4
JM
348extern void restore_cleanups (struct cleanup *);
349extern void restore_final_cleanups (struct cleanup *);
350extern void restore_my_cleanups (struct cleanup **, struct cleanup *);
c906108c 351
2f9429ae 352extern void free_current_contents (void *);
c906108c 353
e54a9244 354extern void null_cleanup (void *);
c906108c 355
917317f4 356extern int myread (int, char *, int);
c906108c 357
917317f4 358extern int query (char *, ...) ATTR_FORMAT (printf, 1, 2);
c906108c
SS
359
360#if !defined (USE_MMALLOC)
082faf24
AC
361/* NOTE: cagney/2000-03-04: The mmalloc functions need to use PTR
362 rather than void* so that they are consistent with
363 ../mmalloc/mmalloc.h. */
364extern PTR mcalloc (PTR, size_t, size_t);
917317f4
JM
365extern PTR mmalloc (PTR, size_t);
366extern PTR mrealloc (PTR, PTR, size_t);
367extern void mfree (PTR, PTR);
c906108c
SS
368#endif
369
917317f4 370extern void init_page_info (void);
392a587b 371
c906108c
SS
372/* From demangle.c */
373
917317f4 374extern void set_demangling_style (char *);
c906108c
SS
375
376/* From tm.h */
377
378struct type;
917317f4 379typedef int (use_struct_convention_fn) (int gcc_p, struct type * value_type);
c906108c
SS
380extern use_struct_convention_fn generic_use_struct_convention;
381
917317f4 382typedef unsigned char *(breakpoint_from_pc_fn) (CORE_ADDR * pcptr, int *lenptr);
c906108c
SS
383\f
384/* Annotation stuff. */
385
917317f4 386extern int annotation_level; /* in stack.c */
c906108c 387\f
917317f4 388extern void begin_line (void);
c906108c 389
917317f4 390extern void wrap_here (char *);
c906108c 391
917317f4 392extern void reinitialize_more_filter (void);
c906108c 393
0f71a2f6 394/* Normal results */
d9fcf2fb 395extern struct ui_file *gdb_stdout;
0f71a2f6 396/* Serious error notifications */
d9fcf2fb 397extern struct ui_file *gdb_stderr;
0f71a2f6
JM
398/* Log/debug/trace messages that should bypass normal stdout/stderr
399 filtering. For momement, always call this stream using
400 *_unfiltered. In the very near future that restriction shall be
401 removed - either call shall be unfiltered. (cagney 1999-06-13). */
d9fcf2fb 402extern struct ui_file *gdb_stdlog;
43ff13b4
JM
403/* Target output that should bypass normal stdout/stderr filtering.
404 For momement, always call this stream using *_unfiltered. In the
405 very near future that restriction shall be removed - either call
406 shall be unfiltered. (cagney 1999-07-02). */
d9fcf2fb 407extern struct ui_file *gdb_stdtarg;
c906108c 408
c906108c
SS
409#if defined(TUI)
410#include "tui.h"
411#include "tuiCommand.h"
412#include "tuiData.h"
413#include "tuiIO.h"
414#include "tuiLayout.h"
415#include "tuiWin.h"
416#endif
417
d9fcf2fb 418#include "ui-file.h"
c906108c 419
917317f4 420/* More generic printf like operations */
c906108c 421
d9fcf2fb 422extern void fputs_filtered (const char *, struct ui_file *);
c906108c 423
d9fcf2fb 424extern void fputs_unfiltered (const char *, struct ui_file *);
c906108c 425
d9fcf2fb 426extern int fputc_filtered (int c, struct ui_file *);
c906108c 427
d9fcf2fb 428extern int fputc_unfiltered (int c, struct ui_file *);
c906108c 429
917317f4 430extern int putchar_unfiltered (int c);
c906108c 431
917317f4 432extern void puts_filtered (const char *);
c906108c 433
917317f4 434extern void puts_unfiltered (const char *);
c906108c 435
917317f4 436extern void puts_debug (char *prefix, char *string, char *suffix);
c906108c 437
917317f4 438extern void vprintf_filtered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
c906108c 439
d9fcf2fb 440extern void vfprintf_filtered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0);
c906108c 441
d9fcf2fb 442extern void fprintf_filtered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3);
c906108c 443
d9fcf2fb 444extern void fprintfi_filtered (int, struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 3, 4);
c906108c 445
917317f4 446extern void printf_filtered (const char *, ...) ATTR_FORMAT (printf, 1, 2);
c906108c 447
917317f4 448extern void printfi_filtered (int, const char *, ...) ATTR_FORMAT (printf, 2, 3);
c906108c 449
917317f4 450extern void vprintf_unfiltered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
c906108c 451
d9fcf2fb 452extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0);
c906108c 453
d9fcf2fb 454extern void fprintf_unfiltered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3);
917317f4
JM
455
456extern void printf_unfiltered (const char *, ...) ATTR_FORMAT (printf, 1, 2);
c906108c 457
d9fcf2fb 458extern void print_spaces (int, struct ui_file *);
c906108c 459
d9fcf2fb 460extern void print_spaces_filtered (int, struct ui_file *);
c906108c 461
917317f4 462extern char *n_spaces (int);
c906108c 463
d9fcf2fb 464extern void fputstr_filtered (const char *str, int quotr, struct ui_file * stream);
43e526b9 465
d9fcf2fb 466extern void fputstr_unfiltered (const char *str, int quotr, struct ui_file * stream);
43e526b9 467
d9fcf2fb 468extern void fputstrn_unfiltered (const char *str, int n, int quotr, struct ui_file * stream);
c906108c 469
d4f3574e 470/* Display the host ADDR on STREAM formatted as ``0x%x''. */
d9fcf2fb 471extern void gdb_print_host_address (void *addr, struct ui_file *stream);
c906108c 472
104c1213
JM
473/* Convert a CORE_ADDR into a HEX string. paddr() is like %08lx.
474 paddr_nz() is like %lx. paddr_u() is like %lu. paddr_width() is
475 for ``%*''. */
d4f3574e 476extern int strlen_paddr (void);
917317f4
JM
477extern char *paddr (CORE_ADDR addr);
478extern char *paddr_nz (CORE_ADDR addr);
479extern char *paddr_u (CORE_ADDR addr);
480extern char *paddr_d (LONGEST addr);
c906108c 481
5683e87a
AC
482extern char *phex (ULONGEST l, int sizeof_l);
483extern char *phex_nz (ULONGEST l, int sizeof_l);
c906108c 484
d9fcf2fb 485extern void fprintf_symbol_filtered (struct ui_file *, char *,
917317f4 486 enum language, int);
c906108c 487
917317f4 488extern NORETURN void perror_with_name (char *) ATTR_NORETURN;
c906108c 489
917317f4 490extern void print_sys_errmsg (char *, int);
c906108c
SS
491
492/* From regex.c or libc. BSD 4.4 declares this with the argument type as
493 "const char *" in unistd.h, so we can't declare the argument
494 as "char *". */
495
917317f4 496extern char *re_comp (const char *);
c906108c
SS
497
498/* From symfile.c */
499
917317f4
JM
500extern void symbol_file_command (char *, int);
501
502/* Remote targets may wish to use this as their load function. */
503extern void generic_load (char *name, int from_tty);
504
505/* Summarise a download */
d9fcf2fb 506extern void print_transfer_performance (struct ui_file *stream,
917317f4
JM
507 unsigned long data_count,
508 unsigned long write_count,
509 unsigned long time_count);
c906108c
SS
510
511/* From top.c */
512
6426a772
JM
513typedef void initialize_file_ftype (void);
514
917317f4 515extern char *skip_quoted (char *);
c906108c 516
917317f4 517extern char *gdb_readline (char *);
c906108c 518
917317f4 519extern char *command_line_input (char *, int, char *);
c906108c 520
917317f4 521extern void print_prompt (void);
c906108c 522
917317f4 523extern int input_from_terminal_p (void);
c906108c
SS
524
525extern int info_verbose;
526
527/* From printcmd.c */
528
917317f4 529extern void set_next_address (CORE_ADDR);
c906108c 530
d9fcf2fb 531extern void print_address_symbolic (CORE_ADDR, struct ui_file *, int,
917317f4 532 char *);
c906108c 533
dfcd3bfb 534extern int build_address_symbolic (CORE_ADDR addr,
7b83ea04
AC
535 int do_demangle,
536 char **name,
537 int *offset,
538 char **filename,
539 int *line,
dfcd3bfb
JM
540 int *unmapped);
541
d9fcf2fb 542extern void print_address_numeric (CORE_ADDR, int, struct ui_file *);
c906108c 543
d9fcf2fb 544extern void print_address (CORE_ADDR, struct ui_file *);
c906108c
SS
545
546/* From source.c */
547
917317f4 548extern int openp (char *, int, char *, int, int, char **);
c906108c 549
917317f4 550extern int source_full_path_of (char *, char **);
c906108c 551
917317f4 552extern void mod_path (char *, char **);
c906108c 553
917317f4 554extern void directory_command (char *, int);
c906108c 555
917317f4 556extern void init_source_path (void);
c906108c 557
917317f4 558extern char *symtab_to_filename (struct symtab *);
c906108c 559
104c1213
JM
560/* From exec.c */
561
562extern void exec_set_section_offsets (bfd_signed_vma text_off,
563 bfd_signed_vma data_off,
564 bfd_signed_vma bss_off);
565
c906108c
SS
566/* From findvar.c */
567
917317f4 568extern int read_relative_register_raw_bytes (int, char *);
c906108c 569
53a5351d
JM
570/* Possible lvalue types. Like enum language, this should be in
571 value.h, but needs to be here for the same reason. */
572
573enum lval_type
574 {
575 /* Not an lval. */
576 not_lval,
577 /* In memory. Could be a saved register. */
578 lval_memory,
579 /* In a register. */
580 lval_register,
581 /* In a gdb internal variable. */
582 lval_internalvar,
583 /* Part of a gdb internal variable (structure field). */
584 lval_internalvar_component,
585 /* In a register series in a frame not the current one, which may have been
586 partially saved or saved in different places (otherwise would be
587 lval_register or lval_memory). */
588 lval_reg_frame_relative
589 };
590
392a587b 591struct frame_info;
53a5351d 592
917317f4
JM
593void default_get_saved_register (char *raw_buffer, int *optimized,
594 CORE_ADDR * addrp,
595 struct frame_info *frame, int regnum,
596 enum lval_type *lval);
392a587b 597
c906108c
SS
598/* From readline (but not in any readline .h files). */
599
917317f4 600extern char *tilde_expand (char *);
c906108c
SS
601
602/* Control types for commands */
603
604enum misc_command_type
917317f4
JM
605 {
606 ok_command,
607 end_command,
608 else_command,
609 nop_command
610 };
c906108c
SS
611
612enum command_control_type
917317f4
JM
613 {
614 simple_control,
615 break_control,
616 continue_control,
617 while_control,
618 if_control,
619 invalid_control
620 };
c906108c
SS
621
622/* Structure for saved commands lines
623 (for breakpoints, defined commands, etc). */
624
625struct command_line
917317f4
JM
626 {
627 struct command_line *next;
628 char *line;
629 enum command_control_type control_type;
630 int body_count;
631 struct command_line **body_list;
632 };
c906108c 633
917317f4 634extern struct command_line *read_command_lines (char *, int);
c906108c 635
917317f4 636extern void free_command_lines (struct command_line **);
c906108c 637
7b83ea04
AC
638/* To continue the execution commands when running gdb asynchronously.
639 A continuation structure contains a pointer to a function to be called
43ff13b4
JM
640 to finish the command, once the target has stopped. Such mechanism is
641 used bt the finish and until commands, and in the remote protocol
642 when opening an extended-remote connection. */
643
644struct continuation_arg
917317f4
JM
645 {
646 struct continuation_arg *next;
57e687d9
MS
647 union continuation_data {
648 void *pointer;
649 int integer;
650 long longint;
651 } data;
917317f4 652 };
43ff13b4
JM
653
654struct continuation
917317f4
JM
655 {
656 void (*continuation_hook) (struct continuation_arg *);
657 struct continuation_arg *arg_list;
658 struct continuation *next;
659 };
660struct continuation continuation;
43ff13b4
JM
661
662/* In infrun.c. */
663extern struct continuation *cmd_continuation;
c2d11a7d
JM
664/* Used only by the step_1 function. */
665extern struct continuation *intermediate_continuation;
43ff13b4
JM
666
667/* From utils.c */
917317f4
JM
668extern void add_continuation (void (*)(struct continuation_arg *),
669 struct continuation_arg *);
670extern void do_all_continuations (void);
671extern void discard_all_continuations (void);
43ff13b4 672
c2d11a7d
JM
673extern void add_intermediate_continuation (void (*)(struct continuation_arg *),
674 struct continuation_arg *);
675extern void do_all_intermediate_continuations (void);
676extern void discard_all_intermediate_continuations (void);
677
c906108c
SS
678/* String containing the current directory (what getwd would return). */
679
680extern char *current_directory;
681
682/* Default radixes for input and output. Only some values supported. */
683extern unsigned input_radix;
684extern unsigned output_radix;
685
686/* Possibilities for prettyprint parameters to routines which print
687 things. Like enum language, this should be in value.h, but needs
688 to be here for the same reason. FIXME: If we can eliminate this
689 as an arg to LA_VAL_PRINT, then we can probably move it back to
690 value.h. */
691
692enum val_prettyprint
917317f4
JM
693 {
694 Val_no_prettyprint = 0,
695 Val_prettyprint,
696 /* Use the default setting which the user has specified. */
697 Val_pretty_default
698 };
c906108c 699\f
917317f4 700
c906108c
SS
701/* Host machine definition. This will be a symlink to one of the
702 xm-*.h files, built by the `configure' script. */
703
704#include "xm.h"
705
706/* Native machine support. This will be a symlink to one of the
707 nm-*.h files, built by the `configure' script. */
708
709#include "nm.h"
710
711/* Target machine definition. This will be a symlink to one of the
712 tm-*.h files, built by the `configure' script. */
713
714#include "tm.h"
715
716/* If the xm.h file did not define the mode string used to open the
717 files, assume that binary files are opened the same way as text
718 files */
719#ifndef FOPEN_RB
720#include "fopen-same.h"
721#endif
722
723/* Microsoft C can't deal with const pointers */
724
725#ifdef _MSC_VER
726#define CONST_PTR
727#else
728#define CONST_PTR const
729#endif
730
731/*
732 * Allow things in gdb to be declared "volatile". If compiling ANSI, it
733 * just works. If compiling with gcc but non-ansi, redefine to __volatile__.
734 * If non-ansi, non-gcc, then eliminate "volatile" entirely, making those
735 * objects be read-write rather than read-only.
736 */
737
738#ifndef volatile
739#ifndef __STDC__
917317f4
JM
740#ifdef __GNUC__
741#define volatile __volatile__
742#else
743#define volatile /* nothing */
744#endif /* GNUC */
c906108c
SS
745#endif /* STDC */
746#endif /* volatile */
747
748/* Defaults for system-wide constants (if not defined by xm.h, we fake it).
749 FIXME: Assumes 2's complement arithmetic */
750
751#if !defined (UINT_MAX)
917317f4 752#define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
c906108c
SS
753#endif
754
755#if !defined (INT_MAX)
917317f4 756#define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
c906108c
SS
757#endif
758
759#if !defined (INT_MIN)
760#define INT_MIN ((int)((int) ~0 ^ INT_MAX)) /* 0x80000000 for 32-bits */
761#endif
762
763#if !defined (ULONG_MAX)
764#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
765#endif
766
767#if !defined (LONG_MAX)
768#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
769#endif
770
4ce44c66
JM
771#if !defined (ULONGEST_MAX)
772#define ULONGEST_MAX (~(ULONGEST)0) /* 0xFFFFFFFFFFFFFFFF for 32-bits */
773#endif
774
775#if !defined (LONGEST_MAX) /* 0x7FFFFFFFFFFFFFFF for 32-bits */
776#define LONGEST_MAX ((LONGEST)(ULONGEST_MAX >> 1))
777#endif
778
c906108c
SS
779/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
780 arguments to a function, number in a value history, register number, etc.)
781 where the value must not be larger than can fit in an int. */
782
917317f4 783extern int longest_to_int (LONGEST);
c906108c 784
7b83ea04 785/* Assorted functions we can declare, now that const and volatile are
c906108c
SS
786 defined. */
787
917317f4 788extern char *savestring (const char *, int);
c906108c 789
917317f4 790extern char *msavestring (void *, const char *, int);
c906108c 791
917317f4 792extern char *strsave (const char *);
c906108c 793
917317f4 794extern char *mstrsave (void *, const char *);
c906108c 795
917317f4
JM
796/* FIXME; was long, but this causes compile errors in msvc if already
797 defined */
798#ifdef _MSC_VER
799extern PTR xmmalloc (PTR, size_t);
800extern PTR xmrealloc (PTR, PTR, size_t);
c906108c 801#else
917317f4
JM
802extern PTR xmmalloc (PTR, long);
803extern PTR xmrealloc (PTR, PTR, long);
c906108c
SS
804#endif
805
917317f4 806extern int parse_escape (char **);
c906108c 807
c906108c
SS
808/* Message to be printed before the error message, when an error occurs. */
809
810extern char *error_pre_print;
811
812/* Message to be printed before the error message, when an error occurs. */
813
814extern char *quit_pre_print;
815
816/* Message to be printed before the warning message, when a warning occurs. */
817
818extern char *warning_pre_print;
819
4ce44c66 820extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
c906108c 821
4ce44c66 822extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN;
c906108c 823
4ce44c66
JM
824/* DEPRECATED: Use error(), verror() or error_stream(). */
825extern NORETURN void error_begin (void);
c906108c 826
d9fcf2fb 827extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
2acceee2 828
4ce44c66
JM
829/* Returns a freshly allocate buffer containing the last error
830 message. */
917317f4 831extern char *error_last_message (void);
2acceee2 832
4ce44c66
JM
833extern NORETURN void internal_verror (const char *, va_list ap) ATTR_NORETURN;
834
835extern NORETURN void internal_error (char *, ...) ATTR_NORETURN;
836
917317f4 837extern NORETURN void nomem (long) ATTR_NORETURN;
c906108c 838
99eeeb0f
ND
839/* Reasons for calling return_to_top_level. Note: enum value 0 is
840 reserved for internal use as the return value from an initial
841 setjmp(). */
c906108c 842
917317f4
JM
843enum return_reason
844 {
845 /* User interrupt. */
99eeeb0f 846 RETURN_QUIT = 1,
917317f4
JM
847 /* Any other error. */
848 RETURN_ERROR
849 };
c906108c 850
43ff13b4
JM
851#define ALL_CLEANUPS ((struct cleanup *)0)
852
99eeeb0f
ND
853#define RETURN_MASK(reason) (1 << (int)(reason))
854#define RETURN_MASK_QUIT RETURN_MASK (RETURN_QUIT)
855#define RETURN_MASK_ERROR RETURN_MASK (RETURN_ERROR)
856#define RETURN_MASK_ALL (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
c906108c
SS
857typedef int return_mask;
858
917317f4 859extern NORETURN void return_to_top_level (enum return_reason) ATTR_NORETURN;
c906108c 860
11cf8741
JM
861/* If CATCH_ERRORS_FTYPE throws an error, catch_errors() returns zero
862 otherwize the result from CATCH_ERRORS_FTYPE is returned. It is
863 probably useful for CATCH_ERRORS_FTYPE to always return a non-zero
864 value. It's unfortunate that, catch_errors() does not return an
865 indication of the exact exception that it caught - quit_flag might
866 help. */
867
917317f4
JM
868typedef int (catch_errors_ftype) (PTR);
869extern int catch_errors (catch_errors_ftype *, PTR, char *, return_mask);
c906108c 870
11cf8741
JM
871/* Template to catch_errors() that wraps calls to command
872 functions. */
873
874typedef void (catch_command_errors_ftype) (char *, int);
875extern int catch_command_errors (catch_command_errors_ftype *func, char *command, int from_tty, return_mask);
876
917317f4 877extern void warning_begin (void);
c906108c 878
917317f4 879extern void warning (const char *, ...) ATTR_FORMAT (printf, 1, 2);
c906108c
SS
880
881/* Global functions from other, non-gdb GNU thingies.
882 Libiberty thingies are no longer declared here. We include libiberty.h
883 above, instead. */
884
885#ifndef GETENV_PROVIDED
917317f4 886extern char *getenv (const char *);
c906108c
SS
887#endif
888
889/* From other system libraries */
890
891#ifdef HAVE_STDDEF_H
892#include <stddef.h>
893#endif
894
895#ifdef HAVE_STDLIB_H
896#if defined(_MSC_VER) && !defined(__cplusplus)
897/* msvc defines these in stdlib.h for c code */
898#undef min
899#undef max
900#endif
901#include <stdlib.h>
902#endif
903#ifndef min
904#define min(a, b) ((a) < (b) ? (a) : (b))
905#endif
906#ifndef max
907#define max(a, b) ((a) > (b) ? (a) : (b))
908#endif
909
910
911/* We take the address of fclose later, but some stdio's forget
912 to declare this. We can't always declare it since there's
913 no way to declare the parameters without upsetting some compiler
914 somewhere. */
915
916#ifndef FCLOSE_PROVIDED
917317f4 917extern int fclose (FILE *);
c906108c
SS
918#endif
919
920#ifndef atof
917317f4 921extern double atof (const char *); /* X3.159-1989 4.10.1.1 */
c906108c
SS
922#endif
923
924#ifndef MALLOC_INCOMPATIBLE
925
926#ifdef NEED_DECLARATION_MALLOC
927extern PTR malloc ();
928#endif
929
930#ifdef NEED_DECLARATION_REALLOC
931extern PTR realloc ();
932#endif
933
934#ifdef NEED_DECLARATION_FREE
935extern void free ();
936#endif
937
938#endif /* MALLOC_INCOMPATIBLE */
939
940/* Various possibilities for alloca. */
941#ifndef alloca
917317f4
JM
942#ifdef __GNUC__
943#define alloca __builtin_alloca
944#else /* Not GNU C */
945#ifdef HAVE_ALLOCA_H
946#include <alloca.h>
947#else
948#ifdef _AIX
949#pragma alloca
950#else
c906108c
SS
951
952/* We need to be careful not to declare this in a way which conflicts with
953 bison. Bison never declares it as char *, but under various circumstances
954 (like __hpux) we need to use void *. */
917317f4
JM
955#if defined (__STDC__) || defined (__hpux)
956extern void *alloca ();
957#else /* Don't use void *. */
958extern char *alloca ();
959#endif /* Don't use void *. */
960#endif /* Not _AIX */
961#endif /* Not HAVE_ALLOCA_H */
962#endif /* Not GNU C */
c906108c
SS
963#endif /* alloca not defined */
964
965/* HOST_BYTE_ORDER must be defined to one of these. */
966
967#ifdef HAVE_ENDIAN_H
968#include <endian.h>
969#endif
970
971#if !defined (BIG_ENDIAN)
972#define BIG_ENDIAN 4321
973#endif
974
975#if !defined (LITTLE_ENDIAN)
976#define LITTLE_ENDIAN 1234
977#endif
978
979/* Dynamic target-system-dependent parameters for GDB. */
980#include "gdbarch.h"
33489c5b
AC
981#if (GDB_MULTI_ARCH == 0)
982/* Multi-arch targets _should_ be including "arch-utils.h" directly
983 into their *-tdep.c file. This is a prop to help old non-
984 multi-arch targets to continue to compile. */
985#include "arch-utils.h"
986#endif
c906108c
SS
987
988/* Static target-system-dependent parameters for GDB. */
989
990/* Number of bits in a char or unsigned char for the target machine.
991 Just like CHAR_BIT in <limits.h> but describes the target machine. */
992#if !defined (TARGET_CHAR_BIT)
993#define TARGET_CHAR_BIT 8
994#endif
995
996/* Number of bits in a short or unsigned short for the target machine. */
997#if !defined (TARGET_SHORT_BIT)
998#define TARGET_SHORT_BIT (2 * TARGET_CHAR_BIT)
999#endif
1000
1001/* Number of bits in an int or unsigned int for the target machine. */
1002#if !defined (TARGET_INT_BIT)
1003#define TARGET_INT_BIT (4 * TARGET_CHAR_BIT)
1004#endif
1005
1006/* Number of bits in a long or unsigned long for the target machine. */
1007#if !defined (TARGET_LONG_BIT)
1008#define TARGET_LONG_BIT (4 * TARGET_CHAR_BIT)
1009#endif
1010
1011/* Number of bits in a long long or unsigned long long for the target machine. */
1012#if !defined (TARGET_LONG_LONG_BIT)
1013#define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT)
1014#endif
1015
1016/* Number of bits in a float for the target machine. */
1017#if !defined (TARGET_FLOAT_BIT)
1018#define TARGET_FLOAT_BIT (4 * TARGET_CHAR_BIT)
1019#endif
1020
1021/* Number of bits in a double for the target machine. */
1022#if !defined (TARGET_DOUBLE_BIT)
1023#define TARGET_DOUBLE_BIT (8 * TARGET_CHAR_BIT)
1024#endif
1025
1026/* Number of bits in a long double for the target machine. */
1027#if !defined (TARGET_LONG_DOUBLE_BIT)
1028#define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT)
1029#endif
1030
1031/* Number of bits in a pointer for the target machine */
1032#if !defined (TARGET_PTR_BIT)
1033#define TARGET_PTR_BIT TARGET_INT_BIT
1034#endif
1035
c4093a6a
JM
1036/* Number of bits in a BFD_VMA for the target object file format. */
1037#if !defined (TARGET_BFD_VMA_BIT)
1038#define TARGET_BFD_VMA_BIT TARGET_PTR_BIT
1039#endif
1040
c906108c
SS
1041/* If we picked up a copy of CHAR_BIT from a configuration file
1042 (which may get it by including <limits.h>) then use it to set
1043 the number of bits in a host char. If not, use the same size
1044 as the target. */
1045
1046#if defined (CHAR_BIT)
1047#define HOST_CHAR_BIT CHAR_BIT
1048#else
1049#define HOST_CHAR_BIT TARGET_CHAR_BIT
1050#endif
1051
1052/* The bit byte-order has to do just with numbering of bits in
1053 debugging symbols and such. Conceptually, it's quite separate
1054 from byte/word byte order. */
1055
1056#if !defined (BITS_BIG_ENDIAN)
1057#define BITS_BIG_ENDIAN (TARGET_BYTE_ORDER == BIG_ENDIAN)
1058#endif
1059
1060/* In findvar.c. */
1061
917317f4 1062extern LONGEST extract_signed_integer (void *, int);
c906108c 1063
917317f4 1064extern ULONGEST extract_unsigned_integer (void *, int);
c906108c 1065
917317f4 1066extern int extract_long_unsigned_integer (void *, int, LONGEST *);
c906108c 1067
917317f4 1068extern CORE_ADDR extract_address (void *, int);
c906108c 1069
4478b372
JB
1070extern CORE_ADDR extract_typed_address (void *buf, struct type *type);
1071
a9ac8f51 1072extern void store_signed_integer (void *, int, LONGEST);
c906108c 1073
a9ac8f51 1074extern void store_unsigned_integer (void *, int, ULONGEST);
c906108c 1075
a9ac8f51 1076extern void store_address (void *, int, LONGEST);
c906108c 1077
4478b372
JB
1078extern void store_typed_address (void *buf, struct type *type, CORE_ADDR addr);
1079
c906108c
SS
1080/* Setup definitions for host and target floating point formats. We need to
1081 consider the format for `float', `double', and `long double' for both target
1082 and host. We need to do this so that we know what kind of conversions need
1083 to be done when converting target numbers to and from the hosts DOUBLEST
1084 data type. */
1085
1086/* This is used to indicate that we don't know the format of the floating point
1087 number. Typically, this is useful for native ports, where the actual format
1088 is irrelevant, since no conversions will be taking place. */
1089
1090extern const struct floatformat floatformat_unknown;
1091
1092#if HOST_BYTE_ORDER == BIG_ENDIAN
917317f4
JM
1093#ifndef HOST_FLOAT_FORMAT
1094#define HOST_FLOAT_FORMAT &floatformat_ieee_single_big
1095#endif
1096#ifndef HOST_DOUBLE_FORMAT
1097#define HOST_DOUBLE_FORMAT &floatformat_ieee_double_big
1098#endif
1099#else /* LITTLE_ENDIAN */
1100#ifndef HOST_FLOAT_FORMAT
1101#define HOST_FLOAT_FORMAT &floatformat_ieee_single_little
1102#endif
1103#ifndef HOST_DOUBLE_FORMAT
1104#define HOST_DOUBLE_FORMAT &floatformat_ieee_double_little
1105#endif
c906108c
SS
1106#endif
1107
1108#ifndef HOST_LONG_DOUBLE_FORMAT
1109#define HOST_LONG_DOUBLE_FORMAT &floatformat_unknown
1110#endif
1111
c906108c
SS
1112/* Use `long double' if the host compiler supports it. (Note that this is not
1113 necessarily any longer than `double'. On SunOS/gcc, it's the same as
1114 double.) This is necessary because GDB internally converts all floating
1115 point values to the widest type supported by the host.
1116
1117 There are problems however, when the target `long double' is longer than the
1118 host's `long double'. In general, we'll probably reduce the precision of
1119 any such values and print a warning. */
1120
1121#ifdef HAVE_LONG_DOUBLE
1122typedef long double DOUBLEST;
1123#else
1124typedef double DOUBLEST;
1125#endif
1126
917317f4
JM
1127extern void floatformat_to_doublest (const struct floatformat *,
1128 char *, DOUBLEST *);
1129extern void floatformat_from_doublest (const struct floatformat *,
1130 DOUBLEST *, char *);
1131extern DOUBLEST extract_floating (void *, int);
c906108c 1132
917317f4 1133extern void store_floating (void *, int, DOUBLEST);
c906108c
SS
1134\f
1135/* On some machines there are bits in addresses which are not really
1136 part of the address, but are used by the kernel, the hardware, etc.
1137 for special purposes. ADDR_BITS_REMOVE takes out any such bits
1138 so we get a "real" address such as one would find in a symbol
1139 table. This is used only for addresses of instructions, and even then
1140 I'm not sure it's used in all contexts. It exists to deal with there
1141 being a few stray bits in the PC which would mislead us, not as some sort
1142 of generic thing to handle alignment or segmentation (it's possible it
cd0fc7c3 1143 should be in TARGET_READ_PC instead). */
c906108c
SS
1144#if !defined (ADDR_BITS_REMOVE)
1145#define ADDR_BITS_REMOVE(addr) (addr)
1146#endif /* No ADDR_BITS_REMOVE. */
1147
1148/* From valops.c */
1149
917317f4 1150extern CORE_ADDR push_bytes (CORE_ADDR, char *, int);
c906108c 1151
917317f4 1152extern CORE_ADDR push_word (CORE_ADDR, ULONGEST);
c906108c 1153
c906108c 1154extern int watchdog;
c906108c
SS
1155
1156/* Hooks for alternate command interfaces. */
8b93c638 1157
fb40c209
AC
1158#ifdef UI_OUT
1159/* The name of the interpreter if specified on the command line. */
1160extern char *interpreter_p;
1161#endif
1162
1163/* If a given interpreter matches INTERPRETER_P then it should update
1164 command_loop_hook and init_ui_hook with the per-interpreter
1165 implementation. */
1166/* FIXME: command_loop_hook and init_ui_hook should be moved here. */
1167
c906108c
SS
1168struct target_waitstatus;
1169struct cmd_list_element;
c906108c 1170
0f71a2f6
JM
1171/* Should the asynchronous variant of the interpreter (using the
1172 event-loop) be enabled? */
6426a772 1173extern int event_loop_p;
917317f4
JM
1174
1175extern void (*init_ui_hook) (char *argv0);
1176extern void (*command_loop_hook) (void);
c2d11a7d 1177extern void (*show_load_progress) (const char *section,
7b83ea04
AC
1178 unsigned long section_sent,
1179 unsigned long section_size,
1180 unsigned long total_sent,
c2d11a7d 1181 unsigned long total_size);
917317f4
JM
1182extern void (*print_frame_info_listing_hook) (struct symtab * s,
1183 int line, int stopline,
1184 int noerror);
1185extern struct frame_info *parse_frame_specification (char *frame_exp);
1186extern int (*query_hook) (const char *, va_list);
1187extern void (*warning_hook) (const char *, va_list);
d9fcf2fb 1188extern void (*flush_hook) (struct ui_file * stream);
917317f4
JM
1189extern void (*create_breakpoint_hook) (struct breakpoint * b);
1190extern void (*delete_breakpoint_hook) (struct breakpoint * bpt);
1191extern void (*modify_breakpoint_hook) (struct breakpoint * bpt);
1192extern void (*interactive_hook) (void);
1193extern void (*registers_changed_hook) (void);
1194extern void (*readline_begin_hook) (char *,...);
1195extern char *(*readline_hook) (char *);
1196extern void (*readline_end_hook) (void);
1197extern void (*register_changed_hook) (int regno);
1198extern void (*memory_changed_hook) (CORE_ADDR addr, int len);
1199extern void (*context_hook) (int);
1200extern int (*target_wait_hook) (int pid, struct target_waitstatus * status);
1201
1202extern void (*attach_hook) (void);
1203extern void (*detach_hook) (void);
1204extern void (*call_command_hook) (struct cmd_list_element * c,
1205 char *cmd, int from_tty);
1206
1207extern void (*set_hook) (struct cmd_list_element * c);
1208
1209extern NORETURN void (*error_hook) (void) ATTR_NORETURN;
1210
1211extern void (*error_begin_hook) (void);
1212
1213extern int (*ui_load_progress_hook) (const char *section, unsigned long num);
c906108c
SS
1214
1215
1216/* Inhibit window interface if non-zero. */
1217
1218extern int use_windows;
1219
1220/* Symbolic definitions of filename-related things. */
1221/* FIXME, this doesn't work very well if host and executable
1222 filesystems conventions are different. */
1223
1224#ifndef DIRNAME_SEPARATOR
1225#define DIRNAME_SEPARATOR ':'
1226#endif
1227
1228#ifndef SLASH_P
1229#if defined(__GO32__)||defined(_WIN32)
1230#define SLASH_P(X) ((X)=='\\')
1231#else
1232#define SLASH_P(X) ((X)=='/')
1233#endif
1234#endif
1235
1236#ifndef SLASH_CHAR
1237#if defined(__GO32__)||defined(_WIN32)
1238#define SLASH_CHAR '\\'
1239#else
1240#define SLASH_CHAR '/'
1241#endif
1242#endif
1243
1244#ifndef SLASH_STRING
1245#if defined(__GO32__)||defined(_WIN32)
1246#define SLASH_STRING "\\"
1247#else
1248#define SLASH_STRING "/"
1249#endif
1250#endif
1251
1252#ifndef ROOTED_P
1253#define ROOTED_P(X) (SLASH_P((X)[0]))
1254#endif
1255
1256/* On some systems, PIDGET is defined to extract the inferior pid from
1257 an internal pid that has the thread id and pid in seperate bit
1258 fields. If not defined, then just use the entire internal pid as
1259 the actual pid. */
1260
1261#ifndef PIDGET
ed9a39eb
JM
1262#define PIDGET(PID) (PID)
1263#define TIDGET(PID) 0
09f99d3f 1264#define MERGEPID(PID, TID) (PID)
c906108c
SS
1265#endif
1266
1267/* If under Cygwin, provide backwards compatibility with older
1268 Cygwin compilers that don't define the current cpp define. */
1269#ifdef __CYGWIN32__
1270#ifndef __CYGWIN__
1271#define __CYGWIN__
1272#endif
1273#endif
1274
96baa820
JM
1275/* Define well known filenos if the system does not define them. */
1276#ifndef STDIN_FILENO
1277#define STDIN_FILENO 0
1278#endif
1279#ifndef STDOUT_FILENO
1280#define STDOUT_FILENO 1
1281#endif
1282#ifndef STDERR_FILENO
1283#define STDERR_FILENO 2
1284#endif
1285
104c1213
JM
1286/* If this definition isn't overridden by the header files, assume
1287 that isatty and fileno exist on this system. */
1288#ifndef ISATTY
1289#define ISATTY(FP) (isatty (fileno (FP)))
1290#endif
1291
c4093a6a
JM
1292\f
1293/* FIXME: cagney/1999-12-13: The following will be moved to gdb.h /
1294 libgdb.h or gdblib.h. */
1295
1296/* Return-code (RC) from a gdb library call. (The abreviation RC is
1297 taken from the sim/common directory.) */
1298
1299enum gdb_rc {
1300 /* The operation failed. The failure message can be fetched by
1301 calling ``char *error_last_message(void)''. The value is
1302 determined by the catch_errors() interface. */
1303 /* NOTE: Since ``defs.h:catch_errors()'' does not return an error /
1304 internal / quit indication it is not possible to return that
1305 here. */
1306 GDB_RC_FAIL = 0,
1307 /* No error occured but nothing happened. Due to the catch_errors()
1308 interface, this must be non-zero. */
1309 GDB_RC_NONE = 1,
1310 /* The operation was successful. Due to the catch_errors()
1311 interface, this must be non-zero. */
1312 GDB_RC_OK = 2
1313};
1314
1315
1316/* Print the specified breakpoint on GDB_STDOUT. (Eventually this
1317 function will ``print'' the object on ``output''). */
1318enum gdb_rc gdb_breakpoint_query (/* struct {ui,gdb}_out *output, */ int bnum);
1319
c3f6f71d
JM
1320/* Create a breakpoint at ADDRESS (a GDB source and line). */
1321enum gdb_rc gdb_breakpoint (char *address, char *condition,
1322 int hardwareflag, int tempflag,
1323 int thread, int ignore_count);
0fda6bd2 1324enum gdb_rc gdb_thread_select (/* output object */ char *tidstr);
c3f6f71d 1325
8b93c638
JM
1326#ifdef UI_OUT
1327/* Print a list of known thread ids. */
1328enum gdb_rc gdb_list_thread_ids (/* output object */);
1329
1330/* Switch thread and print notification. */
1331#endif
c906108c 1332#endif /* #ifndef DEFS_H */
This page took 0.114273 seconds and 4 git commands to generate.