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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.2/] [gdb/] [defs.h] - Blame information for rev 330

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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