OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [gdb-5.3/] [gdb/] [defs.h] - Blame information for rev 1765

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1181 sfurman
/* *INDENT-OFF* */ /* ATTR_FORMAT confuses indent, avoid running it for now */
2
/* Basic, host-specific, and target-specific definitions for GDB.
3
   Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
4
   1997, 1998, 1999, 2000, 2001, 2002
5
   Free Software Foundation, Inc.
6
 
7
   This file is part of GDB.
8
 
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
11
   the Free Software Foundation; either version 2 of the License, or
12
   (at your option) any later version.
13
 
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.
18
 
19
   You should have received a copy of the GNU General Public License
20
   along with this program; if not, write to the Free Software
21
   Foundation, Inc., 59 Temple Place - Suite 330,
22
   Boston, MA 02111-1307, USA.  */
23
 
24
#ifndef DEFS_H
25
#define DEFS_H
26
 
27
#include "config.h"             /* Generated by configure */
28
#include <stdio.h>
29
#include <errno.h>              /* System call error return status */
30
#include <limits.h>
31
 
32
#ifdef HAVE_STDDEF_H
33
#include <stddef.h>
34
#else
35
#include <sys/types.h>          /* for size_t */
36
#endif
37
 
38
#ifdef HAVE_UNISTD_H
39
#include <unistd.h>
40
#endif
41
 
42
#include "gdb_locale.h"
43
 
44
/* For ``enum target_signal''.  */
45
#include "gdb/signals.h"
46
 
47
/* Just in case they're not defined in stdio.h. */
48
 
49
#ifndef SEEK_SET
50
#define SEEK_SET 0
51
#endif
52
#ifndef SEEK_CUR
53
#define SEEK_CUR 1
54
#endif
55
 
56
/* First include ansidecl.h so we can use the various macro definitions
57
   here and in all subsequent file inclusions.  */
58
 
59
#include "ansidecl.h"
60
 
61
#include <stdarg.h>             /* for va_list */
62
 
63
#include "libiberty.h"
64
 
65
#include "progress.h"
66
 
67
/* For BFD64 and bfd_vma.  */
68
#include "bfd.h"
69
 
70
 
71
/* The target is partially multi-arched.  Both "tm.h" and the
72
   multi-arch vector provide definitions.  "tm.h" normally overrides
73
   the multi-arch vector (but there are a few exceptions).  */
74
 
75
#define GDB_MULTI_ARCH_PARTIAL 1
76
 
77
/* The target is partially multi-arched. Both the multi-arch vector
78
   and "tm.h" provide definitions. "tm.h" cannot override a definition
79
   provided by the multi-arch vector.  It is detected as a compilation
80
   error.
81
 
82
   This setting is only useful during a multi-arch conversion. */
83
 
84
#define GDB_MULTI_ARCH_TM 2
85
 
86
/* The target is pure multi-arch.  The MULTI-ARCH vector provides all
87
   definitions.  "tm.h" is linked to an empty file. */
88
 
89
#define GDB_MULTI_ARCH_PURE 3
90
 
91
 
92
 
93
/* An address in the program being debugged.  Host byte order.  Rather
94
   than duplicate all the logic in BFD which figures out what type
95
   this is (long, long long, etc.) and whether it needs to be 64
96
   bits (the host/target interactions are subtle), we just use
97
   bfd_vma.  */
98
 
99
typedef bfd_vma CORE_ADDR;
100
 
101
/* This is to make sure that LONGEST is at least as big as CORE_ADDR.  */
102
 
103
#ifndef LONGEST
104
 
105
#ifdef BFD64
106
 
107
#define LONGEST BFD_HOST_64_BIT
108
#define ULONGEST BFD_HOST_U_64_BIT
109
 
110
#else /* No BFD64 */
111
 
112
#ifdef CC_HAS_LONG_LONG
113
#define LONGEST long long
114
#define ULONGEST unsigned long long
115
#else
116
#ifdef BFD_HOST_64_BIT
117
/* BFD_HOST_64_BIT is defined for some hosts that don't have long long
118
   (e.g. i386-windows) so try it.  */
119
#define LONGEST BFD_HOST_64_BIT
120
#define ULONGEST BFD_HOST_U_64_BIT
121
#else
122
#define LONGEST long
123
#define ULONGEST unsigned long
124
#endif
125
#endif
126
 
127
#endif /* No BFD64 */
128
 
129
#endif /* ! LONGEST */
130
 
131
#ifndef min
132
#define min(a, b) ((a) < (b) ? (a) : (b))
133
#endif
134
#ifndef max
135
#define max(a, b) ((a) > (b) ? (a) : (b))
136
#endif
137
 
138
/* Macros to do string compares.
139
 
140
   NOTE: cagney/2000-03-14:
141
 
142
   While old code can continue to refer to these macros, new code is
143
   probably better off using strcmp() directly vis: ``strcmp() == 0''
144
   and ``strcmp() != 0''.
145
 
146
   This is because modern compilers can directly inline strcmp()
147
   making the original justification for these macros - avoid function
148
   call overhead by pre-testing the first characters
149
   (``*X==*Y?...:0'') - redundant.
150
 
151
   ``Even if [...] testing the first character does have a modest
152
   performance improvement, I'd rather that whenever a performance
153
   issue is found that we spend the effort on algorithmic
154
   optimizations than micro-optimizing.'' J.T. */
155
 
156
#define STREQ(a,b) (*(a) == *(b) ? !strcmp ((a), (b)) : 0)
157
#define STREQN(a,b,c) (*(a) == *(b) ? !strncmp ((a), (b), (c)) : 0)
158
 
159
/* The character GNU C++ uses to build identifiers that must be unique from
160
   the program's identifiers (such as $this and $$vptr).  */
161
#define CPLUS_MARKER '$'        /* May be overridden to '.' for SysV */
162
 
163
/* Check if a character is one of the commonly used C++ marker characters.  */
164
extern int is_cplus_marker (int);
165
 
166
/* use tui interface if non-zero */
167
extern int tui_version;
168
 
169
/* enable xdb commands if set */
170
extern int xdb_commands;
171
 
172
/* enable dbx commands if set */
173
extern int dbx_commands;
174
 
175
extern int quit_flag;
176
extern int immediate_quit;
177
extern int sevenbit_strings;
178
 
179
extern void quit (void);
180
 
181
/* FIXME: cagney/2000-03-13: It has been suggested that the peformance
182
   benefits of having a ``QUIT'' macro rather than a function are
183
   marginal.  If the overhead of a QUIT function call is proving
184
   significant then its calling frequency should probably be reduced
185
   [kingdon].  A profile analyzing the current situtation is
186
   needed. */
187
 
188
#ifdef QUIT
189
/* do twice to force compiler warning */
190
#define QUIT_FIXME "FIXME"
191
#define QUIT_FIXME "ignoring redefinition of QUIT"
192
#else
193
#define QUIT { \
194
  if (quit_flag) quit (); \
195
  if (interactive_hook) interactive_hook (); \
196
  PROGRESS (1); \
197
}
198
#endif
199
 
200
/* Languages represented in the symbol table and elsewhere.
201
   This should probably be in language.h, but since enum's can't
202
   be forward declared to satisfy opaque references before their
203
   actual definition, needs to be here. */
204
 
205
enum language
206
  {
207
    language_unknown,           /* Language not known */
208
    language_auto,              /* Placeholder for automatic setting */
209
    language_c,                 /* C */
210
    language_cplus,             /* C++ */
211
    language_java,              /* Java */
212
    /* OBSOLETE language_chill, */      /* Chill */
213
    language_fortran,           /* Fortran */
214
    language_m2,                /* Modula-2 */
215
    language_asm,               /* Assembly language */
216
    language_scm,               /* Scheme / Guile */
217
    language_pascal             /* Pascal */
218
  };
219
 
220
enum precision_type
221
  {
222
    single_precision,
223
    double_precision,
224
    unspecified_precision
225
  };
226
 
227
/* A generic, not quite boolean, enumeration.  */
228
enum auto_boolean
229
{
230
  AUTO_BOOLEAN_TRUE,
231
  AUTO_BOOLEAN_FALSE,
232
  AUTO_BOOLEAN_AUTO
233
};
234
 
235
/* the cleanup list records things that have to be undone
236
   if an error happens (descriptors to be closed, memory to be freed, etc.)
237
   Each link in the chain records a function to call and an
238
   argument to give it.
239
 
240
   Use make_cleanup to add an element to the cleanup chain.
241
   Use do_cleanups to do all cleanup actions back to a given
242
   point in the chain.  Use discard_cleanups to remove cleanups
243
   from the chain back to a given point, not doing them.  */
244
 
245
struct cleanup
246
  {
247
    struct cleanup *next;
248
    void (*function) (PTR);
249
    PTR arg;
250
  };
251
 
252
 
253
/* The ability to declare that a function never returns is useful, but
254
   not really required to compile GDB successfully, so the NORETURN and
255
   ATTR_NORETURN macros normally expand into nothing.  */
256
 
257
/* If compiling with older versions of GCC, a function may be declared
258
   "volatile" to indicate that it does not return.  */
259
 
260
#ifndef NORETURN
261
#if defined(__GNUC__) \
262
     && (__GNUC__ == 1 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7))
263
#define NORETURN volatile
264
#else
265
#define NORETURN                /* nothing */
266
#endif
267
#endif
268
 
269
/* GCC 2.5 and later versions define a function attribute "noreturn",
270
   which is the preferred way to declare that a function never returns.
271
   However GCC 2.7 appears to be the first version in which this fully
272
   works everywhere we use it. */
273
 
274
#ifndef ATTR_NORETURN
275
#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
276
#define ATTR_NORETURN __attribute__ ((noreturn))
277
#else
278
#define ATTR_NORETURN           /* nothing */
279
#endif
280
#endif
281
 
282
#ifndef ATTR_FORMAT
283
#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4))
284
#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y)))
285
#else
286
#define ATTR_FORMAT(type, x, y) /* nothing */
287
#endif
288
#endif
289
 
290
/* Needed for various prototypes */
291
 
292
struct symtab;
293
struct breakpoint;
294
 
295
/* From blockframe.c */
296
 
297
extern int inside_entry_func (CORE_ADDR);
298
 
299
extern int inside_entry_file (CORE_ADDR addr);
300
 
301
extern int inside_main_func (CORE_ADDR pc);
302
 
303
/* OBSOLETE From ch-lang.c, for the moment. (FIXME) */
304
 
305
/* OBSOLETE extern char *chill_demangle (const char *); */
306
 
307
/* From utils.c */
308
 
309
extern void initialize_utils (void);
310
 
311
extern void notice_quit (void);
312
 
313
extern int strcmp_iw (const char *, const char *);
314
 
315
extern int subset_compare (char *, char *);
316
 
317
extern char *safe_strerror (int);
318
 
319
extern void init_malloc (void *);
320
 
321
extern void request_quit (int);
322
 
323
extern void do_cleanups (struct cleanup *);
324
extern void do_final_cleanups (struct cleanup *);
325
extern void do_my_cleanups (struct cleanup **, struct cleanup *);
326
extern void do_run_cleanups (struct cleanup *);
327
extern void do_exec_cleanups (struct cleanup *);
328
extern void do_exec_error_cleanups (struct cleanup *);
329
 
330
extern void discard_cleanups (struct cleanup *);
331
extern void discard_final_cleanups (struct cleanup *);
332
extern void discard_exec_error_cleanups (struct cleanup *);
333
extern void discard_my_cleanups (struct cleanup **, struct cleanup *);
334
 
335
/* NOTE: cagney/2000-03-04: This typedef is strictly for the
336
   make_cleanup function declarations below. Do not use this typedef
337
   as a cast when passing functions into the make_cleanup() code.
338
   Instead either use a bounce function or add a wrapper function.
339
   Calling a f(char*) function with f(void*) is non-portable. */
340
typedef void (make_cleanup_ftype) (void *);
341
 
342
extern struct cleanup *make_cleanup (make_cleanup_ftype *, void *);
343
 
344
extern struct cleanup *make_cleanup_freeargv (char **);
345
 
346
struct ui_file;
347
extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
348
 
349
extern struct cleanup *make_cleanup_close (int fd);
350
 
351
extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
352
 
353
extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
354
 
355
extern struct cleanup *make_my_cleanup (struct cleanup **,
356
                                        make_cleanup_ftype *, void *);
357
 
358
extern struct cleanup *make_run_cleanup (make_cleanup_ftype *, void *);
359
 
360
extern struct cleanup *make_exec_cleanup (make_cleanup_ftype *, void *);
361
extern struct cleanup *make_exec_error_cleanup (make_cleanup_ftype *, void *);
362
 
363
extern struct cleanup *save_cleanups (void);
364
extern struct cleanup *save_final_cleanups (void);
365
extern struct cleanup *save_my_cleanups (struct cleanup **);
366
 
367
extern void restore_cleanups (struct cleanup *);
368
extern void restore_final_cleanups (struct cleanup *);
369
extern void restore_my_cleanups (struct cleanup **, struct cleanup *);
370
 
371
extern void free_current_contents (void *);
372
 
373
extern void null_cleanup (void *);
374
 
375
extern int myread (int, char *, int);
376
 
377
extern int query (const char *, ...) ATTR_FORMAT (printf, 1, 2);
378
 
379
extern void init_page_info (void);
380
 
381
extern CORE_ADDR host_pointer_to_address (void *ptr);
382
extern void *address_to_host_pointer (CORE_ADDR addr);
383
 
384
extern char *gdb_realpath (const char *);
385
extern char *xfullpath (const char *);
386
 
387
/* From demangle.c */
388
 
389
extern void set_demangling_style (char *);
390
 
391
/* From tm.h */
392
 
393
struct type;
394
typedef int (use_struct_convention_fn) (int gcc_p, struct type * value_type);
395
extern use_struct_convention_fn generic_use_struct_convention;
396
 
397
 
398
/* Annotation stuff.  */
399
 
400
extern int annotation_level;    /* in stack.c */
401
 
402
extern void begin_line (void);
403
 
404
extern void wrap_here (char *);
405
 
406
extern void reinitialize_more_filter (void);
407
 
408
/* Normal results */
409
extern struct ui_file *gdb_stdout;
410
/* Serious error notifications */
411
extern struct ui_file *gdb_stderr;
412
/* Log/debug/trace messages that should bypass normal stdout/stderr
413
   filtering.  For momement, always call this stream using
414
   *_unfiltered. In the very near future that restriction shall be
415
   removed - either call shall be unfiltered. (cagney 1999-06-13). */
416
extern struct ui_file *gdb_stdlog;
417
/* Target output that should bypass normal stdout/stderr filtering.
418
   For momement, always call this stream using *_unfiltered. In the
419
   very near future that restriction shall be removed - either call
420
   shall be unfiltered. (cagney 1999-07-02). */
421
extern struct ui_file *gdb_stdtarg;
422
 
423
#if defined(TUI)
424
#include "tui.h"
425
#endif
426
 
427
#include "ui-file.h"
428
 
429
/* More generic printf like operations.  Filtered versions may return
430
   non-locally on error.  */
431
 
432
extern void fputs_filtered (const char *, struct ui_file *);
433
 
434
extern void fputs_unfiltered (const char *, struct ui_file *);
435
 
436
extern int fputc_filtered (int c, struct ui_file *);
437
 
438
extern int fputc_unfiltered (int c, struct ui_file *);
439
 
440
extern int putchar_filtered (int c);
441
 
442
extern int putchar_unfiltered (int c);
443
 
444
extern void puts_filtered (const char *);
445
 
446
extern void puts_unfiltered (const char *);
447
 
448
extern void puts_debug (char *prefix, char *string, char *suffix);
449
 
450
extern void vprintf_filtered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
451
 
452
extern void vfprintf_filtered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0);
453
 
454
extern void fprintf_filtered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3);
455
 
456
extern void fprintfi_filtered (int, struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 3, 4);
457
 
458
extern void printf_filtered (const char *, ...) ATTR_FORMAT (printf, 1, 2);
459
 
460
extern void printfi_filtered (int, const char *, ...) ATTR_FORMAT (printf, 2, 3);
461
 
462
extern void vprintf_unfiltered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
463
 
464
extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0);
465
 
466
extern void fprintf_unfiltered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3);
467
 
468
extern void printf_unfiltered (const char *, ...) ATTR_FORMAT (printf, 1, 2);
469
 
470
extern void print_spaces (int, struct ui_file *);
471
 
472
extern void print_spaces_filtered (int, struct ui_file *);
473
 
474
extern char *n_spaces (int);
475
 
476
extern void fputstr_filtered (const char *str, int quotr, struct ui_file * stream);
477
 
478
extern void fputstr_unfiltered (const char *str, int quotr, struct ui_file * stream);
479
 
480
extern void fputstrn_unfiltered (const char *str, int n, int quotr, struct ui_file * stream);
481
 
482
/* Display the host ADDR on STREAM formatted as ``0x%x''. */
483
extern void gdb_print_host_address (void *addr, struct ui_file *stream);
484
 
485
/* Convert a CORE_ADDR into a HEX string.  paddr() is like %08lx.
486
   paddr_nz() is like %lx.  paddr_u() is like %lu. paddr_width() is
487
   for ``%*''. */
488
extern int strlen_paddr (void);
489
extern char *paddr (CORE_ADDR addr);
490
extern char *paddr_nz (CORE_ADDR addr);
491
extern char *paddr_u (CORE_ADDR addr);
492
extern char *paddr_d (LONGEST addr);
493
 
494
extern char *phex (ULONGEST l, int sizeof_l);
495
extern char *phex_nz (ULONGEST l, int sizeof_l);
496
 
497
/* Like paddr() only print/scan raw CORE_ADDR.  The output from
498
   core_addr_to_string() can be passed direct to
499
   string_to_core_addr().  */
500
extern const char *core_addr_to_string (const CORE_ADDR addr);
501
extern const char *core_addr_to_string_nz (const CORE_ADDR addr);
502
extern CORE_ADDR string_to_core_addr (const char *my_string);
503
 
504
extern void fprintf_symbol_filtered (struct ui_file *, char *,
505
                                     enum language, int);
506
 
507
extern NORETURN void perror_with_name (const char *) ATTR_NORETURN;
508
 
509
extern void print_sys_errmsg (const char *, int);
510
 
511
/* From regex.c or libc.  BSD 4.4 declares this with the argument type as
512
   "const char *" in unistd.h, so we can't declare the argument
513
   as "char *".  */
514
 
515
extern char *re_comp (const char *);
516
 
517
/* From symfile.c */
518
 
519
extern void symbol_file_command (char *, int);
520
 
521
/* Remote targets may wish to use this as their load function.  */
522
extern void generic_load (char *name, int from_tty);
523
 
524
/* Summarise a download */
525
extern void print_transfer_performance (struct ui_file *stream,
526
                                        unsigned long data_count,
527
                                        unsigned long write_count,
528
                                        unsigned long time_count);
529
 
530
/* From top.c */
531
 
532
typedef void initialize_file_ftype (void);
533
 
534
extern char *skip_quoted (char *);
535
 
536
extern char *gdb_readline (char *);
537
 
538
extern char *gdb_readline_wrapper (char *);
539
 
540
extern char *command_line_input (char *, int, char *);
541
 
542
extern void print_prompt (void);
543
 
544
extern int input_from_terminal_p (void);
545
 
546
extern int info_verbose;
547
 
548
/* From printcmd.c */
549
 
550
extern void set_next_address (CORE_ADDR);
551
 
552
extern void print_address_symbolic (CORE_ADDR, struct ui_file *, int,
553
                                    char *);
554
 
555
extern int build_address_symbolic (CORE_ADDR addr,
556
                                   int do_demangle,
557
                                   char **name,
558
                                   int *offset,
559
                                   char **filename,
560
                                   int *line,
561
                                   int *unmapped);
562
 
563
extern void print_address_numeric (CORE_ADDR, int, struct ui_file *);
564
 
565
extern void print_address (CORE_ADDR, struct ui_file *);
566
 
567
/* From source.c */
568
 
569
extern int openp (const char *, int, const char *, int, int, char **);
570
 
571
extern int source_full_path_of (char *, char **);
572
 
573
extern void mod_path (char *, char **);
574
 
575
extern void directory_command (char *, int);
576
 
577
extern void init_source_path (void);
578
 
579
extern char *symtab_to_filename (struct symtab *);
580
 
581
/* From exec.c */
582
 
583
extern void exec_set_section_offsets (bfd_signed_vma text_off,
584
                                      bfd_signed_vma data_off,
585
                                      bfd_signed_vma bss_off);
586
 
587
/* Take over the 'find_mapped_memory' vector from exec.c. */
588
extern void exec_set_find_memory_regions (int (*) (int (*) (CORE_ADDR,
589
                                                            unsigned long,
590
                                                            int, int, int,
591
                                                            void *),
592
                                                   void *));
593
 
594
/* Possible lvalue types.  Like enum language, this should be in
595
   value.h, but needs to be here for the same reason. */
596
 
597
enum lval_type
598
  {
599
    /* Not an lval. */
600
    not_lval,
601
    /* In memory.  Could be a saved register.  */
602
    lval_memory,
603
    /* In a register.  */
604
    lval_register,
605
    /* In a gdb internal variable.  */
606
    lval_internalvar,
607
    /* Part of a gdb internal variable (structure field).  */
608
    lval_internalvar_component,
609
    /* In a register series in a frame not the current one, which may have been
610
       partially saved or saved in different places (otherwise would be
611
       lval_register or lval_memory).  */
612
    lval_reg_frame_relative
613
  };
614
 
615
struct frame_info;
616
 
617
/* From readline (but not in any readline .h files).  */
618
 
619
extern char *tilde_expand (char *);
620
 
621
/* Control types for commands */
622
 
623
enum misc_command_type
624
  {
625
    ok_command,
626
    end_command,
627
    else_command,
628
    nop_command
629
  };
630
 
631
enum command_control_type
632
  {
633
    simple_control,
634
    break_control,
635
    continue_control,
636
    while_control,
637
    if_control,
638
    invalid_control
639
  };
640
 
641
/* Structure for saved commands lines
642
   (for breakpoints, defined commands, etc).  */
643
 
644
struct command_line
645
  {
646
    struct command_line *next;
647
    char *line;
648
    enum command_control_type control_type;
649
    int body_count;
650
    struct command_line **body_list;
651
  };
652
 
653
extern struct command_line *read_command_lines (char *, int);
654
 
655
extern void free_command_lines (struct command_line **);
656
 
657
/* To continue the execution commands when running gdb asynchronously.
658
   A continuation structure contains a pointer to a function to be called
659
   to finish the command, once the target has stopped. Such mechanism is
660
   used bt the finish and until commands, and in the remote protocol
661
   when opening an extended-remote connection. */
662
 
663
struct continuation_arg
664
  {
665
    struct continuation_arg *next;
666
    union continuation_data {
667
      void *pointer;
668
      int   integer;
669
      long  longint;
670
    } data;
671
  };
672
 
673
struct continuation
674
  {
675
    void (*continuation_hook) (struct continuation_arg *);
676
    struct continuation_arg *arg_list;
677
    struct continuation *next;
678
  };
679
 
680
/* In infrun.c. */
681
extern struct continuation *cmd_continuation;
682
/* Used only by the step_1 function. */
683
extern struct continuation *intermediate_continuation;
684
 
685
/* From utils.c */
686
extern void add_continuation (void (*)(struct continuation_arg *),
687
                              struct continuation_arg *);
688
extern void do_all_continuations (void);
689
extern void discard_all_continuations (void);
690
 
691
extern void add_intermediate_continuation (void (*)(struct continuation_arg *),
692
                              struct continuation_arg *);
693
extern void do_all_intermediate_continuations (void);
694
extern void discard_all_intermediate_continuations (void);
695
 
696
/* String containing the current directory (what getwd would return).  */
697
 
698
extern char *current_directory;
699
 
700
/* Default radixes for input and output.  Only some values supported.  */
701
extern unsigned input_radix;
702
extern unsigned output_radix;
703
 
704
/* Possibilities for prettyprint parameters to routines which print
705
   things.  Like enum language, this should be in value.h, but needs
706
   to be here for the same reason.  FIXME:  If we can eliminate this
707
   as an arg to LA_VAL_PRINT, then we can probably move it back to
708
   value.h. */
709
 
710
enum val_prettyprint
711
  {
712
    Val_no_prettyprint = 0,
713
    Val_prettyprint,
714
    /* Use the default setting which the user has specified.  */
715
    Val_pretty_default
716
  };
717
 
718
/* The ptid struct is a collection of the various "ids" necessary
719
   for identifying the inferior.  This consists of the process id
720
   (pid), thread id (tid), and other fields necessary for uniquely
721
   identifying the inferior process/thread being debugged.  When
722
   manipulating ptids, the constructors, accessors, and predicate
723
   declared in inferior.h should be used.  These are as follows:
724
 
725
      ptid_build        - Make a new ptid from a pid, lwp, and tid.
726
      pid_to_ptid       - Make a new ptid from just a pid.
727
      ptid_get_pid      - Fetch the pid component of a ptid.
728
      ptid_get_lwp      - Fetch the lwp component of a ptid.
729
      ptid_get_tid      - Fetch the tid component of a ptid.
730
      ptid_equal        - Test to see if two ptids are equal.
731
 
732
   Please do NOT access the struct ptid members directly (except, of
733
   course, in the implementation of the above ptid manipulation
734
   functions).  */
735
 
736
struct ptid
737
  {
738
    /* Process id */
739
    int pid;
740
 
741
    /* Lightweight process id */
742
    long lwp;
743
 
744
    /* Thread id */
745
    long tid;
746
  };
747
 
748
typedef struct ptid ptid_t;
749
 
750
 
751
 
752
/* Optional host machine definition.  Pure autoconf targets will not
753
   need a "xm.h" file.  This will be a symlink to one of the xm-*.h
754
   files, built by the `configure' script.  */
755
 
756
#ifdef GDB_XM_FILE
757
#include "xm.h"
758
#endif
759
 
760
/* Optional native machine support.  Non-native (and possibly pure
761
   multi-arch) targets do not need a "nm.h" file.  This will be a
762
   symlink to one of the nm-*.h files, built by the `configure'
763
   script.  */
764
 
765
#ifdef GDB_NM_FILE
766
#include "nm.h"
767
#endif
768
 
769
/* Optional target machine definition.  Pure multi-arch configurations
770
   do not need a "tm.h" file.  This will be a symlink to one of the
771
   tm-*.h files, built by the `configure' script.  */
772
 
773
#ifdef GDB_TM_FILE
774
#include "tm.h"
775
#endif
776
 
777
/* GDB_MULTI_ARCH is normally set by configure.in using information
778
   from configure.tgt or the config/%/%.mt Makefile fragment.  Since
779
   some targets have defined it in their "tm.h" file, delay providing
780
   a default definition until after "tm.h" has been included.. */
781
 
782
#ifndef GDB_MULTI_ARCH
783
#define GDB_MULTI_ARCH 0
784
#endif
785
 
786
 
787
/* If the xm.h file did not define the mode string used to open the
788
   files, assume that binary files are opened the same way as text
789
   files */
790
#ifndef FOPEN_RB
791
#include "fopen-same.h"
792
#endif
793
 
794
/* Defaults for system-wide constants (if not defined by xm.h, we fake it).
795
   FIXME: Assumes 2's complement arithmetic */
796
 
797
#if !defined (UINT_MAX)
798
#define UINT_MAX ((unsigned int)(~0))   /* 0xFFFFFFFF for 32-bits */
799
#endif
800
 
801
#if !defined (INT_MAX)
802
#define INT_MAX ((int)(UINT_MAX >> 1))  /* 0x7FFFFFFF for 32-bits */
803
#endif
804
 
805
#if !defined (INT_MIN)
806
#define INT_MIN ((int)((int) ~0 ^ INT_MAX))     /* 0x80000000 for 32-bits */
807
#endif
808
 
809
#if !defined (ULONG_MAX)
810
#define ULONG_MAX ((unsigned long)(~0L))        /* 0xFFFFFFFF for 32-bits */
811
#endif
812
 
813
#if !defined (LONG_MAX)
814
#define LONG_MAX ((long)(ULONG_MAX >> 1))       /* 0x7FFFFFFF for 32-bits */
815
#endif
816
 
817
#if !defined (ULONGEST_MAX)
818
#define ULONGEST_MAX (~(ULONGEST)0)        /* 0xFFFFFFFFFFFFFFFF for 64-bits */
819
#endif
820
 
821
#if !defined (LONGEST_MAX)                 /* 0x7FFFFFFFFFFFFFFF for 64-bits */
822
#define LONGEST_MAX ((LONGEST)(ULONGEST_MAX >> 1))
823
#endif
824
 
825
/* Convert a LONGEST to an int.  This is used in contexts (e.g. number of
826
   arguments to a function, number in a value history, register number, etc.)
827
   where the value must not be larger than can fit in an int.  */
828
 
829
extern int longest_to_int (LONGEST);
830
 
831
/* Assorted functions we can declare, now that const and volatile are
832
   defined.  */
833
 
834
extern char *savestring (const char *, size_t);
835
 
836
extern char *msavestring (void *, const char *, size_t);
837
 
838
extern char *mstrsave (void *, const char *);
839
 
840
/* Robust versions of same.  Throw an internal error when no memory,
841
   guard against stray NULL arguments. */
842
extern void *xmmalloc (void *md, size_t size);
843
extern void *xmrealloc (void *md, void *ptr, size_t size);
844
extern void *xmcalloc (void *md, size_t number, size_t size);
845
extern void xmfree (void *md, void *ptr);
846
 
847
/* xmalloc(), xrealloc() and xcalloc() have already been declared in
848
   "libiberty.h". */
849
extern void xfree (void *);
850
 
851
/* Utility macros to allocate typed memory.  Avoids errors like
852
   ``struct foo *foo = xmalloc (sizeof bar)'' and ``struct foo *foo =
853
   (struct foo *) xmalloc (sizeof bar)''.  */
854
#define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
855
#define XCALLOC(NMEMB, TYPE) ((TYPE*) xcalloc ((NMEMB), sizeof (TYPE)))
856
 
857
/* Like asprintf/vasprintf but get an internal_error if the call
858
   fails. */
859
extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3);
860
extern void xvasprintf (char **ret, const char *format, va_list ap);
861
 
862
extern int parse_escape (char **);
863
 
864
/* Message to be printed before the error message, when an error occurs.  */
865
 
866
extern char *error_pre_print;
867
 
868
/* Message to be printed before the error message, when an error occurs.  */
869
 
870
extern char *quit_pre_print;
871
 
872
/* Message to be printed before the warning message, when a warning occurs.  */
873
 
874
extern char *warning_pre_print;
875
 
876
extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
877
 
878
extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
879
 
880
extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
881
 
882
/* Returns a freshly allocate buffer containing the last error
883
   message.  */
884
extern char *error_last_message (void);
885
 
886
extern NORETURN void internal_verror (const char *file, int line,
887
                                      const char *, va_list ap) ATTR_NORETURN;
888
 
889
extern NORETURN void internal_error (const char *file, int line,
890
                                     const char *, ...) ATTR_NORETURN ATTR_FORMAT (printf, 3, 4);
891
 
892
extern NORETURN void nomem (long) ATTR_NORETURN;
893
 
894
/* Reasons for calling throw_exception().  NOTE: all reason values
895
   must be less than zero.  enum value 0 is reserved for internal use
896
   as the return value from an initial setjmp().  The function
897
   catch_exceptions() reserves values >= 0 as legal results from its
898
   wrapped function.  */
899
 
900
enum return_reason
901
  {
902
    /* User interrupt.  */
903
    RETURN_QUIT = -2,
904
    /* Any other error.  */
905
    RETURN_ERROR
906
  };
907
 
908
#define ALL_CLEANUPS    ((struct cleanup *)0)
909
 
910
#define RETURN_MASK(reason)     (1 << (int)(-reason))
911
#define RETURN_MASK_QUIT        RETURN_MASK (RETURN_QUIT)
912
#define RETURN_MASK_ERROR       RETURN_MASK (RETURN_ERROR)
913
#define RETURN_MASK_ALL         (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
914
typedef int return_mask;
915
 
916
/* Throw an exception of type RETURN_REASON.  Will execute a LONG JUMP
917
   to the inner most containing exception handler established using
918
   catch_exceptions() (or the legacy catch_errors()).
919
 
920
   Code normally throws an exception using error() et.al.  For various
921
   reaons, GDB also contains code that throws an exception directly.
922
   For instance, the remote*.c targets contain CNTRL-C signal handlers
923
   that propogate the QUIT event up the exception chain.  ``This could
924
   be a good thing or a dangerous thing.'' -- the Existential Wombat.  */
925
 
926
extern NORETURN void throw_exception (enum return_reason) ATTR_NORETURN;
927
 
928
/* Call FUNC(UIOUT, FUNC_ARGS) but wrapped within an exception
929
   handler.  If an exception (enum return_reason) is thrown using
930
   throw_exception() than all cleanups installed since
931
   catch_exceptions() was entered are invoked, the (-ve) exception
932
   value is then returned by catch_exceptions.  If FUNC() returns
933
   normally (with a postive or zero return value) then that value is
934
   returned by catch_exceptions().  It is an internal_error() for
935
   FUNC() to return a negative value.
936
 
937
   For the period of the FUNC() call: UIOUT is installed as the output
938
   builder; ERRSTRING is installed as the error/quit message; and a
939
   new cleanup_chain is established.  The old values are restored
940
   before catch_exceptions() returns.
941
 
942
   FIXME; cagney/2001-08-13: The need to override the global UIOUT
943
   builder variable should just go away.
944
 
945
   This function superseeds catch_errors().
946
 
947
   This function uses SETJMP() and LONGJUMP().  */
948
 
949
struct ui_out;
950
typedef int (catch_exceptions_ftype) (struct ui_out *ui_out, void *args);
951
extern int catch_exceptions (struct ui_out *uiout,
952
                             catch_exceptions_ftype *func, void *func_args,
953
                             char *errstring, return_mask mask);
954
 
955
/* If CATCH_ERRORS_FTYPE throws an error, catch_errors() returns zero
956
   otherwize the result from CATCH_ERRORS_FTYPE is returned. It is
957
   probably useful for CATCH_ERRORS_FTYPE to always return a non-zero
958
   value. It's unfortunate that, catch_errors() does not return an
959
   indication of the exact exception that it caught - quit_flag might
960
   help.
961
 
962
   This function is superseeded by catch_exceptions().  */
963
 
964
typedef int (catch_errors_ftype) (PTR);
965
extern int catch_errors (catch_errors_ftype *, void *, char *, return_mask);
966
 
967
/* Template to catch_errors() that wraps calls to command
968
   functions. */
969
 
970
typedef void (catch_command_errors_ftype) (char *, int);
971
extern int catch_command_errors (catch_command_errors_ftype *func, char *command, int from_tty, return_mask);
972
 
973
extern void warning (const char *, ...) ATTR_FORMAT (printf, 1, 2);
974
 
975
extern void vwarning (const char *, va_list args);
976
 
977
/* Global functions from other, non-gdb GNU thingies.
978
   Libiberty thingies are no longer declared here.  We include libiberty.h
979
   above, instead.  */
980
 
981
#ifndef GETENV_PROVIDED
982
extern char *getenv (const char *);
983
#endif
984
 
985
/* From other system libraries */
986
 
987
#ifdef HAVE_STDDEF_H
988
#include <stddef.h>
989
#endif
990
 
991
#ifdef HAVE_STDLIB_H
992
#include <stdlib.h>
993
#endif
994
#ifndef min
995
#define min(a, b) ((a) < (b) ? (a) : (b))
996
#endif
997
#ifndef max
998
#define max(a, b) ((a) > (b) ? (a) : (b))
999
#endif
1000
 
1001
 
1002
/* We take the address of fclose later, but some stdio's forget
1003
   to declare this.  We can't always declare it since there's
1004
   no way to declare the parameters without upsetting some compiler
1005
   somewhere. */
1006
 
1007
#ifndef FCLOSE_PROVIDED
1008
extern int fclose (FILE *);
1009
#endif
1010
 
1011
#ifndef atof
1012
extern double atof (const char *);      /* X3.159-1989  4.10.1.1 */
1013
#endif
1014
 
1015
/* Various possibilities for alloca.  */
1016
#ifndef alloca
1017
#ifdef __GNUC__
1018
#define alloca __builtin_alloca
1019
#else /* Not GNU C */
1020
#ifdef HAVE_ALLOCA_H
1021
#include <alloca.h>
1022
#else
1023
#ifdef _AIX
1024
#pragma alloca
1025
#else
1026
 
1027
/* We need to be careful not to declare this in a way which conflicts with
1028
   bison.  Bison never declares it as char *, but under various circumstances
1029
   (like __hpux) we need to use void *.  */
1030
extern void *alloca ();
1031
#endif /* Not _AIX */
1032
#endif /* Not HAVE_ALLOCA_H */
1033
#endif /* Not GNU C */
1034
#endif /* alloca not defined */
1035
 
1036
/* Dynamic target-system-dependent parameters for GDB. */
1037
#include "gdbarch.h"
1038
#if (GDB_MULTI_ARCH == 0)
1039
/* Multi-arch targets _should_ be including "arch-utils.h" directly
1040
   into their *-tdep.c file.  This is a prop to help old non-
1041
   multi-arch targets to continue to compile. */
1042
#include "arch-utils.h"
1043
#endif
1044
 
1045
/* Static target-system-dependent parameters for GDB. */
1046
 
1047
/* Number of bits in a char or unsigned char for the target machine.
1048
   Just like CHAR_BIT in <limits.h> but describes the target machine.  */
1049
#if !defined (TARGET_CHAR_BIT)
1050
#define TARGET_CHAR_BIT 8
1051
#endif
1052
 
1053
/* If we picked up a copy of CHAR_BIT from a configuration file
1054
   (which may get it by including <limits.h>) then use it to set
1055
   the number of bits in a host char.  If not, use the same size
1056
   as the target. */
1057
 
1058
#if defined (CHAR_BIT)
1059
#define HOST_CHAR_BIT CHAR_BIT
1060
#else
1061
#define HOST_CHAR_BIT TARGET_CHAR_BIT
1062
#endif
1063
 
1064
/* The bit byte-order has to do just with numbering of bits in
1065
   debugging symbols and such.  Conceptually, it's quite separate
1066
   from byte/word byte order.  */
1067
 
1068
#if !defined (BITS_BIG_ENDIAN)
1069
#define BITS_BIG_ENDIAN (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
1070
#endif
1071
 
1072
/* In findvar.c.  */
1073
 
1074
extern LONGEST extract_signed_integer (const void *, int);
1075
 
1076
extern ULONGEST extract_unsigned_integer (const void *, int);
1077
 
1078
extern int extract_long_unsigned_integer (void *, int, LONGEST *);
1079
 
1080
extern CORE_ADDR extract_address (void *, int);
1081
 
1082
extern CORE_ADDR extract_typed_address (void *buf, struct type *type);
1083
 
1084
extern void store_signed_integer (void *, int, LONGEST);
1085
 
1086
extern void store_unsigned_integer (void *, int, ULONGEST);
1087
 
1088
extern void store_address (void *, int, LONGEST);
1089
 
1090
extern void store_typed_address (void *buf, struct type *type, CORE_ADDR addr);
1091
 
1092
 
1093
/* From valops.c */
1094
 
1095
extern CORE_ADDR push_bytes (CORE_ADDR, char *, int);
1096
 
1097
extern CORE_ADDR push_word (CORE_ADDR, ULONGEST);
1098
 
1099
extern int watchdog;
1100
 
1101
/* Hooks for alternate command interfaces.  */
1102
 
1103
/* The name of the interpreter if specified on the command line. */
1104
extern char *interpreter_p;
1105
 
1106
/* If a given interpreter matches INTERPRETER_P then it should update
1107
   command_loop_hook and init_ui_hook with the per-interpreter
1108
   implementation. */
1109
/* FIXME: command_loop_hook and init_ui_hook should be moved here. */
1110
 
1111
struct target_waitstatus;
1112
struct cmd_list_element;
1113
 
1114
/* Should the asynchronous variant of the interpreter (using the
1115
   event-loop) be enabled? */
1116
extern int event_loop_p;
1117
 
1118
extern void (*init_ui_hook) (char *argv0);
1119
extern void (*command_loop_hook) (void);
1120
extern void (*show_load_progress) (const char *section,
1121
                                   unsigned long section_sent,
1122
                                   unsigned long section_size,
1123
                                   unsigned long total_sent,
1124
                                   unsigned long total_size);
1125
extern void (*print_frame_info_listing_hook) (struct symtab * s,
1126
                                              int line, int stopline,
1127
                                              int noerror);
1128
extern struct frame_info *parse_frame_specification (char *frame_exp);
1129
extern int (*query_hook) (const char *, va_list);
1130
extern void (*warning_hook) (const char *, va_list);
1131
extern void (*flush_hook) (struct ui_file * stream);
1132
extern void (*create_breakpoint_hook) (struct breakpoint * b);
1133
extern void (*delete_breakpoint_hook) (struct breakpoint * bpt);
1134
extern void (*modify_breakpoint_hook) (struct breakpoint * bpt);
1135
extern void (*interactive_hook) (void);
1136
extern void (*registers_changed_hook) (void);
1137
extern void (*readline_begin_hook) (char *,...);
1138
extern char *(*readline_hook) (char *);
1139
extern void (*readline_end_hook) (void);
1140
extern void (*register_changed_hook) (int regno);
1141
extern void (*memory_changed_hook) (CORE_ADDR addr, int len);
1142
extern void (*context_hook) (int);
1143
extern ptid_t (*target_wait_hook) (ptid_t ptid,
1144
                                         struct target_waitstatus * status);
1145
 
1146
extern void (*attach_hook) (void);
1147
extern void (*detach_hook) (void);
1148
extern void (*call_command_hook) (struct cmd_list_element * c,
1149
                                  char *cmd, int from_tty);
1150
 
1151
extern void (*set_hook) (struct cmd_list_element * c);
1152
 
1153
extern NORETURN void (*error_hook) (void) ATTR_NORETURN;
1154
 
1155
extern void (*error_begin_hook) (void);
1156
 
1157
extern int (*ui_load_progress_hook) (const char *section, unsigned long num);
1158
 
1159
 
1160
/* Inhibit window interface if non-zero. */
1161
 
1162
extern int use_windows;
1163
 
1164
/* Symbolic definitions of filename-related things.  */
1165
/* FIXME, this doesn't work very well if host and executable
1166
   filesystems conventions are different.  */
1167
 
1168
#ifndef DIRNAME_SEPARATOR
1169
#define DIRNAME_SEPARATOR ':'
1170
#endif
1171
 
1172
#ifndef SLASH_STRING
1173
#define SLASH_STRING "/"
1174
#endif
1175
 
1176
#ifdef __MSDOS__
1177
# define CANT_FORK
1178
# define GLOBAL_CURDIR
1179
#endif
1180
 
1181
/* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
1182
   The name ``TIDGET'' is a historical accident.  Many uses of TIDGET
1183
   in the code actually refer to a lightweight process id, i.e,
1184
   something that can be considered a process id in its own right for
1185
   certain purposes.  */
1186
 
1187
#ifndef PIDGET
1188
#define PIDGET(PTID) (ptid_get_pid (PTID))
1189
#define TIDGET(PTID) (ptid_get_lwp (PTID))
1190
#define MERGEPID(PID, TID) ptid_build (PID, TID, 0)
1191
#endif
1192
 
1193
/* Define well known filenos if the system does not define them.  */
1194
#ifndef STDIN_FILENO
1195
#define STDIN_FILENO   0
1196
#endif
1197
#ifndef STDOUT_FILENO
1198
#define STDOUT_FILENO  1
1199
#endif
1200
#ifndef STDERR_FILENO
1201
#define STDERR_FILENO  2
1202
#endif
1203
 
1204
/* If this definition isn't overridden by the header files, assume
1205
   that isatty and fileno exist on this system.  */
1206
#ifndef ISATTY
1207
#define ISATTY(FP)      (isatty (fileno (FP)))
1208
#endif
1209
 
1210
#endif /* #ifndef DEFS_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.