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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [gdb/] [defs.h] - Blame information for rev 578

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

Line No. Rev Author Line
1 578 markom
/* *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
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
/* Just in case they're not defined in stdio.h. */
43
 
44
#ifndef SEEK_SET
45
#define SEEK_SET 0
46
#endif
47
#ifndef SEEK_CUR
48
#define SEEK_CUR 1
49
#endif
50
 
51
/* First include ansidecl.h so we can use the various macro definitions
52
   here and in all subsequent file inclusions.  */
53
 
54
#include "ansidecl.h"
55
 
56
#include <stdarg.h>             /* for va_list */
57
 
58
#include "libiberty.h"
59
 
60
#include "progress.h"
61
 
62
#ifdef USE_MMALLOC
63
#include "mmalloc.h"
64
#endif
65
 
66
/* For BFD64 and bfd_vma.  */
67
#include "bfd.h"
68
 
69
 
70
/* The target is partially multi-arched.  Both "tm.h" and the
71
   multi-arch vector provide definitions.  "tm.h" normally overrides
72
   the multi-arch vector (but there are a few exceptions).  */
73
 
74
#define GDB_MULTI_ARCH_PARTIAL 1
75
 
76
/* The target is partially multi-arched. Both the multi-arch vector
77
   and "tm.h" provide definitions. "tm.h" cannot override a definition
78
   provided by the multi-arch vector.  It is detected as a compilation
79
   error.
80
 
81
   This setting is only useful during a multi-arch conversion. */
82
 
83
#define GDB_MULTI_ARCH_TM 2
84
 
85
/* The target is pure multi-arch.  The MULTI-ARCH vector provides all
86
   definitions.  "tm.h" is linked to an empty file. */
87
 
88
#define GDB_MULTI_ARCH_PURE 3
89
 
90
 
91
 
92
/* An address in the program being debugged.  Host byte order.  Rather
93
   than duplicate all the logic in BFD which figures out what type
94
   this is (long, long long, etc.) and whether it needs to be 64
95
   bits (the host/target interactions are subtle), we just use
96
   bfd_vma.  */
97
 
98
typedef bfd_vma CORE_ADDR;
99
 
100
/* This is to make sure that LONGEST is at least as big as CORE_ADDR.  */
101
 
102
#ifndef LONGEST
103
 
104
#ifdef BFD64
105
 
106
#define LONGEST BFD_HOST_64_BIT
107
#define ULONGEST BFD_HOST_U_64_BIT
108
 
109
#else /* No BFD64 */
110
 
111
#ifdef CC_HAS_LONG_LONG
112
#define LONGEST long long
113
#define ULONGEST unsigned long long
114
#else
115
#ifdef BFD_HOST_64_BIT
116
/* BFD_HOST_64_BIT is defined for some hosts that don't have long long
117
   (e.g. i386-windows) so try it.  */
118
#define LONGEST BFD_HOST_64_BIT
119
#define ULONGEST BFD_HOST_U_64_BIT
120
#else
121
#define LONGEST long
122
#define ULONGEST unsigned long
123
#endif
124
#endif
125
 
126
#endif /* No BFD64 */
127
 
128
#endif /* ! LONGEST */
129
 
130
#ifndef min
131
#define min(a, b) ((a) < (b) ? (a) : (b))
132
#endif
133
#ifndef max
134
#define max(a, b) ((a) > (b) ? (a) : (b))
135
#endif
136
 
137
/* Macros to do string compares.
138
 
139
   NOTE: cagney/2000-03-14:
140
 
141
   While old code can continue to refer to these macros, new code is
142
   probably better off using strcmp() directly vis: ``strcmp() == 0''
143
   and ``strcmp() != 0''.
144
 
145
   This is because modern compilers can directly inline strcmp()
146
   making the original justification for these macros - avoid function
147
   call overhead by pre-testing the first characters
148
   (``*X==*Y?...:0'') - redundant.
149
 
150
   ``Even if [...] testing the first character does have a modest
151
   performance improvement, I'd rather that whenever a performance
152
   issue is found that we spend the effort on algorithmic
153
   optimizations than micro-optimizing.'' J.T. */
154
 
155
#define STREQ(a,b) (*(a) == *(b) ? !strcmp ((a), (b)) : 0)
156
#define STREQN(a,b,c) (*(a) == *(b) ? !strncmp ((a), (b), (c)) : 0)
157
 
158
/* The character GNU C++ uses to build identifiers that must be unique from
159
   the program's identifiers (such as $this and $$vptr).  */
160
#define CPLUS_MARKER '$'        /* May be overridden to '.' for SysV */
161
 
162
/* Check if a character is one of the commonly used C++ marker characters.  */
163
extern int is_cplus_marker (int);
164
 
165
/* use tui interface if non-zero */
166
extern int tui_version;
167
 
168
#if defined(TUI)
169
/* all invocations of TUIDO should have two sets of parens */
170
#define TUIDO(x)        tuiDo x
171
#else
172
#define TUIDO(x)
173
#endif
174
 
175
/* enable xdb commands if set */
176
extern int xdb_commands;
177
 
178
/* enable dbx commands if set */
179
extern int dbx_commands;
180
 
181
extern int quit_flag;
182
extern int immediate_quit;
183
extern int sevenbit_strings;
184
 
185
extern void quit (void);
186
 
187
/* FIXME: cagney/2000-03-13: It has been suggested that the peformance
188
   benefits of having a ``QUIT'' macro rather than a function are
189
   marginal.  If the overhead of a QUIT function call is proving
190
   significant then its calling frequency should probably be reduced
191
   [kingdon].  A profile analyzing the current situtation is
192
   needed. */
193
 
194
#ifdef QUIT
195
/* do twice to force compiler warning */
196
#define QUIT_FIXME "FIXME"
197
#define QUIT_FIXME "ignoring redefinition of QUIT"
198
#else
199
#define QUIT { \
200
  if (quit_flag) quit (); \
201
  if (interactive_hook) interactive_hook (); \
202
  PROGRESS (1); \
203
}
204
#endif
205
 
206
/* Languages represented in the symbol table and elsewhere.
207
   This should probably be in language.h, but since enum's can't
208
   be forward declared to satisfy opaque references before their
209
   actual definition, needs to be here. */
210
 
211
enum language
212
  {
213
    language_unknown,           /* Language not known */
214
    language_auto,              /* Placeholder for automatic setting */
215
    language_c,                 /* C */
216
    language_cplus,             /* C++ */
217
    language_java,              /* Java */
218
    language_chill,             /* Chill */
219
    language_fortran,           /* Fortran */
220
    language_m2,                /* Modula-2 */
221
    language_asm,               /* Assembly language */
222
    language_scm,               /* Scheme / Guile */
223
    language_pascal             /* Pascal */
224
  };
225
 
226
enum precision_type
227
  {
228
    single_precision,
229
    double_precision,
230
    unspecified_precision
231
  };
232
 
233
/* The numbering of these signals is chosen to match traditional unix
234
   signals (insofar as various unices use the same numbers, anyway).
235
   It is also the numbering of the GDB remote protocol.  Other remote
236
   protocols, if they use a different numbering, should make sure to
237
   translate appropriately.
238
 
239
   Since these numbers have actually made it out into other software
240
   (stubs, etc.), you mustn't disturb the assigned numbering.  If you
241
   need to add new signals here, add them to the end of the explicitly
242
   numbered signals.
243
 
244
   This is based strongly on Unix/POSIX signals for several reasons:
245
   (1) This set of signals represents a widely-accepted attempt to
246
   represent events of this sort in a portable fashion, (2) we want a
247
   signal to make it from wait to child_wait to the user intact, (3) many
248
   remote protocols use a similar encoding.  However, it is
249
   recognized that this set of signals has limitations (such as not
250
   distinguishing between various kinds of SIGSEGV, or not
251
   distinguishing hitting a breakpoint from finishing a single step).
252
   So in the future we may get around this either by adding additional
253
   signals for breakpoint, single-step, etc., or by adding signal
254
   codes; the latter seems more in the spirit of what BSD, System V,
255
   etc. are doing to address these issues.  */
256
 
257
/* For an explanation of what each signal means, see
258
   target_signal_to_string.  */
259
 
260
enum target_signal
261
  {
262
    /* Used some places (e.g. stop_signal) to record the concept that
263
       there is no signal.  */
264
    TARGET_SIGNAL_0 = 0,
265
    TARGET_SIGNAL_FIRST = 0,
266
    TARGET_SIGNAL_HUP = 1,
267
    TARGET_SIGNAL_INT = 2,
268
    TARGET_SIGNAL_QUIT = 3,
269
    TARGET_SIGNAL_ILL = 4,
270
    TARGET_SIGNAL_TRAP = 5,
271
    TARGET_SIGNAL_ABRT = 6,
272
    TARGET_SIGNAL_EMT = 7,
273
    TARGET_SIGNAL_FPE = 8,
274
    TARGET_SIGNAL_KILL = 9,
275
    TARGET_SIGNAL_BUS = 10,
276
    TARGET_SIGNAL_SEGV = 11,
277
    TARGET_SIGNAL_SYS = 12,
278
    TARGET_SIGNAL_PIPE = 13,
279
    TARGET_SIGNAL_ALRM = 14,
280
    TARGET_SIGNAL_TERM = 15,
281
    TARGET_SIGNAL_URG = 16,
282
    TARGET_SIGNAL_STOP = 17,
283
    TARGET_SIGNAL_TSTP = 18,
284
    TARGET_SIGNAL_CONT = 19,
285
    TARGET_SIGNAL_CHLD = 20,
286
    TARGET_SIGNAL_TTIN = 21,
287
    TARGET_SIGNAL_TTOU = 22,
288
    TARGET_SIGNAL_IO = 23,
289
    TARGET_SIGNAL_XCPU = 24,
290
    TARGET_SIGNAL_XFSZ = 25,
291
    TARGET_SIGNAL_VTALRM = 26,
292
    TARGET_SIGNAL_PROF = 27,
293
    TARGET_SIGNAL_WINCH = 28,
294
    TARGET_SIGNAL_LOST = 29,
295
    TARGET_SIGNAL_USR1 = 30,
296
    TARGET_SIGNAL_USR2 = 31,
297
    TARGET_SIGNAL_PWR = 32,
298
    /* Similar to SIGIO.  Perhaps they should have the same number.  */
299
    TARGET_SIGNAL_POLL = 33,
300
    TARGET_SIGNAL_WIND = 34,
301
    TARGET_SIGNAL_PHONE = 35,
302
    TARGET_SIGNAL_WAITING = 36,
303
    TARGET_SIGNAL_LWP = 37,
304
    TARGET_SIGNAL_DANGER = 38,
305
    TARGET_SIGNAL_GRANT = 39,
306
    TARGET_SIGNAL_RETRACT = 40,
307
    TARGET_SIGNAL_MSG = 41,
308
    TARGET_SIGNAL_SOUND = 42,
309
    TARGET_SIGNAL_SAK = 43,
310
    TARGET_SIGNAL_PRIO = 44,
311
    TARGET_SIGNAL_REALTIME_33 = 45,
312
    TARGET_SIGNAL_REALTIME_34 = 46,
313
    TARGET_SIGNAL_REALTIME_35 = 47,
314
    TARGET_SIGNAL_REALTIME_36 = 48,
315
    TARGET_SIGNAL_REALTIME_37 = 49,
316
    TARGET_SIGNAL_REALTIME_38 = 50,
317
    TARGET_SIGNAL_REALTIME_39 = 51,
318
    TARGET_SIGNAL_REALTIME_40 = 52,
319
    TARGET_SIGNAL_REALTIME_41 = 53,
320
    TARGET_SIGNAL_REALTIME_42 = 54,
321
    TARGET_SIGNAL_REALTIME_43 = 55,
322
    TARGET_SIGNAL_REALTIME_44 = 56,
323
    TARGET_SIGNAL_REALTIME_45 = 57,
324
    TARGET_SIGNAL_REALTIME_46 = 58,
325
    TARGET_SIGNAL_REALTIME_47 = 59,
326
    TARGET_SIGNAL_REALTIME_48 = 60,
327
    TARGET_SIGNAL_REALTIME_49 = 61,
328
    TARGET_SIGNAL_REALTIME_50 = 62,
329
    TARGET_SIGNAL_REALTIME_51 = 63,
330
    TARGET_SIGNAL_REALTIME_52 = 64,
331
    TARGET_SIGNAL_REALTIME_53 = 65,
332
    TARGET_SIGNAL_REALTIME_54 = 66,
333
    TARGET_SIGNAL_REALTIME_55 = 67,
334
    TARGET_SIGNAL_REALTIME_56 = 68,
335
    TARGET_SIGNAL_REALTIME_57 = 69,
336
    TARGET_SIGNAL_REALTIME_58 = 70,
337
    TARGET_SIGNAL_REALTIME_59 = 71,
338
    TARGET_SIGNAL_REALTIME_60 = 72,
339
    TARGET_SIGNAL_REALTIME_61 = 73,
340
    TARGET_SIGNAL_REALTIME_62 = 74,
341
    TARGET_SIGNAL_REALTIME_63 = 75,
342
 
343
    /* Used internally by Solaris threads.  See signal(5) on Solaris.  */
344
    TARGET_SIGNAL_CANCEL = 76,
345
 
346
    /* Yes, this pains me, too.  But LynxOS didn't have SIG32, and now
347
       Linux does, and we can't disturb the numbering, since it's part
348
       of the remote protocol.  Note that in some GDB's
349
       TARGET_SIGNAL_REALTIME_32 is number 76.  */
350
    TARGET_SIGNAL_REALTIME_32,
351
    /* Yet another pain, IRIX 6 has SIG64. */
352
    TARGET_SIGNAL_REALTIME_64,
353
    /* Yet another pain, Linux/MIPS might go up to 128. */
354
    TARGET_SIGNAL_REALTIME_65,
355
    TARGET_SIGNAL_REALTIME_66,
356
    TARGET_SIGNAL_REALTIME_67,
357
    TARGET_SIGNAL_REALTIME_68,
358
    TARGET_SIGNAL_REALTIME_69,
359
    TARGET_SIGNAL_REALTIME_70,
360
    TARGET_SIGNAL_REALTIME_71,
361
    TARGET_SIGNAL_REALTIME_72,
362
    TARGET_SIGNAL_REALTIME_73,
363
    TARGET_SIGNAL_REALTIME_74,
364
    TARGET_SIGNAL_REALTIME_75,
365
    TARGET_SIGNAL_REALTIME_76,
366
    TARGET_SIGNAL_REALTIME_77,
367
    TARGET_SIGNAL_REALTIME_78,
368
    TARGET_SIGNAL_REALTIME_79,
369
    TARGET_SIGNAL_REALTIME_80,
370
    TARGET_SIGNAL_REALTIME_81,
371
    TARGET_SIGNAL_REALTIME_82,
372
    TARGET_SIGNAL_REALTIME_83,
373
    TARGET_SIGNAL_REALTIME_84,
374
    TARGET_SIGNAL_REALTIME_85,
375
    TARGET_SIGNAL_REALTIME_86,
376
    TARGET_SIGNAL_REALTIME_87,
377
    TARGET_SIGNAL_REALTIME_88,
378
    TARGET_SIGNAL_REALTIME_89,
379
    TARGET_SIGNAL_REALTIME_90,
380
    TARGET_SIGNAL_REALTIME_91,
381
    TARGET_SIGNAL_REALTIME_92,
382
    TARGET_SIGNAL_REALTIME_93,
383
    TARGET_SIGNAL_REALTIME_94,
384
    TARGET_SIGNAL_REALTIME_95,
385
    TARGET_SIGNAL_REALTIME_96,
386
    TARGET_SIGNAL_REALTIME_97,
387
    TARGET_SIGNAL_REALTIME_98,
388
    TARGET_SIGNAL_REALTIME_99,
389
    TARGET_SIGNAL_REALTIME_100,
390
    TARGET_SIGNAL_REALTIME_101,
391
    TARGET_SIGNAL_REALTIME_102,
392
    TARGET_SIGNAL_REALTIME_103,
393
    TARGET_SIGNAL_REALTIME_104,
394
    TARGET_SIGNAL_REALTIME_105,
395
    TARGET_SIGNAL_REALTIME_106,
396
    TARGET_SIGNAL_REALTIME_107,
397
    TARGET_SIGNAL_REALTIME_108,
398
    TARGET_SIGNAL_REALTIME_109,
399
    TARGET_SIGNAL_REALTIME_110,
400
    TARGET_SIGNAL_REALTIME_111,
401
    TARGET_SIGNAL_REALTIME_112,
402
    TARGET_SIGNAL_REALTIME_113,
403
    TARGET_SIGNAL_REALTIME_114,
404
    TARGET_SIGNAL_REALTIME_115,
405
    TARGET_SIGNAL_REALTIME_116,
406
    TARGET_SIGNAL_REALTIME_117,
407
    TARGET_SIGNAL_REALTIME_118,
408
    TARGET_SIGNAL_REALTIME_119,
409
    TARGET_SIGNAL_REALTIME_120,
410
    TARGET_SIGNAL_REALTIME_121,
411
    TARGET_SIGNAL_REALTIME_122,
412
    TARGET_SIGNAL_REALTIME_123,
413
    TARGET_SIGNAL_REALTIME_124,
414
    TARGET_SIGNAL_REALTIME_125,
415
    TARGET_SIGNAL_REALTIME_126,
416
    TARGET_SIGNAL_REALTIME_127,
417
 
418
#if defined(MACH) || defined(__MACH__)
419
    /* Mach exceptions */
420
    TARGET_EXC_BAD_ACCESS,
421
    TARGET_EXC_BAD_INSTRUCTION,
422
    TARGET_EXC_ARITHMETIC,
423
    TARGET_EXC_EMULATION,
424
    TARGET_EXC_SOFTWARE,
425
    TARGET_EXC_BREAKPOINT,
426
#endif
427
    TARGET_SIGNAL_INFO,
428
 
429
    /* Some signal we don't know about.  */
430
    TARGET_SIGNAL_UNKNOWN,
431
 
432
    /* Use whatever signal we use when one is not specifically specified
433
       (for passing to proceed and so on).  */
434
    TARGET_SIGNAL_DEFAULT,
435
 
436
    /* Last and unused enum value, for sizing arrays, etc.  */
437
    TARGET_SIGNAL_LAST
438
  };
439
 
440
/* the cleanup list records things that have to be undone
441
   if an error happens (descriptors to be closed, memory to be freed, etc.)
442
   Each link in the chain records a function to call and an
443
   argument to give it.
444
 
445
   Use make_cleanup to add an element to the cleanup chain.
446
   Use do_cleanups to do all cleanup actions back to a given
447
   point in the chain.  Use discard_cleanups to remove cleanups
448
   from the chain back to a given point, not doing them.  */
449
 
450
struct cleanup
451
  {
452
    struct cleanup *next;
453
    void (*function) (PTR);
454
    PTR arg;
455
  };
456
 
457
 
458
/* The ability to declare that a function never returns is useful, but
459
   not really required to compile GDB successfully, so the NORETURN and
460
   ATTR_NORETURN macros normally expand into nothing.  */
461
 
462
/* If compiling with older versions of GCC, a function may be declared
463
   "volatile" to indicate that it does not return.  */
464
 
465
#ifndef NORETURN
466
#if defined(__GNUC__) \
467
     && (__GNUC__ == 1 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7))
468
#define NORETURN volatile
469
#else
470
#define NORETURN                /* nothing */
471
#endif
472
#endif
473
 
474
/* GCC 2.5 and later versions define a function attribute "noreturn",
475
   which is the preferred way to declare that a function never returns.
476
   However GCC 2.7 appears to be the first version in which this fully
477
   works everywhere we use it. */
478
 
479
#ifndef ATTR_NORETURN
480
#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
481
#define ATTR_NORETURN __attribute__ ((noreturn))
482
#else
483
#define ATTR_NORETURN           /* nothing */
484
#endif
485
#endif
486
 
487
#ifndef ATTR_FORMAT
488
#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4))
489
#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y)))
490
#else
491
#define ATTR_FORMAT(type, x, y) /* nothing */
492
#endif
493
#endif
494
 
495
/* Needed for various prototypes */
496
 
497
struct symtab;
498
struct breakpoint;
499
 
500
/* From blockframe.c */
501
 
502
extern int inside_entry_func (CORE_ADDR);
503
 
504
extern int inside_entry_file (CORE_ADDR addr);
505
 
506
extern int inside_main_func (CORE_ADDR pc);
507
 
508
/* From ch-lang.c, for the moment. (FIXME) */
509
 
510
extern char *chill_demangle (const char *);
511
 
512
/* From utils.c */
513
 
514
extern void initialize_utils (void);
515
 
516
extern void notice_quit (void);
517
 
518
extern int strcmp_iw (const char *, const char *);
519
 
520
extern int subset_compare (char *, char *);
521
 
522
extern char *safe_strerror (int);
523
 
524
extern void init_malloc (void *);
525
 
526
extern void request_quit (int);
527
 
528
extern void do_cleanups (struct cleanup *);
529
extern void do_final_cleanups (struct cleanup *);
530
extern void do_my_cleanups (struct cleanup **, struct cleanup *);
531
extern void do_run_cleanups (struct cleanup *);
532
extern void do_exec_cleanups (struct cleanup *);
533
extern void do_exec_error_cleanups (struct cleanup *);
534
 
535
extern void discard_cleanups (struct cleanup *);
536
extern void discard_final_cleanups (struct cleanup *);
537
extern void discard_exec_error_cleanups (struct cleanup *);
538
extern void discard_my_cleanups (struct cleanup **, struct cleanup *);
539
 
540
/* NOTE: cagney/2000-03-04: This typedef is strictly for the
541
   make_cleanup function declarations below. Do not use this typedef
542
   as a cast when passing functions into the make_cleanup() code.
543
   Instead either use a bounce function or add a wrapper function.
544
   Calling a f(char*) function with f(void*) is non-portable. */
545
typedef void (make_cleanup_ftype) (void *);
546
 
547
extern struct cleanup *make_cleanup (make_cleanup_ftype *, void *);
548
 
549
extern struct cleanup *make_cleanup_freeargv (char **);
550
 
551
struct ui_file;
552
extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
553
 
554
extern struct cleanup *make_cleanup_close (int fd);
555
 
556
extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
557
 
558
extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
559
 
560
extern struct cleanup *make_my_cleanup (struct cleanup **,
561
                                        make_cleanup_ftype *, void *);
562
 
563
extern struct cleanup *make_run_cleanup (make_cleanup_ftype *, void *);
564
 
565
extern struct cleanup *make_exec_cleanup (make_cleanup_ftype *, void *);
566
extern struct cleanup *make_exec_error_cleanup (make_cleanup_ftype *, void *);
567
 
568
extern struct cleanup *save_cleanups (void);
569
extern struct cleanup *save_final_cleanups (void);
570
extern struct cleanup *save_my_cleanups (struct cleanup **);
571
 
572
extern void restore_cleanups (struct cleanup *);
573
extern void restore_final_cleanups (struct cleanup *);
574
extern void restore_my_cleanups (struct cleanup **, struct cleanup *);
575
 
576
extern void free_current_contents (void *);
577
 
578
extern void null_cleanup (void *);
579
 
580
extern int myread (int, char *, int);
581
 
582
extern int query (char *, ...) ATTR_FORMAT (printf, 1, 2);
583
 
584
extern void init_page_info (void);
585
 
586
extern CORE_ADDR host_pointer_to_address (void *ptr);
587
extern void *address_to_host_pointer (CORE_ADDR addr);
588
 
589
/* From demangle.c */
590
 
591
extern void set_demangling_style (char *);
592
 
593
/* From tm.h */
594
 
595
struct type;
596
typedef int (use_struct_convention_fn) (int gcc_p, struct type * value_type);
597
extern use_struct_convention_fn generic_use_struct_convention;
598
 
599
typedef unsigned char *(breakpoint_from_pc_fn) (CORE_ADDR * pcptr, int *lenptr);
600
 
601
/* Annotation stuff.  */
602
 
603
extern int annotation_level;    /* in stack.c */
604
 
605
extern void begin_line (void);
606
 
607
extern void wrap_here (char *);
608
 
609
extern void reinitialize_more_filter (void);
610
 
611
/* Normal results */
612
extern struct ui_file *gdb_stdout;
613
/* Serious error notifications */
614
extern struct ui_file *gdb_stderr;
615
/* Log/debug/trace messages that should bypass normal stdout/stderr
616
   filtering.  For momement, always call this stream using
617
   *_unfiltered. In the very near future that restriction shall be
618
   removed - either call shall be unfiltered. (cagney 1999-06-13). */
619
extern struct ui_file *gdb_stdlog;
620
/* Target output that should bypass normal stdout/stderr filtering.
621
   For momement, always call this stream using *_unfiltered. In the
622
   very near future that restriction shall be removed - either call
623
   shall be unfiltered. (cagney 1999-07-02). */
624
extern struct ui_file *gdb_stdtarg;
625
 
626
#if defined(TUI)
627
#include "tui.h"
628
#include "tuiCommand.h"
629
#include "tuiData.h"
630
#include "tuiIO.h"
631
#include "tuiLayout.h"
632
#include "tuiWin.h"
633
#endif
634
 
635
#include "ui-file.h"
636
 
637
/* More generic printf like operations.  Filtered versions may return
638
   non-locally on error.  */
639
 
640
extern void fputs_filtered (const char *, struct ui_file *);
641
 
642
extern void fputs_unfiltered (const char *, struct ui_file *);
643
 
644
extern int fputc_filtered (int c, struct ui_file *);
645
 
646
extern int fputc_unfiltered (int c, struct ui_file *);
647
 
648
extern int putchar_filtered (int c);
649
 
650
extern int putchar_unfiltered (int c);
651
 
652
extern void puts_filtered (const char *);
653
 
654
extern void puts_unfiltered (const char *);
655
 
656
extern void puts_debug (char *prefix, char *string, char *suffix);
657
 
658
extern void vprintf_filtered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
659
 
660
extern void vfprintf_filtered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0);
661
 
662
extern void fprintf_filtered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3);
663
 
664
extern void fprintfi_filtered (int, struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 3, 4);
665
 
666
extern void printf_filtered (const char *, ...) ATTR_FORMAT (printf, 1, 2);
667
 
668
extern void printfi_filtered (int, const char *, ...) ATTR_FORMAT (printf, 2, 3);
669
 
670
extern void vprintf_unfiltered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
671
 
672
extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0);
673
 
674
extern void fprintf_unfiltered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3);
675
 
676
extern void printf_unfiltered (const char *, ...) ATTR_FORMAT (printf, 1, 2);
677
 
678
extern void print_spaces (int, struct ui_file *);
679
 
680
extern void print_spaces_filtered (int, struct ui_file *);
681
 
682
extern char *n_spaces (int);
683
 
684
extern void fputstr_filtered (const char *str, int quotr, struct ui_file * stream);
685
 
686
extern void fputstr_unfiltered (const char *str, int quotr, struct ui_file * stream);
687
 
688
extern void fputstrn_unfiltered (const char *str, int n, int quotr, struct ui_file * stream);
689
 
690
/* Display the host ADDR on STREAM formatted as ``0x%x''. */
691
extern void gdb_print_host_address (void *addr, struct ui_file *stream);
692
 
693
/* Convert a CORE_ADDR into a HEX string.  paddr() is like %08lx.
694
   paddr_nz() is like %lx.  paddr_u() is like %lu. paddr_width() is
695
   for ``%*''. */
696
extern int strlen_paddr (void);
697
extern char *paddr (CORE_ADDR addr);
698
extern char *paddr_nz (CORE_ADDR addr);
699
extern char *paddr_u (CORE_ADDR addr);
700
extern char *paddr_d (LONGEST addr);
701
 
702
extern char *phex (ULONGEST l, int sizeof_l);
703
extern char *phex_nz (ULONGEST l, int sizeof_l);
704
 
705
extern void fprintf_symbol_filtered (struct ui_file *, char *,
706
                                     enum language, int);
707
 
708
extern NORETURN void perror_with_name (char *) ATTR_NORETURN;
709
 
710
extern void print_sys_errmsg (char *, int);
711
 
712
/* From regex.c or libc.  BSD 4.4 declares this with the argument type as
713
   "const char *" in unistd.h, so we can't declare the argument
714
   as "char *".  */
715
 
716
extern char *re_comp (const char *);
717
 
718
/* From symfile.c */
719
 
720
extern void symbol_file_command (char *, int);
721
 
722
/* Remote targets may wish to use this as their load function.  */
723
extern void generic_load (char *name, int from_tty);
724
 
725
/* Summarise a download */
726
extern void print_transfer_performance (struct ui_file *stream,
727
                                        unsigned long data_count,
728
                                        unsigned long write_count,
729
                                        unsigned long time_count);
730
 
731
/* From top.c */
732
 
733
typedef void initialize_file_ftype (void);
734
 
735
extern char *skip_quoted (char *);
736
 
737
extern char *gdb_readline (char *);
738
 
739
extern char *command_line_input (char *, int, char *);
740
 
741
extern void print_prompt (void);
742
 
743
extern int input_from_terminal_p (void);
744
 
745
extern int info_verbose;
746
 
747
/* From printcmd.c */
748
 
749
extern void set_next_address (CORE_ADDR);
750
 
751
extern void print_address_symbolic (CORE_ADDR, struct ui_file *, int,
752
                                    char *);
753
 
754
extern int build_address_symbolic (CORE_ADDR addr,
755
                                   int do_demangle,
756
                                   char **name,
757
                                   int *offset,
758
                                   char **filename,
759
                                   int *line,
760
                                   int *unmapped);
761
 
762
extern void print_address_numeric (CORE_ADDR, int, struct ui_file *);
763
 
764
extern void print_address (CORE_ADDR, struct ui_file *);
765
 
766
/* From source.c */
767
 
768
extern int openp (const char *, int, const char *, int, int, char **);
769
 
770
extern int source_full_path_of (char *, char **);
771
 
772
extern void mod_path (char *, char **);
773
 
774
extern void directory_command (char *, int);
775
 
776
extern void init_source_path (void);
777
 
778
extern char *symtab_to_filename (struct symtab *);
779
 
780
/* From exec.c */
781
 
782
extern void exec_set_section_offsets (bfd_signed_vma text_off,
783
                                      bfd_signed_vma data_off,
784
                                      bfd_signed_vma bss_off);
785
 
786
/* From findvar.c */
787
 
788
extern int read_relative_register_raw_bytes (int, char *);
789
 
790
/* Possible lvalue types.  Like enum language, this should be in
791
   value.h, but needs to be here for the same reason. */
792
 
793
enum lval_type
794
  {
795
    /* Not an lval. */
796
    not_lval,
797
    /* In memory.  Could be a saved register.  */
798
    lval_memory,
799
    /* In a register.  */
800
    lval_register,
801
    /* In a gdb internal variable.  */
802
    lval_internalvar,
803
    /* Part of a gdb internal variable (structure field).  */
804
    lval_internalvar_component,
805
    /* In a register series in a frame not the current one, which may have been
806
       partially saved or saved in different places (otherwise would be
807
       lval_register or lval_memory).  */
808
    lval_reg_frame_relative
809
  };
810
 
811
struct frame_info;
812
 
813
/* From readline (but not in any readline .h files).  */
814
 
815
extern char *tilde_expand (char *);
816
 
817
/* Control types for commands */
818
 
819
enum misc_command_type
820
  {
821
    ok_command,
822
    end_command,
823
    else_command,
824
    nop_command
825
  };
826
 
827
enum command_control_type
828
  {
829
    simple_control,
830
    break_control,
831
    continue_control,
832
    while_control,
833
    if_control,
834
    invalid_control
835
  };
836
 
837
/* Structure for saved commands lines
838
   (for breakpoints, defined commands, etc).  */
839
 
840
struct command_line
841
  {
842
    struct command_line *next;
843
    char *line;
844
    enum command_control_type control_type;
845
    int body_count;
846
    struct command_line **body_list;
847
  };
848
 
849
extern struct command_line *read_command_lines (char *, int);
850
 
851
extern void free_command_lines (struct command_line **);
852
 
853
/* To continue the execution commands when running gdb asynchronously.
854
   A continuation structure contains a pointer to a function to be called
855
   to finish the command, once the target has stopped. Such mechanism is
856
   used bt the finish and until commands, and in the remote protocol
857
   when opening an extended-remote connection. */
858
 
859
struct continuation_arg
860
  {
861
    struct continuation_arg *next;
862
    union continuation_data {
863
      void *pointer;
864
      int   integer;
865
      long  longint;
866
    } data;
867
  };
868
 
869
struct continuation
870
  {
871
    void (*continuation_hook) (struct continuation_arg *);
872
    struct continuation_arg *arg_list;
873
    struct continuation *next;
874
  };
875
 
876
/* In infrun.c. */
877
extern struct continuation *cmd_continuation;
878
/* Used only by the step_1 function. */
879
extern struct continuation *intermediate_continuation;
880
 
881
/* From utils.c */
882
extern void add_continuation (void (*)(struct continuation_arg *),
883
                              struct continuation_arg *);
884
extern void do_all_continuations (void);
885
extern void discard_all_continuations (void);
886
 
887
extern void add_intermediate_continuation (void (*)(struct continuation_arg *),
888
                              struct continuation_arg *);
889
extern void do_all_intermediate_continuations (void);
890
extern void discard_all_intermediate_continuations (void);
891
 
892
/* String containing the current directory (what getwd would return).  */
893
 
894
extern char *current_directory;
895
 
896
/* Default radixes for input and output.  Only some values supported.  */
897
extern unsigned input_radix;
898
extern unsigned output_radix;
899
 
900
/* Possibilities for prettyprint parameters to routines which print
901
   things.  Like enum language, this should be in value.h, but needs
902
   to be here for the same reason.  FIXME:  If we can eliminate this
903
   as an arg to LA_VAL_PRINT, then we can probably move it back to
904
   value.h. */
905
 
906
enum val_prettyprint
907
  {
908
    Val_no_prettyprint = 0,
909
    Val_prettyprint,
910
    /* Use the default setting which the user has specified.  */
911
    Val_pretty_default
912
  };
913
 
914
/* The ptid struct is a collection of the various "ids" necessary
915
   for identifying the inferior.  This consists of the process id
916
   (pid), thread id (tid), and other fields necessary for uniquely
917
   identifying the inferior process/thread being debugged.  When
918
   manipulating ptids, the constructors, accessors, and predicate
919
   declared in inferior.h should be used.  These are as follows:
920
 
921
      ptid_build        - Make a new ptid from a pid, lwp, and tid.
922
      pid_to_ptid       - Make a new ptid from just a pid.
923
      ptid_get_pid      - Fetch the pid component of a ptid.
924
      ptid_get_lwp      - Fetch the lwp component of a ptid.
925
      ptid_get_tid      - Fetch the tid component of a ptid.
926
      ptid_equal        - Test to see if two ptids are equal.
927
 
928
   Please do NOT access the struct ptid members directly (except, of
929
   course, in the implementation of the above ptid manipulation
930
   functions).  */
931
 
932
struct ptid
933
  {
934
    /* Process id */
935
    int pid;
936
 
937
    /* Lightweight process id */
938
    long lwp;
939
 
940
    /* Thread id */
941
    long tid;
942
  };
943
 
944
typedef struct ptid ptid_t;
945
 
946
 
947
 
948
/* Optional host machine definition.  Pure autoconf targets will not
949
   need a "xm.h" file.  This will be a symlink to one of the xm-*.h
950
   files, built by the `configure' script.  */
951
 
952
#ifdef GDB_XM_FILE
953
#include "xm.h"
954
#endif
955
 
956
/* Optional native machine support.  Non-native (and possibly pure
957
   multi-arch) targets do not need a "nm.h" file.  This will be a
958
   symlink to one of the nm-*.h files, built by the `configure'
959
   script.  */
960
 
961
#ifdef GDB_NM_FILE
962
#include "nm.h"
963
#endif
964
 
965
/* Optional target machine definition.  Pure multi-arch configurations
966
   do not need a "tm.h" file.  This will be a symlink to one of the
967
   tm-*.h files, built by the `configure' script.  */
968
 
969
#ifdef GDB_TM_FILE
970
#include "tm.h"
971
#endif
972
 
973
/* GDB_MULTI_ARCH is normally set by configure.in using information
974
   from configure.tgt or the config/%/%.mt Makefile fragment.  Since
975
   some targets have defined it in their "tm.h" file, delay providing
976
   a default definition until after "tm.h" has been included.. */
977
 
978
#ifndef GDB_MULTI_ARCH
979
#define GDB_MULTI_ARCH 0
980
#endif
981
 
982
 
983
/* If the xm.h file did not define the mode string used to open the
984
   files, assume that binary files are opened the same way as text
985
   files */
986
#ifndef FOPEN_RB
987
#include "fopen-same.h"
988
#endif
989
 
990
#define CONST_PTR const
991
 
992
/* Defaults for system-wide constants (if not defined by xm.h, we fake it).
993
   FIXME: Assumes 2's complement arithmetic */
994
 
995
#if !defined (UINT_MAX)
996
#define UINT_MAX ((unsigned int)(~0))   /* 0xFFFFFFFF for 32-bits */
997
#endif
998
 
999
#if !defined (INT_MAX)
1000
#define INT_MAX ((int)(UINT_MAX >> 1))  /* 0x7FFFFFFF for 32-bits */
1001
#endif
1002
 
1003
#if !defined (INT_MIN)
1004
#define INT_MIN ((int)((int) ~0 ^ INT_MAX))     /* 0x80000000 for 32-bits */
1005
#endif
1006
 
1007
#if !defined (ULONG_MAX)
1008
#define ULONG_MAX ((unsigned long)(~0L))        /* 0xFFFFFFFF for 32-bits */
1009
#endif
1010
 
1011
#if !defined (LONG_MAX)
1012
#define LONG_MAX ((long)(ULONG_MAX >> 1))       /* 0x7FFFFFFF for 32-bits */
1013
#endif
1014
 
1015
#if !defined (ULONGEST_MAX)
1016
#define ULONGEST_MAX (~(ULONGEST)0)        /* 0xFFFFFFFFFFFFFFFF for 64-bits */
1017
#endif
1018
 
1019
#if !defined (LONGEST_MAX)                 /* 0x7FFFFFFFFFFFFFFF for 64-bits */
1020
#define LONGEST_MAX ((LONGEST)(ULONGEST_MAX >> 1))
1021
#endif
1022
 
1023
/* Convert a LONGEST to an int.  This is used in contexts (e.g. number of
1024
   arguments to a function, number in a value history, register number, etc.)
1025
   where the value must not be larger than can fit in an int.  */
1026
 
1027
extern int longest_to_int (LONGEST);
1028
 
1029
/* Assorted functions we can declare, now that const and volatile are
1030
   defined.  */
1031
 
1032
extern char *savestring (const char *, size_t);
1033
 
1034
extern char *msavestring (void *, const char *, size_t);
1035
 
1036
extern char *mstrsave (void *, const char *);
1037
 
1038
#if !defined (USE_MMALLOC)
1039
/* NOTE: cagney/2000-03-04: The mmalloc functions need to use PTR
1040
   rather than void* so that they are consistent with the delcaration
1041
   in ../mmalloc/mmalloc.h. */
1042
extern PTR mcalloc (PTR, size_t, size_t);
1043
extern PTR mmalloc (PTR, size_t);
1044
extern PTR mrealloc (PTR, PTR, size_t);
1045
extern void mfree (PTR, PTR);
1046
#endif
1047
 
1048
/* Robust versions of same.  Throw an internal error when no memory,
1049
   guard against stray NULL arguments. */
1050
extern void *xmmalloc (void *md, size_t size);
1051
extern void *xmrealloc (void *md, void *ptr, size_t size);
1052
extern void *xmcalloc (void *md, size_t number, size_t size);
1053
extern void xmfree (void *md, void *ptr);
1054
 
1055
/* xmalloc(), xrealloc() and xcalloc() have already been declared in
1056
   "libiberty.h". */
1057
extern void xfree (void *);
1058
 
1059
/* Like asprintf/vasprintf but get an internal_error if the call
1060
   fails. */
1061
extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3);
1062
extern void xvasprintf (char **ret, const char *format, va_list ap);
1063
 
1064
extern int parse_escape (char **);
1065
 
1066
/* Message to be printed before the error message, when an error occurs.  */
1067
 
1068
extern char *error_pre_print;
1069
 
1070
/* Message to be printed before the error message, when an error occurs.  */
1071
 
1072
extern char *quit_pre_print;
1073
 
1074
/* Message to be printed before the warning message, when a warning occurs.  */
1075
 
1076
extern char *warning_pre_print;
1077
 
1078
extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
1079
 
1080
extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN;
1081
 
1082
/* DEPRECATED: Use error(), verror() or error_stream(). */
1083
extern NORETURN void error_begin (void);
1084
 
1085
extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
1086
 
1087
/* Returns a freshly allocate buffer containing the last error
1088
   message.  */
1089
extern char *error_last_message (void);
1090
 
1091
extern NORETURN void internal_verror (const char *file, int line,
1092
                                      const char *, va_list ap) ATTR_NORETURN;
1093
 
1094
extern NORETURN void internal_error (const char *file, int line,
1095
                                     const char *, ...) ATTR_NORETURN ATTR_FORMAT (printf, 3, 4);
1096
 
1097
extern NORETURN void nomem (long) ATTR_NORETURN;
1098
 
1099
/* Reasons for calling return_to_top_level.  Note: enum value 0 is
1100
   reserved for internal use as the return value from an initial
1101
   setjmp().  */
1102
 
1103
enum return_reason
1104
  {
1105
    /* User interrupt.  */
1106
    RETURN_QUIT = 1,
1107
    /* Any other error.  */
1108
    RETURN_ERROR
1109
  };
1110
 
1111
#define ALL_CLEANUPS    ((struct cleanup *)0)
1112
 
1113
#define RETURN_MASK(reason)     (1 << (int)(reason))
1114
#define RETURN_MASK_QUIT        RETURN_MASK (RETURN_QUIT)
1115
#define RETURN_MASK_ERROR       RETURN_MASK (RETURN_ERROR)
1116
#define RETURN_MASK_ALL         (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
1117
typedef int return_mask;
1118
 
1119
extern NORETURN void return_to_top_level (enum return_reason) ATTR_NORETURN;
1120
 
1121
/* If CATCH_ERRORS_FTYPE throws an error, catch_errors() returns zero
1122
   otherwize the result from CATCH_ERRORS_FTYPE is returned. It is
1123
   probably useful for CATCH_ERRORS_FTYPE to always return a non-zero
1124
   value. It's unfortunate that, catch_errors() does not return an
1125
   indication of the exact exception that it caught - quit_flag might
1126
   help. */
1127
 
1128
typedef int (catch_errors_ftype) (PTR);
1129
extern int catch_errors (catch_errors_ftype *, PTR, char *, return_mask);
1130
 
1131
/* Template to catch_errors() that wraps calls to command
1132
   functions. */
1133
 
1134
typedef void (catch_command_errors_ftype) (char *, int);
1135
extern int catch_command_errors (catch_command_errors_ftype *func, char *command, int from_tty, return_mask);
1136
 
1137
extern void warning_begin (void);
1138
 
1139
extern void warning (const char *, ...) ATTR_FORMAT (printf, 1, 2);
1140
 
1141
/* Global functions from other, non-gdb GNU thingies.
1142
   Libiberty thingies are no longer declared here.  We include libiberty.h
1143
   above, instead.  */
1144
 
1145
#ifndef GETENV_PROVIDED
1146
extern char *getenv (const char *);
1147
#endif
1148
 
1149
/* From other system libraries */
1150
 
1151
#ifdef HAVE_STDDEF_H
1152
#include <stddef.h>
1153
#endif
1154
 
1155
#ifdef HAVE_STDLIB_H
1156
#include <stdlib.h>
1157
#endif
1158
#ifndef min
1159
#define min(a, b) ((a) < (b) ? (a) : (b))
1160
#endif
1161
#ifndef max
1162
#define max(a, b) ((a) > (b) ? (a) : (b))
1163
#endif
1164
 
1165
 
1166
/* We take the address of fclose later, but some stdio's forget
1167
   to declare this.  We can't always declare it since there's
1168
   no way to declare the parameters without upsetting some compiler
1169
   somewhere. */
1170
 
1171
#ifndef FCLOSE_PROVIDED
1172
extern int fclose (FILE *);
1173
#endif
1174
 
1175
#ifndef atof
1176
extern double atof (const char *);      /* X3.159-1989  4.10.1.1 */
1177
#endif
1178
 
1179
/* Various possibilities for alloca.  */
1180
#ifndef alloca
1181
#ifdef __GNUC__
1182
#define alloca __builtin_alloca
1183
#else /* Not GNU C */
1184
#ifdef HAVE_ALLOCA_H
1185
#include <alloca.h>
1186
#else
1187
#ifdef _AIX
1188
#pragma alloca
1189
#else
1190
 
1191
/* We need to be careful not to declare this in a way which conflicts with
1192
   bison.  Bison never declares it as char *, but under various circumstances
1193
   (like __hpux) we need to use void *.  */
1194
extern void *alloca ();
1195
#endif /* Not _AIX */
1196
#endif /* Not HAVE_ALLOCA_H */
1197
#endif /* Not GNU C */
1198
#endif /* alloca not defined */
1199
 
1200
/* HOST_BYTE_ORDER must be defined to one of these.  */
1201
 
1202
#ifdef HAVE_ENDIAN_H
1203
#include <endian.h>
1204
#endif
1205
 
1206
#if !defined (BIG_ENDIAN)
1207
#define BIG_ENDIAN 4321
1208
#endif
1209
 
1210
#if !defined (LITTLE_ENDIAN)
1211
#define LITTLE_ENDIAN 1234
1212
#endif
1213
 
1214
/* Dynamic target-system-dependent parameters for GDB. */
1215
#include "gdbarch.h"
1216
#if (GDB_MULTI_ARCH == 0)
1217
/* Multi-arch targets _should_ be including "arch-utils.h" directly
1218
   into their *-tdep.c file.  This is a prop to help old non-
1219
   multi-arch targets to continue to compile. */
1220
#include "arch-utils.h"
1221
#endif
1222
 
1223
/* Static target-system-dependent parameters for GDB. */
1224
 
1225
/* Number of bits in a char or unsigned char for the target machine.
1226
   Just like CHAR_BIT in <limits.h> but describes the target machine.  */
1227
#if !defined (TARGET_CHAR_BIT)
1228
#define TARGET_CHAR_BIT 8
1229
#endif
1230
 
1231
/* If we picked up a copy of CHAR_BIT from a configuration file
1232
   (which may get it by including <limits.h>) then use it to set
1233
   the number of bits in a host char.  If not, use the same size
1234
   as the target. */
1235
 
1236
#if defined (CHAR_BIT)
1237
#define HOST_CHAR_BIT CHAR_BIT
1238
#else
1239
#define HOST_CHAR_BIT TARGET_CHAR_BIT
1240
#endif
1241
 
1242
/* The bit byte-order has to do just with numbering of bits in
1243
   debugging symbols and such.  Conceptually, it's quite separate
1244
   from byte/word byte order.  */
1245
 
1246
#if !defined (BITS_BIG_ENDIAN)
1247
#define BITS_BIG_ENDIAN (TARGET_BYTE_ORDER == BIG_ENDIAN)
1248
#endif
1249
 
1250
/* In findvar.c.  */
1251
 
1252
extern LONGEST extract_signed_integer (void *, int);
1253
 
1254
extern ULONGEST extract_unsigned_integer (void *, int);
1255
 
1256
extern int extract_long_unsigned_integer (void *, int, LONGEST *);
1257
 
1258
extern CORE_ADDR extract_address (void *, int);
1259
 
1260
extern CORE_ADDR extract_typed_address (void *buf, struct type *type);
1261
 
1262
extern void store_signed_integer (void *, int, LONGEST);
1263
 
1264
extern void store_unsigned_integer (void *, int, ULONGEST);
1265
 
1266
extern void store_address (void *, int, LONGEST);
1267
 
1268
extern void store_typed_address (void *buf, struct type *type, CORE_ADDR addr);
1269
 
1270
/* Setup definitions for host and target floating point formats.  We need to
1271
   consider the format for `float', `double', and `long double' for both target
1272
   and host.  We need to do this so that we know what kind of conversions need
1273
   to be done when converting target numbers to and from the hosts DOUBLEST
1274
   data type.  */
1275
 
1276
/* This is used to indicate that we don't know the format of the floating point
1277
   number.  Typically, this is useful for native ports, where the actual format
1278
   is irrelevant, since no conversions will be taking place.  */
1279
 
1280
extern const struct floatformat floatformat_unknown;
1281
 
1282
#if HOST_BYTE_ORDER == BIG_ENDIAN
1283
#ifndef HOST_FLOAT_FORMAT
1284
#define HOST_FLOAT_FORMAT &floatformat_ieee_single_big
1285
#endif
1286
#ifndef HOST_DOUBLE_FORMAT
1287
#define HOST_DOUBLE_FORMAT &floatformat_ieee_double_big
1288
#endif
1289
#else /* LITTLE_ENDIAN */
1290
#ifndef HOST_FLOAT_FORMAT
1291
#define HOST_FLOAT_FORMAT &floatformat_ieee_single_little
1292
#endif
1293
#ifndef HOST_DOUBLE_FORMAT
1294
#define HOST_DOUBLE_FORMAT &floatformat_ieee_double_little
1295
#endif
1296
#endif
1297
 
1298
#ifndef HOST_LONG_DOUBLE_FORMAT
1299
#define HOST_LONG_DOUBLE_FORMAT &floatformat_unknown
1300
#endif
1301
 
1302
/* Use `long double' if the host compiler supports it.  (Note that this is not
1303
   necessarily any longer than `double'.  On SunOS/gcc, it's the same as
1304
   double.)  This is necessary because GDB internally converts all floating
1305
   point values to the widest type supported by the host.
1306
 
1307
   There are problems however, when the target `long double' is longer than the
1308
   host's `long double'.  In general, we'll probably reduce the precision of
1309
   any such values and print a warning.  */
1310
 
1311
#ifdef HAVE_LONG_DOUBLE
1312
typedef long double DOUBLEST;
1313
#else
1314
typedef double DOUBLEST;
1315
#endif
1316
 
1317
extern void floatformat_to_doublest (const struct floatformat *,
1318
                                     char *, DOUBLEST *);
1319
extern void floatformat_from_doublest (const struct floatformat *,
1320
                                       DOUBLEST *, char *);
1321
 
1322
extern int floatformat_is_negative (const struct floatformat *, char *);
1323
extern int floatformat_is_nan (const struct floatformat *, char *);
1324
extern char *floatformat_mantissa (const struct floatformat *, char *);
1325
 
1326
extern DOUBLEST extract_floating (void *, int);
1327
extern void store_floating (void *, int, DOUBLEST);
1328
 
1329
/* From valops.c */
1330
 
1331
extern CORE_ADDR push_bytes (CORE_ADDR, char *, int);
1332
 
1333
extern CORE_ADDR push_word (CORE_ADDR, ULONGEST);
1334
 
1335
extern int watchdog;
1336
 
1337
/* Hooks for alternate command interfaces.  */
1338
 
1339
#ifdef UI_OUT
1340
/* The name of the interpreter if specified on the command line. */
1341
extern char *interpreter_p;
1342
#endif
1343
 
1344
/* If a given interpreter matches INTERPRETER_P then it should update
1345
   command_loop_hook and init_ui_hook with the per-interpreter
1346
   implementation. */
1347
/* FIXME: command_loop_hook and init_ui_hook should be moved here. */
1348
 
1349
struct target_waitstatus;
1350
struct cmd_list_element;
1351
 
1352
/* Should the asynchronous variant of the interpreter (using the
1353
   event-loop) be enabled? */
1354
extern int event_loop_p;
1355
 
1356
extern void (*init_ui_hook) (char *argv0);
1357
extern void (*command_loop_hook) (void);
1358
extern void (*show_load_progress) (const char *section,
1359
                                   unsigned long section_sent,
1360
                                   unsigned long section_size,
1361
                                   unsigned long total_sent,
1362
                                   unsigned long total_size);
1363
extern void (*print_frame_info_listing_hook) (struct symtab * s,
1364
                                              int line, int stopline,
1365
                                              int noerror);
1366
extern struct frame_info *parse_frame_specification (char *frame_exp);
1367
extern int (*query_hook) (const char *, va_list);
1368
extern void (*warning_hook) (const char *, va_list);
1369
extern void (*flush_hook) (struct ui_file * stream);
1370
extern void (*create_breakpoint_hook) (struct breakpoint * b);
1371
extern void (*delete_breakpoint_hook) (struct breakpoint * bpt);
1372
extern void (*modify_breakpoint_hook) (struct breakpoint * bpt);
1373
extern void (*interactive_hook) (void);
1374
extern void (*registers_changed_hook) (void);
1375
extern void (*readline_begin_hook) (char *,...);
1376
extern char *(*readline_hook) (char *);
1377
extern void (*readline_end_hook) (void);
1378
extern void (*register_changed_hook) (int regno);
1379
extern void (*memory_changed_hook) (CORE_ADDR addr, int len);
1380
extern void (*context_hook) (int);
1381
extern ptid_t (*target_wait_hook) (ptid_t ptid,
1382
                                         struct target_waitstatus * status);
1383
 
1384
extern void (*attach_hook) (void);
1385
extern void (*detach_hook) (void);
1386
extern void (*call_command_hook) (struct cmd_list_element * c,
1387
                                  char *cmd, int from_tty);
1388
 
1389
extern void (*set_hook) (struct cmd_list_element * c);
1390
 
1391
extern NORETURN void (*error_hook) (void) ATTR_NORETURN;
1392
 
1393
extern void (*error_begin_hook) (void);
1394
 
1395
extern int (*ui_load_progress_hook) (const char *section, unsigned long num);
1396
 
1397
 
1398
/* Inhibit window interface if non-zero. */
1399
 
1400
extern int use_windows;
1401
 
1402
/* Symbolic definitions of filename-related things.  */
1403
/* FIXME, this doesn't work very well if host and executable
1404
   filesystems conventions are different.  */
1405
 
1406
#ifndef DIRNAME_SEPARATOR
1407
#define DIRNAME_SEPARATOR ':'
1408
#endif
1409
 
1410
#ifndef SLASH_STRING
1411
#ifdef _WIN32
1412
#define SLASH_STRING "\\"
1413
#else
1414
#define SLASH_STRING "/"
1415
#endif
1416
#endif
1417
 
1418
/* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
1419
   The name ``TIDGET'' is a historical accident.  Many uses of TIDGET
1420
   in the code actually refer to a lightweight process id, i.e,
1421
   something that can be considered a process id in its own right for
1422
   certain purposes.  */
1423
 
1424
#ifndef PIDGET
1425
#define PIDGET(PTID) (ptid_get_pid (PTID))
1426
#define TIDGET(PTID) (ptid_get_lwp (PTID))
1427
#define MERGEPID(PID, TID) ptid_build (PID, TID, 0)
1428
#endif
1429
 
1430
/* Define well known filenos if the system does not define them.  */
1431
#ifndef STDIN_FILENO
1432
#define STDIN_FILENO   0
1433
#endif
1434
#ifndef STDOUT_FILENO
1435
#define STDOUT_FILENO  1
1436
#endif
1437
#ifndef STDERR_FILENO
1438
#define STDERR_FILENO  2
1439
#endif
1440
 
1441
/* If this definition isn't overridden by the header files, assume
1442
   that isatty and fileno exist on this system.  */
1443
#ifndef ISATTY
1444
#define ISATTY(FP)      (isatty (fileno (FP)))
1445
#endif
1446
 
1447
 
1448
/* FIXME: cagney/1999-12-13: The following will be moved to gdb.h /
1449
   libgdb.h or gdblib.h. */
1450
 
1451
/* Return-code (RC) from a gdb library call.  (The abreviation RC is
1452
   taken from the sim/common directory.) */
1453
 
1454
enum gdb_rc {
1455
  /* The operation failed.  The failure message can be fetched by
1456
     calling ``char *error_last_message(void)''. The value is
1457
     determined by the catch_errors() interface. */
1458
  /* NOTE: Since ``defs.h:catch_errors()'' does not return an error /
1459
     internal / quit indication it is not possible to return that
1460
     here. */
1461
  GDB_RC_FAIL = 0,
1462
  /* No error occured but nothing happened. Due to the catch_errors()
1463
     interface, this must be non-zero. */
1464
  GDB_RC_NONE = 1,
1465
  /* The operation was successful. Due to the catch_errors()
1466
     interface, this must be non-zero. */
1467
  GDB_RC_OK = 2
1468
};
1469
 
1470
 
1471
/* Print the specified breakpoint on GDB_STDOUT. (Eventually this
1472
   function will ``print'' the object on ``output''). */
1473
enum gdb_rc gdb_breakpoint_query (/* struct {ui,gdb}_out *output, */ int bnum);
1474
 
1475
/* Create a breakpoint at ADDRESS (a GDB source and line). */
1476
enum gdb_rc gdb_breakpoint (char *address, char *condition,
1477
                            int hardwareflag, int tempflag,
1478
                            int thread, int ignore_count);
1479
enum gdb_rc gdb_thread_select (/* output object */ char *tidstr);
1480
 
1481
#ifdef UI_OUT
1482
/* Print a list of known thread ids. */
1483
enum gdb_rc gdb_list_thread_ids (/* output object */);
1484
 
1485
/* Switch thread and print notification. */
1486
#endif
1487
#endif /* #ifndef DEFS_H */

powered by: WebSVN 2.1.0

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