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

Subversion Repositories or1k

[/] [or1k/] [tags/] [VER_5_3/] [gdb-5.3/] [gdb/] [symtab.h] - Blame information for rev 1778

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

Line No. Rev Author Line
1 1181 sfurman
/* Symbol table definitions for GDB.
2
   Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
3
   1997, 1998, 1999, 2000, 2001
4
   Free Software Foundation, Inc.
5
 
6
   This file is part of GDB.
7
 
8
   This program is free software; you can redistribute it and/or modify
9
   it under the terms of the GNU General Public License as published by
10
   the Free Software Foundation; either version 2 of the License, or
11
   (at your option) any later version.
12
 
13
   This program is distributed in the hope that it will be useful,
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
   GNU General Public License for more details.
17
 
18
   You should have received a copy of the GNU General Public License
19
   along with this program; if not, write to the Free Software
20
   Foundation, Inc., 59 Temple Place - Suite 330,
21
   Boston, MA 02111-1307, USA.  */
22
 
23
#if !defined (SYMTAB_H)
24
#define SYMTAB_H 1
25
 
26
/* Opaque declarations.  */
27
struct obstack;
28
 
29
/* Don't do this; it means that if some .o's are compiled with GNU C
30
   and some are not (easy to do accidentally the way we configure
31
   things; also it is a pain to have to "make clean" every time you
32
   want to switch compilers), then GDB dies a horrible death.  */
33
/* GNU C supports enums that are bitfields.  Some compilers don't. */
34
#if 0 && defined(__GNUC__) && !defined(BYTE_BITFIELD)
35
#define BYTE_BITFIELD   :8;
36
#else
37
#define BYTE_BITFIELD           /*nothing */
38
#endif
39
 
40
/* Define a structure for the information that is common to all symbol types,
41
   including minimal symbols, partial symbols, and full symbols.  In a
42
   multilanguage environment, some language specific information may need to
43
   be recorded along with each symbol.
44
 
45
   These fields are ordered to encourage good packing, since we frequently
46
   have tens or hundreds of thousands of these.  */
47
 
48
struct general_symbol_info
49
  {
50
    /* Name of the symbol.  This is a required field.  Storage for the name is
51
       allocated on the psymbol_obstack or symbol_obstack for the associated
52
       objfile. */
53
 
54
    char *name;
55
 
56
    /* Value of the symbol.  Which member of this union to use, and what
57
       it means, depends on what kind of symbol this is and its
58
       SYMBOL_CLASS.  See comments there for more details.  All of these
59
       are in host byte order (though what they point to might be in
60
       target byte order, e.g. LOC_CONST_BYTES).  */
61
 
62
    union
63
      {
64
        /* The fact that this is a long not a LONGEST mainly limits the
65
           range of a LOC_CONST.  Since LOC_CONST_BYTES exists, I'm not
66
           sure that is a big deal.  */
67
        long ivalue;
68
 
69
        struct block *block;
70
 
71
        char *bytes;
72
 
73
        CORE_ADDR address;
74
 
75
        /* for opaque typedef struct chain */
76
 
77
        struct symbol *chain;
78
      }
79
    value;
80
 
81
    /* Since one and only one language can apply, wrap the language specific
82
       information inside a union. */
83
 
84
    union
85
      {
86
        struct cplus_specific   /* For C++ */
87
        /*  and Java */
88
          {
89
            char *demangled_name;
90
          }
91
        cplus_specific;
92
#if 0
93
        /* OBSOLETE struct chill_specific        *//* For Chill */
94
        /* OBSOLETE   { */
95
        /* OBSOLETE     char *demangled_name; */
96
        /* OBSOLETE   } */
97
        /* OBSOLETE chill_specific; */
98
#endif
99
      }
100
    language_specific;
101
 
102
    /* Record the source code language that applies to this symbol.
103
       This is used to select one of the fields from the language specific
104
       union above. */
105
 
106
    enum language language BYTE_BITFIELD;
107
 
108
    /* Which section is this symbol in?  This is an index into
109
       section_offsets for this objfile.  Negative means that the symbol
110
       does not get relocated relative to a section.
111
       Disclaimer: currently this is just used for xcoff, so don't
112
       expect all symbol-reading code to set it correctly (the ELF code
113
       also tries to set it correctly).  */
114
 
115
    short section;
116
 
117
    /* The bfd section associated with this symbol. */
118
 
119
    asection *bfd_section;
120
  };
121
 
122
extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
123
 
124
#define SYMBOL_NAME(symbol)             (symbol)->ginfo.name
125
#define SYMBOL_VALUE(symbol)            (symbol)->ginfo.value.ivalue
126
#define SYMBOL_VALUE_ADDRESS(symbol)    (symbol)->ginfo.value.address
127
#define SYMBOL_VALUE_BYTES(symbol)      (symbol)->ginfo.value.bytes
128
#define SYMBOL_BLOCK_VALUE(symbol)      (symbol)->ginfo.value.block
129
#define SYMBOL_VALUE_CHAIN(symbol)      (symbol)->ginfo.value.chain
130
#define SYMBOL_LANGUAGE(symbol)         (symbol)->ginfo.language
131
#define SYMBOL_SECTION(symbol)          (symbol)->ginfo.section
132
#define SYMBOL_BFD_SECTION(symbol)      (symbol)->ginfo.bfd_section
133
 
134
#define SYMBOL_CPLUS_DEMANGLED_NAME(symbol)     \
135
  (symbol)->ginfo.language_specific.cplus_specific.demangled_name
136
 
137
/* Macro that initializes the language dependent portion of a symbol
138
   depending upon the language for the symbol. */
139
 
140
#define SYMBOL_INIT_LANGUAGE_SPECIFIC(symbol,language)                  \
141
  do {                                                                  \
142
    SYMBOL_LANGUAGE (symbol) = language;                                \
143
    if (SYMBOL_LANGUAGE (symbol) == language_cplus                      \
144
        || SYMBOL_LANGUAGE (symbol) == language_java                    \
145
        )                                                               \
146
      {                                                                 \
147
        SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = NULL;                    \
148
      }                                                                 \
149
    /* OBSOLETE else if (SYMBOL_LANGUAGE (symbol) == language_chill) */ \
150
    /* OBSOLETE   { */                                                  \
151
    /* OBSOLETE     SYMBOL_CHILL_DEMANGLED_NAME (symbol) = NULL; */     \
152
    /* OBSOLETE   } */                                                  \
153
    else                                                                \
154
      {                                                                 \
155
        memset (&(symbol)->ginfo.language_specific, 0,                   \
156
                sizeof ((symbol)->ginfo.language_specific));            \
157
      }                                                                 \
158
  } while (0)
159
 
160
#define SYMBOL_INIT_DEMANGLED_NAME(symbol,obstack) \
161
  (symbol_init_demangled_name (&symbol->ginfo, (obstack)))
162
extern void symbol_init_demangled_name (struct general_symbol_info *symbol,
163
                                        struct obstack *obstack);
164
 
165
 
166
/* Macro that returns the demangled name for a symbol based on the language
167
   for that symbol.  If no demangled name exists, returns NULL. */
168
 
169
#define SYMBOL_DEMANGLED_NAME(symbol)                                   \
170
  (SYMBOL_LANGUAGE (symbol) == language_cplus                           \
171
   || SYMBOL_LANGUAGE (symbol) == language_java                         \
172
   ? SYMBOL_CPLUS_DEMANGLED_NAME (symbol)                               \
173
   : /* OBSOLETE (SYMBOL_LANGUAGE (symbol) == language_chill */         \
174
     /* OBSOLETE ? SYMBOL_CHILL_DEMANGLED_NAME (symbol) */              \
175
     NULL)
176
 
177
/* OBSOLETE #define SYMBOL_CHILL_DEMANGLED_NAME(symbol) */
178
/* OBSOLETE (symbol)->ginfo.language_specific.chill_specific.demangled_name */
179
 
180
/* Macro that returns the "natural source name" of a symbol.  In C++ this is
181
   the "demangled" form of the name if demangle is on and the "mangled" form
182
   of the name if demangle is off.  In other languages this is just the
183
   symbol name.  The result should never be NULL. */
184
 
185
#define SYMBOL_SOURCE_NAME(symbol)                                      \
186
  (demangle && SYMBOL_DEMANGLED_NAME (symbol) != NULL                   \
187
   ? SYMBOL_DEMANGLED_NAME (symbol)                                     \
188
   : SYMBOL_NAME (symbol))
189
 
190
/* Macro that returns the "natural assembly name" of a symbol.  In C++ this is
191
   the "mangled" form of the name if demangle is off, or if demangle is on and
192
   asm_demangle is off.  Otherwise if asm_demangle is on it is the "demangled"
193
   form.  In other languages this is just the symbol name.  The result should
194
   never be NULL. */
195
 
196
#define SYMBOL_LINKAGE_NAME(symbol)                                     \
197
  (demangle && asm_demangle && SYMBOL_DEMANGLED_NAME (symbol) != NULL   \
198
   ? SYMBOL_DEMANGLED_NAME (symbol)                                     \
199
   : SYMBOL_NAME (symbol))
200
 
201
/* Macro that tests a symbol for a match against a specified name string.
202
   First test the unencoded name, then looks for and test a C++ encoded
203
   name if it exists.  Note that whitespace is ignored while attempting to
204
   match a C++ encoded name, so that "foo::bar(int,long)" is the same as
205
   "foo :: bar (int, long)".
206
   Evaluates to zero if the match fails, or nonzero if it succeeds. */
207
 
208
#define SYMBOL_MATCHES_NAME(symbol, name)                               \
209
  (STREQ (SYMBOL_NAME (symbol), (name))                                 \
210
   || (SYMBOL_DEMANGLED_NAME (symbol) != NULL                           \
211
       && strcmp_iw (SYMBOL_DEMANGLED_NAME (symbol), (name)) == 0))
212
 
213
/* Macro that tests a symbol for an re-match against the last compiled regular
214
   expression.  First test the unencoded name, then look for and test a C++
215
   encoded name if it exists.
216
   Evaluates to zero if the match fails, or nonzero if it succeeds. */
217
 
218
#define SYMBOL_MATCHES_REGEXP(symbol)                                   \
219
  (re_exec (SYMBOL_NAME (symbol)) != 0                                   \
220
   || (SYMBOL_DEMANGLED_NAME (symbol) != NULL                           \
221
       && re_exec (SYMBOL_DEMANGLED_NAME (symbol)) != 0))
222
 
223
/* Define a simple structure used to hold some very basic information about
224
   all defined global symbols (text, data, bss, abs, etc).  The only required
225
   information is the general_symbol_info.
226
 
227
   In many cases, even if a file was compiled with no special options for
228
   debugging at all, as long as was not stripped it will contain sufficient
229
   information to build a useful minimal symbol table using this structure.
230
   Even when a file contains enough debugging information to build a full
231
   symbol table, these minimal symbols are still useful for quickly mapping
232
   between names and addresses, and vice versa.  They are also sometimes
233
   used to figure out what full symbol table entries need to be read in. */
234
 
235
struct minimal_symbol
236
  {
237
 
238
    /* The general symbol info required for all types of symbols.
239
 
240
       The SYMBOL_VALUE_ADDRESS contains the address that this symbol
241
       corresponds to.  */
242
 
243
    struct general_symbol_info ginfo;
244
 
245
    /* The info field is available for caching machine-specific information
246
       so it doesn't have to rederive the info constantly (over a serial line).
247
       It is initialized to zero and stays that way until target-dependent code
248
       sets it.  Storage for any data pointed to by this field should be allo-
249
       cated on the symbol_obstack for the associated objfile.
250
       The type would be "void *" except for reasons of compatibility with older
251
       compilers.  This field is optional.
252
 
253
       Currently, the AMD 29000 tdep.c uses it to remember things it has decoded
254
       from the instructions in the function header, and the MIPS-16 code uses
255
       it to identify 16-bit procedures.  */
256
 
257
    char *info;
258
 
259
#ifdef SOFUN_ADDRESS_MAYBE_MISSING
260
    /* Which source file is this symbol in?  Only relevant for mst_file_*.  */
261
    char *filename;
262
#endif
263
 
264
    /* Classification types for this symbol.  These should be taken as "advisory
265
       only", since if gdb can't easily figure out a classification it simply
266
       selects mst_unknown.  It may also have to guess when it can't figure out
267
       which is a better match between two types (mst_data versus mst_bss) for
268
       example.  Since the minimal symbol info is sometimes derived from the
269
       BFD library's view of a file, we need to live with what information bfd
270
       supplies. */
271
 
272
    enum minimal_symbol_type
273
      {
274
        mst_unknown = 0, /* Unknown type, the default */
275
        mst_text,               /* Generally executable instructions */
276
        mst_data,               /* Generally initialized data */
277
        mst_bss,                /* Generally uninitialized data */
278
        mst_abs,                /* Generally absolute (nonrelocatable) */
279
        /* GDB uses mst_solib_trampoline for the start address of a shared
280
           library trampoline entry.  Breakpoints for shared library functions
281
           are put there if the shared library is not yet loaded.
282
           After the shared library is loaded, lookup_minimal_symbol will
283
           prefer the minimal symbol from the shared library (usually
284
           a mst_text symbol) over the mst_solib_trampoline symbol, and the
285
           breakpoints will be moved to their true address in the shared
286
           library via breakpoint_re_set.  */
287
        mst_solib_trampoline,   /* Shared library trampoline code */
288
        /* For the mst_file* types, the names are only guaranteed to be unique
289
           within a given .o file.  */
290
        mst_file_text,          /* Static version of mst_text */
291
        mst_file_data,          /* Static version of mst_data */
292
        mst_file_bss            /* Static version of mst_bss */
293
      }
294
    type BYTE_BITFIELD;
295
 
296
    /* Minimal symbols with the same hash key are kept on a linked
297
       list.  This is the link.  */
298
 
299
    struct minimal_symbol *hash_next;
300
 
301
    /* Minimal symbols are stored in two different hash tables.  This is
302
       the `next' pointer for the demangled hash table.  */
303
 
304
    struct minimal_symbol *demangled_hash_next;
305
  };
306
 
307
#define MSYMBOL_INFO(msymbol)           (msymbol)->info
308
#define MSYMBOL_TYPE(msymbol)           (msymbol)->type
309
 
310
 
311
 
312
/* All of the name-scope contours of the program
313
   are represented by `struct block' objects.
314
   All of these objects are pointed to by the blockvector.
315
 
316
   Each block represents one name scope.
317
   Each lexical context has its own block.
318
 
319
   The blockvector begins with some special blocks.
320
   The GLOBAL_BLOCK contains all the symbols defined in this compilation
321
   whose scope is the entire program linked together.
322
   The STATIC_BLOCK contains all the symbols whose scope is the
323
   entire compilation excluding other separate compilations.
324
   Blocks starting with the FIRST_LOCAL_BLOCK are not special.
325
 
326
   Each block records a range of core addresses for the code that
327
   is in the scope of the block.  The STATIC_BLOCK and GLOBAL_BLOCK
328
   give, for the range of code, the entire range of code produced
329
   by the compilation that the symbol segment belongs to.
330
 
331
   The blocks appear in the blockvector
332
   in order of increasing starting-address,
333
   and, within that, in order of decreasing ending-address.
334
 
335
   This implies that within the body of one function
336
   the blocks appear in the order of a depth-first tree walk.  */
337
 
338
struct blockvector
339
  {
340
    /* Number of blocks in the list.  */
341
    int nblocks;
342
    /* The blocks themselves.  */
343
    struct block *block[1];
344
  };
345
 
346
#define BLOCKVECTOR_NBLOCKS(blocklist) (blocklist)->nblocks
347
#define BLOCKVECTOR_BLOCK(blocklist,n) (blocklist)->block[n]
348
 
349
/* Special block numbers */
350
 
351
#define GLOBAL_BLOCK            0
352
#define STATIC_BLOCK            1
353
#define FIRST_LOCAL_BLOCK       2
354
 
355
struct block
356
  {
357
 
358
    /* Addresses in the executable code that are in this block.  */
359
 
360
    CORE_ADDR startaddr;
361
    CORE_ADDR endaddr;
362
 
363
    /* The symbol that names this block, if the block is the body of a
364
       function; otherwise, zero.  */
365
 
366
    struct symbol *function;
367
 
368
    /* The `struct block' for the containing block, or 0 if none.
369
 
370
       The superblock of a top-level local block (i.e. a function in the
371
       case of C) is the STATIC_BLOCK.  The superblock of the
372
       STATIC_BLOCK is the GLOBAL_BLOCK.  */
373
 
374
    struct block *superblock;
375
 
376
    /* Version of GCC used to compile the function corresponding
377
       to this block, or 0 if not compiled with GCC.  When possible,
378
       GCC should be compatible with the native compiler, or if that
379
       is not feasible, the differences should be fixed during symbol
380
       reading.  As of 16 Apr 93, this flag is never used to distinguish
381
       between gcc2 and the native compiler.
382
 
383
       If there is no function corresponding to this block, this meaning
384
       of this flag is undefined.  */
385
 
386
    unsigned char gcc_compile_flag;
387
 
388
    /* The symbols for this block are either in a simple linear list or
389
       in a simple hashtable.  Blocks which correspond to a function
390
       (which have a list of symbols corresponding to arguments) use
391
       a linear list, as do some older symbol readers (currently only
392
       mdebugread and dstread).  Other blocks are hashed.
393
 
394
       The hashtable uses the same hash function as the minsym hashtables,
395
       found in minsyms.c:minsym_hash_iw.  Symbols are hashed based on
396
       their demangled name if appropriate, and on their name otherwise.
397
       The hash function ignores space, and stops at the beginning of the
398
       argument list if any.
399
 
400
       The table is laid out in NSYMS/5 buckets and symbols are chained via
401
       their hash_next field.  */
402
 
403
    /* If this is really a hashtable of the symbols, this flag is 1.  */
404
 
405
    unsigned char hashtable;
406
 
407
    /* Number of local symbols.  */
408
 
409
    int nsyms;
410
 
411
    /* The symbols.  If some of them are arguments, then they must be
412
       in the order in which we would like to print them.  */
413
 
414
    struct symbol *sym[1];
415
  };
416
 
417
#define BLOCK_START(bl)         (bl)->startaddr
418
#define BLOCK_END(bl)           (bl)->endaddr
419
#define BLOCK_FUNCTION(bl)      (bl)->function
420
#define BLOCK_SUPERBLOCK(bl)    (bl)->superblock
421
#define BLOCK_GCC_COMPILED(bl)  (bl)->gcc_compile_flag
422
#define BLOCK_HASHTABLE(bl)     (bl)->hashtable
423
 
424
/* For blocks without a hashtable (BLOCK_HASHTABLE (bl) == 0) only.  */
425
#define BLOCK_NSYMS(bl)         (bl)->nsyms
426
#define BLOCK_SYM(bl, n)        (bl)->sym[n]
427
 
428
/* For blocks with a hashtable, but these are valid for non-hashed blocks as
429
   well - each symbol will appear to be one bucket by itself.  */
430
#define BLOCK_BUCKETS(bl)       (bl)->nsyms
431
#define BLOCK_BUCKET(bl, n)     (bl)->sym[n]
432
 
433
/* Macro used to set the size of a hashtable for N symbols.  */
434
#define BLOCK_HASHTABLE_SIZE(n) ((n)/5 + 1)
435
 
436
/* Macro to loop through all symbols in a block BL, in no particular order.
437
   i counts which bucket we are in, and sym points to the current symbol.  */
438
 
439
#define ALL_BLOCK_SYMBOLS(bl, i, sym)                           \
440
        for ((i) = 0; (i) < BLOCK_BUCKETS ((bl)); (i)++) \
441
          for ((sym) = BLOCK_BUCKET ((bl), (i)); (sym);         \
442
               (sym) = (sym)->hash_next)
443
 
444
/* Nonzero if symbols of block BL should be sorted alphabetically.
445
   Don't sort a block which corresponds to a function.  If we did the
446
   sorting would have to preserve the order of the symbols for the
447
   arguments.  Also don't sort any block that we chose to hash.  */
448
 
449
#define BLOCK_SHOULD_SORT(bl) (! BLOCK_HASHTABLE (bl) \
450
                               && BLOCK_FUNCTION (bl) == NULL)
451
 
452
 
453
/* Represent one symbol name; a variable, constant, function or typedef.  */
454
 
455
/* Different name spaces for symbols.  Looking up a symbol specifies a
456
   namespace and ignores symbol definitions in other name spaces. */
457
 
458
typedef enum
459
  {
460
    /* UNDEF_NAMESPACE is used when a namespace has not been discovered or
461
       none of the following apply.  This usually indicates an error either
462
       in the symbol information or in gdb's handling of symbols. */
463
 
464
    UNDEF_NAMESPACE,
465
 
466
    /* VAR_NAMESPACE is the usual namespace.  In C, this contains variables,
467
       function names, typedef names and enum type values. */
468
 
469
    VAR_NAMESPACE,
470
 
471
    /* STRUCT_NAMESPACE is used in C to hold struct, union and enum type names.
472
       Thus, if `struct foo' is used in a C program, it produces a symbol named
473
       `foo' in the STRUCT_NAMESPACE. */
474
 
475
    STRUCT_NAMESPACE,
476
 
477
    /* LABEL_NAMESPACE may be used for names of labels (for gotos);
478
       currently it is not used and labels are not recorded at all.  */
479
 
480
    LABEL_NAMESPACE,
481
 
482
    /* Searching namespaces. These overlap with VAR_NAMESPACE, providing
483
       some granularity with the search_symbols function. */
484
 
485
    /* Everything in VAR_NAMESPACE minus FUNCTIONS_-, TYPES_-, and
486
       METHODS_NAMESPACE */
487
    VARIABLES_NAMESPACE,
488
 
489
    /* All functions -- for some reason not methods, though. */
490
    FUNCTIONS_NAMESPACE,
491
 
492
    /* All defined types */
493
    TYPES_NAMESPACE,
494
 
495
    /* All class methods -- why is this separated out? */
496
    METHODS_NAMESPACE
497
 
498
  }
499
namespace_enum;
500
 
501
/* An address-class says where to find the value of a symbol.  */
502
 
503
enum address_class
504
  {
505
    /* Not used; catches errors */
506
 
507
    LOC_UNDEF,
508
 
509
    /* Value is constant int SYMBOL_VALUE, host byteorder */
510
 
511
    LOC_CONST,
512
 
513
    /* Value is at fixed address SYMBOL_VALUE_ADDRESS */
514
 
515
    LOC_STATIC,
516
 
517
    /* Value is in register.  SYMBOL_VALUE is the register number.  */
518
 
519
    LOC_REGISTER,
520
 
521
    /* It's an argument; the value is at SYMBOL_VALUE offset in arglist.  */
522
 
523
    LOC_ARG,
524
 
525
    /* Value address is at SYMBOL_VALUE offset in arglist.  */
526
 
527
    LOC_REF_ARG,
528
 
529
    /* Value is in register number SYMBOL_VALUE.  Just like LOC_REGISTER
530
       except this is an argument.  Probably the cleaner way to handle
531
       this would be to separate address_class (which would include
532
       separate ARG and LOCAL to deal with FRAME_ARGS_ADDRESS versus
533
       FRAME_LOCALS_ADDRESS), and an is_argument flag.
534
 
535
       For some symbol formats (stabs, for some compilers at least),
536
       the compiler generates two symbols, an argument and a register.
537
       In some cases we combine them to a single LOC_REGPARM in symbol
538
       reading, but currently not for all cases (e.g. it's passed on the
539
       stack and then loaded into a register).  */
540
 
541
    LOC_REGPARM,
542
 
543
    /* Value is in specified register.  Just like LOC_REGPARM except the
544
       register holds the address of the argument instead of the argument
545
       itself. This is currently used for the passing of structs and unions
546
       on sparc and hppa.  It is also used for call by reference where the
547
       address is in a register, at least by mipsread.c.  */
548
 
549
    LOC_REGPARM_ADDR,
550
 
551
    /* Value is a local variable at SYMBOL_VALUE offset in stack frame.  */
552
 
553
    LOC_LOCAL,
554
 
555
    /* Value not used; definition in SYMBOL_TYPE.  Symbols in the namespace
556
       STRUCT_NAMESPACE all have this class.  */
557
 
558
    LOC_TYPEDEF,
559
 
560
    /* Value is address SYMBOL_VALUE_ADDRESS in the code */
561
 
562
    LOC_LABEL,
563
 
564
    /* In a symbol table, value is SYMBOL_BLOCK_VALUE of a `struct block'.
565
       In a partial symbol table, SYMBOL_VALUE_ADDRESS is the start address
566
       of the block.  Function names have this class. */
567
 
568
    LOC_BLOCK,
569
 
570
    /* Value is a constant byte-sequence pointed to by SYMBOL_VALUE_BYTES, in
571
       target byte order.  */
572
 
573
    LOC_CONST_BYTES,
574
 
575
    /* Value is arg at SYMBOL_VALUE offset in stack frame. Differs from
576
       LOC_LOCAL in that symbol is an argument; differs from LOC_ARG in
577
       that we find it in the frame (FRAME_LOCALS_ADDRESS), not in the
578
       arglist (FRAME_ARGS_ADDRESS).  Added for i960, which passes args
579
       in regs then copies to frame.  */
580
 
581
    LOC_LOCAL_ARG,
582
 
583
    /* Value is at SYMBOL_VALUE offset from the current value of
584
       register number SYMBOL_BASEREG.  This exists mainly for the same
585
       things that LOC_LOCAL and LOC_ARG do; but we need to do this
586
       instead because on 88k DWARF gives us the offset from the
587
       frame/stack pointer, rather than the offset from the "canonical
588
       frame address" used by COFF, stabs, etc., and we don't know how
589
       to convert between these until we start examining prologues.
590
 
591
       Note that LOC_BASEREG is much less general than a DWARF expression.
592
       We don't need the generality (at least not yet), and storing a general
593
       DWARF expression would presumably take up more space than the existing
594
       scheme.  */
595
 
596
    LOC_BASEREG,
597
 
598
    /* Same as LOC_BASEREG but it is an argument.  */
599
 
600
    LOC_BASEREG_ARG,
601
 
602
    /* Value is at fixed address, but the address of the variable has
603
       to be determined from the minimal symbol table whenever the
604
       variable is referenced.
605
       This happens if debugging information for a global symbol is
606
       emitted and the corresponding minimal symbol is defined
607
       in another object file or runtime common storage.
608
       The linker might even remove the minimal symbol if the global
609
       symbol is never referenced, in which case the symbol remains
610
       unresolved.  */
611
 
612
    LOC_UNRESOLVED,
613
 
614
    /* Value is at a thread-specific location calculated by a
615
       target-specific method. */
616
 
617
    LOC_THREAD_LOCAL_STATIC,
618
 
619
    /* The variable does not actually exist in the program.
620
       The value is ignored.  */
621
 
622
    LOC_OPTIMIZED_OUT,
623
 
624
    /* The variable is static, but actually lives at * (address).
625
     * I.e. do an extra indirection to get to it.
626
     * This is used on HP-UX to get at globals that are allocated
627
     * in shared libraries, where references from images other
628
     * than the one where the global was allocated are done
629
     * with a level of indirection.
630
     */
631
 
632
    LOC_INDIRECT
633
 
634
  };
635
 
636
/* Linked list of symbol's live ranges. */
637
 
638
struct range_list
639
  {
640
    CORE_ADDR start;
641
    CORE_ADDR end;
642
    struct range_list *next;
643
  };
644
 
645
/* Linked list of aliases for a particular main/primary symbol.  */
646
struct alias_list
647
  {
648
    struct symbol *sym;
649
    struct alias_list *next;
650
  };
651
 
652
struct symbol
653
  {
654
 
655
    /* The general symbol info required for all types of symbols. */
656
 
657
    struct general_symbol_info ginfo;
658
 
659
    /* Data type of value */
660
 
661
    struct type *type;
662
 
663
    /* Name space code.  */
664
 
665
#ifdef __MFC4__
666
    /* FIXME: don't conflict with C++'s namespace */
667
    /* would be safer to do a global change for all namespace identifiers. */
668
#define namespace _namespace
669
#endif
670
    namespace_enum namespace BYTE_BITFIELD;
671
 
672
    /* Address class */
673
 
674
    enum address_class aclass BYTE_BITFIELD;
675
 
676
    /* Line number of definition.  FIXME:  Should we really make the assumption
677
       that nobody will try to debug files longer than 64K lines?  What about
678
       machine generated programs? */
679
 
680
    unsigned short line;
681
 
682
    /* Some symbols require an additional value to be recorded on a per-
683
       symbol basis.  Stash those values here. */
684
 
685
    union
686
      {
687
        /* Used by LOC_BASEREG and LOC_BASEREG_ARG.  */
688
        short basereg;
689
      }
690
    aux_value;
691
 
692
 
693
    /* Link to a list of aliases for this symbol.
694
       Only a "primary/main symbol may have aliases.  */
695
    struct alias_list *aliases;
696
 
697
    /* List of ranges where this symbol is active.  This is only
698
       used by alias symbols at the current time.  */
699
    struct range_list *ranges;
700
 
701
    struct symbol *hash_next;
702
  };
703
 
704
 
705
#define SYMBOL_NAMESPACE(symbol)        (symbol)->namespace
706
#define SYMBOL_CLASS(symbol)            (symbol)->aclass
707
#define SYMBOL_TYPE(symbol)             (symbol)->type
708
#define SYMBOL_LINE(symbol)             (symbol)->line
709
#define SYMBOL_BASEREG(symbol)          (symbol)->aux_value.basereg
710
#define SYMBOL_ALIASES(symbol)          (symbol)->aliases
711
#define SYMBOL_RANGES(symbol)           (symbol)->ranges
712
 
713
/* A partial_symbol records the name, namespace, and address class of
714
   symbols whose types we have not parsed yet.  For functions, it also
715
   contains their memory address, so we can find them from a PC value.
716
   Each partial_symbol sits in a partial_symtab, all of which are chained
717
   on a  partial symtab list and which points to the corresponding
718
   normal symtab once the partial_symtab has been referenced.  */
719
 
720
struct partial_symbol
721
  {
722
 
723
    /* The general symbol info required for all types of symbols. */
724
 
725
    struct general_symbol_info ginfo;
726
 
727
    /* Name space code.  */
728
 
729
    namespace_enum namespace BYTE_BITFIELD;
730
 
731
    /* Address class (for info_symbols) */
732
 
733
    enum address_class aclass BYTE_BITFIELD;
734
 
735
  };
736
 
737
#define PSYMBOL_NAMESPACE(psymbol)      (psymbol)->namespace
738
#define PSYMBOL_CLASS(psymbol)          (psymbol)->aclass
739
 
740
 
741
/* Source-file information.  This describes the relation between source files,
742
   line numbers and addresses in the program text.  */
743
 
744
struct sourcevector
745
  {
746
    int length;                 /* Number of source files described */
747
    struct source *source[1];   /* Descriptions of the files */
748
  };
749
 
750
/* Each item represents a line-->pc (or the reverse) mapping.  This is
751
   somewhat more wasteful of space than one might wish, but since only
752
   the files which are actually debugged are read in to core, we don't
753
   waste much space.  */
754
 
755
struct linetable_entry
756
  {
757
    int line;
758
    CORE_ADDR pc;
759
  };
760
 
761
/* The order of entries in the linetable is significant.  They should
762
   be sorted by increasing values of the pc field.  If there is more than
763
   one entry for a given pc, then I'm not sure what should happen (and
764
   I not sure whether we currently handle it the best way).
765
 
766
   Example: a C for statement generally looks like this
767
 
768
   10   0x100   - for the init/test part of a for stmt.
769
   20   0x200
770
   30   0x300
771
   10   0x400   - for the increment part of a for stmt.
772
 
773
   If an entry has a line number of zero, it marks the start of a PC
774
   range for which no line number information is available.  It is
775
   acceptable, though wasteful of table space, for such a range to be
776
   zero length.  */
777
 
778
struct linetable
779
  {
780
    int nitems;
781
 
782
    /* Actually NITEMS elements.  If you don't like this use of the
783
       `struct hack', you can shove it up your ANSI (seriously, if the
784
       committee tells us how to do it, we can probably go along).  */
785
    struct linetable_entry item[1];
786
  };
787
 
788
/* All the information on one source file.  */
789
 
790
struct source
791
  {
792
    char *name;                 /* Name of file */
793
    struct linetable contents;
794
  };
795
 
796
/* How to relocate the symbols from each section in a symbol file.
797
   Each struct contains an array of offsets.
798
   The ordering and meaning of the offsets is file-type-dependent;
799
   typically it is indexed by section numbers or symbol types or
800
   something like that.
801
 
802
   To give us flexibility in changing the internal representation
803
   of these offsets, the ANOFFSET macro must be used to insert and
804
   extract offset values in the struct.  */
805
 
806
struct section_offsets
807
  {
808
    CORE_ADDR offsets[1];       /* As many as needed. */
809
  };
810
 
811
#define ANOFFSET(secoff, whichone) \
812
   ((whichone == -1) \
813
    ? (internal_error (__FILE__, __LINE__, "Section index is uninitialized"), -1) \
814
    : secoff->offsets[whichone])
815
 
816
/* The maximum possible size of a section_offsets table.  */
817
 
818
#define SIZEOF_SECTION_OFFSETS \
819
  (sizeof (struct section_offsets) \
820
   + sizeof (((struct section_offsets *) 0)->offsets) * (SECT_OFF_MAX-1))
821
 
822
/* Each source file or header is represented by a struct symtab.
823
   These objects are chained through the `next' field.  */
824
 
825
struct symtab
826
  {
827
 
828
    /* Chain of all existing symtabs.  */
829
 
830
    struct symtab *next;
831
 
832
    /* List of all symbol scope blocks for this symtab.  May be shared
833
       between different symtabs (and normally is for all the symtabs
834
       in a given compilation unit).  */
835
 
836
    struct blockvector *blockvector;
837
 
838
    /* Table mapping core addresses to line numbers for this file.
839
       Can be NULL if none.  Never shared between different symtabs.  */
840
 
841
    struct linetable *linetable;
842
 
843
    /* Section in objfile->section_offsets for the blockvector and
844
       the linetable.  Probably always SECT_OFF_TEXT.  */
845
 
846
    int block_line_section;
847
 
848
    /* If several symtabs share a blockvector, exactly one of them
849
       should be designated the primary, so that the blockvector
850
       is relocated exactly once by objfile_relocate.  */
851
 
852
    int primary;
853
 
854
    /* The macro table for this symtab.  Like the blockvector, this
855
       may be shared between different symtabs --- and normally is for
856
       all the symtabs in a given compilation unit.  */
857
    struct macro_table *macro_table;
858
 
859
    /* Name of this source file.  */
860
 
861
    char *filename;
862
 
863
    /* Directory in which it was compiled, or NULL if we don't know.  */
864
 
865
    char *dirname;
866
 
867
    /* This component says how to free the data we point to:
868
       free_contents => do a tree walk and free each object.
869
       free_nothing => do nothing; some other symtab will free
870
       the data this one uses.
871
       free_linetable => free just the linetable.  FIXME: Is this redundant
872
       with the primary field?  */
873
 
874
    enum free_code
875
      {
876
        free_nothing, free_contents, free_linetable
877
      }
878
    free_code;
879
 
880
    /* Pointer to one block of storage to be freed, if nonzero.  */
881
    /* This is IN ADDITION to the action indicated by free_code.  */
882
 
883
    char *free_ptr;
884
 
885
    /* Total number of lines found in source file.  */
886
 
887
    int nlines;
888
 
889
    /* line_charpos[N] is the position of the (N-1)th line of the
890
       source file.  "position" means something we can lseek() to; it
891
       is not guaranteed to be useful any other way.  */
892
 
893
    int *line_charpos;
894
 
895
    /* Language of this source file.  */
896
 
897
    enum language language;
898
 
899
    /* String that identifies the format of the debugging information, such
900
       as "stabs", "dwarf 1", "dwarf 2", "coff", etc.  This is mostly useful
901
       for automated testing of gdb but may also be information that is
902
       useful to the user. */
903
 
904
    char *debugformat;
905
 
906
    /* String of version information.  May be zero.  */
907
 
908
    char *version;
909
 
910
    /* Full name of file as found by searching the source path.
911
       NULL if not yet known.  */
912
 
913
    char *fullname;
914
 
915
    /* Object file from which this symbol information was read.  */
916
 
917
    struct objfile *objfile;
918
 
919
  };
920
 
921
#define BLOCKVECTOR(symtab)     (symtab)->blockvector
922
#define LINETABLE(symtab)       (symtab)->linetable
923
 
924
 
925
/* Each source file that has not been fully read in is represented by
926
   a partial_symtab.  This contains the information on where in the
927
   executable the debugging symbols for a specific file are, and a
928
   list of names of global symbols which are located in this file.
929
   They are all chained on partial symtab lists.
930
 
931
   Even after the source file has been read into a symtab, the
932
   partial_symtab remains around.  They are allocated on an obstack,
933
   psymbol_obstack.  FIXME, this is bad for dynamic linking or VxWorks-
934
   style execution of a bunch of .o's.  */
935
 
936
struct partial_symtab
937
  {
938
 
939
    /* Chain of all existing partial symtabs.  */
940
 
941
    struct partial_symtab *next;
942
 
943
    /* Name of the source file which this partial_symtab defines */
944
 
945
    char *filename;
946
 
947
    /* Full path of the source file.  NULL if not known.  */
948
 
949
    char *fullname;
950
 
951
    /* Information about the object file from which symbols should be read.  */
952
 
953
    struct objfile *objfile;
954
 
955
    /* Set of relocation offsets to apply to each section.  */
956
 
957
    struct section_offsets *section_offsets;
958
 
959
    /* Range of text addresses covered by this file; texthigh is the
960
       beginning of the next section. */
961
 
962
    CORE_ADDR textlow;
963
    CORE_ADDR texthigh;
964
 
965
    /* Array of pointers to all of the partial_symtab's which this one
966
       depends on.  Since this array can only be set to previous or
967
       the current (?) psymtab, this dependency tree is guaranteed not
968
       to have any loops.  "depends on" means that symbols must be read
969
       for the dependencies before being read for this psymtab; this is
970
       for type references in stabs, where if foo.c includes foo.h, declarations
971
       in foo.h may use type numbers defined in foo.c.  For other debugging
972
       formats there may be no need to use dependencies.  */
973
 
974
    struct partial_symtab **dependencies;
975
 
976
    int number_of_dependencies;
977
 
978
    /* Global symbol list.  This list will be sorted after readin to
979
       improve access.  Binary search will be the usual method of
980
       finding a symbol within it. globals_offset is an integer offset
981
       within global_psymbols[].  */
982
 
983
    int globals_offset;
984
    int n_global_syms;
985
 
986
    /* Static symbol list.  This list will *not* be sorted after readin;
987
       to find a symbol in it, exhaustive search must be used.  This is
988
       reasonable because searches through this list will eventually
989
       lead to either the read in of a files symbols for real (assumed
990
       to take a *lot* of time; check) or an error (and we don't care
991
       how long errors take).  This is an offset and size within
992
       static_psymbols[].  */
993
 
994
    int statics_offset;
995
    int n_static_syms;
996
 
997
    /* Pointer to symtab eventually allocated for this source file, 0 if
998
       !readin or if we haven't looked for the symtab after it was readin.  */
999
 
1000
    struct symtab *symtab;
1001
 
1002
    /* Pointer to function which will read in the symtab corresponding to
1003
       this psymtab.  */
1004
 
1005
    void (*read_symtab) (struct partial_symtab *);
1006
 
1007
    /* Information that lets read_symtab() locate the part of the symbol table
1008
       that this psymtab corresponds to.  This information is private to the
1009
       format-dependent symbol reading routines.  For further detail examine
1010
       the various symbol reading modules.  Should really be (void *) but is
1011
       (char *) as with other such gdb variables.  (FIXME) */
1012
 
1013
    char *read_symtab_private;
1014
 
1015
    /* Non-zero if the symtab corresponding to this psymtab has been readin */
1016
 
1017
    unsigned char readin;
1018
  };
1019
 
1020
/* A fast way to get from a psymtab to its symtab (after the first time).  */
1021
#define PSYMTAB_TO_SYMTAB(pst)  \
1022
    ((pst) -> symtab != NULL ? (pst) -> symtab : psymtab_to_symtab (pst))
1023
 
1024
 
1025
/* The virtual function table is now an array of structures which have the
1026
   form { int16 offset, delta; void *pfn; }.
1027
 
1028
   In normal virtual function tables, OFFSET is unused.
1029
   DELTA is the amount which is added to the apparent object's base
1030
   address in order to point to the actual object to which the
1031
   virtual function should be applied.
1032
   PFN is a pointer to the virtual function.
1033
 
1034
   Note that this macro is g++ specific (FIXME). */
1035
 
1036
#define VTBL_FNADDR_OFFSET 2
1037
 
1038
/* External variables and functions for the objects described above. */
1039
 
1040
/* This symtab variable specifies the current file for printing source lines */
1041
 
1042
extern struct symtab *current_source_symtab;
1043
 
1044
/* This is the next line to print for listing source lines.  */
1045
 
1046
extern int current_source_line;
1047
 
1048
/* See the comment in symfile.c about how current_objfile is used. */
1049
 
1050
extern struct objfile *current_objfile;
1051
 
1052
/* True if we are nested inside psymtab_to_symtab. */
1053
 
1054
extern int currently_reading_symtab;
1055
 
1056
/* From utils.c.  */
1057
extern int demangle;
1058
extern int asm_demangle;
1059
 
1060
/* symtab.c lookup functions */
1061
 
1062
/* lookup a symbol table by source file name */
1063
 
1064
extern struct symtab *lookup_symtab (const char *);
1065
 
1066
/* lookup a symbol by name (optional block, optional symtab) */
1067
 
1068
extern struct symbol *lookup_symbol (const char *, const struct block *,
1069
                                     const namespace_enum, int *,
1070
                                     struct symtab **);
1071
 
1072
/* lookup a symbol by name, within a specified block */
1073
 
1074
extern struct symbol *lookup_block_symbol (const struct block *, const char *,
1075
                                           const char *,
1076
                                           const namespace_enum);
1077
 
1078
/* lookup a [struct, union, enum] by name, within a specified block */
1079
 
1080
extern struct type *lookup_struct (char *, struct block *);
1081
 
1082
extern struct type *lookup_union (char *, struct block *);
1083
 
1084
extern struct type *lookup_enum (char *, struct block *);
1085
 
1086
/* lookup the function corresponding to the block */
1087
 
1088
extern struct symbol *block_function (struct block *);
1089
 
1090
/* from blockframe.c: */
1091
 
1092
/* lookup the function symbol corresponding to the address */
1093
 
1094
extern struct symbol *find_pc_function (CORE_ADDR);
1095
 
1096
/* lookup the function corresponding to the address and section */
1097
 
1098
extern struct symbol *find_pc_sect_function (CORE_ADDR, asection *);
1099
 
1100
/* lookup function from address, return name, start addr and end addr */
1101
 
1102
extern int
1103
find_pc_partial_function (CORE_ADDR, char **, CORE_ADDR *, CORE_ADDR *);
1104
 
1105
extern void clear_pc_function_cache (void);
1106
 
1107
extern int find_pc_sect_partial_function (CORE_ADDR, asection *,
1108
                                          char **, CORE_ADDR *, CORE_ADDR *);
1109
 
1110
/* from symtab.c: */
1111
 
1112
/* lookup partial symbol table by filename */
1113
 
1114
extern struct partial_symtab *lookup_partial_symtab (const char *);
1115
 
1116
/* lookup partial symbol table by address */
1117
 
1118
extern struct partial_symtab *find_pc_psymtab (CORE_ADDR);
1119
 
1120
/* lookup partial symbol table by address and section */
1121
 
1122
extern struct partial_symtab *find_pc_sect_psymtab (CORE_ADDR, asection *);
1123
 
1124
/* lookup full symbol table by address */
1125
 
1126
extern struct symtab *find_pc_symtab (CORE_ADDR);
1127
 
1128
/* lookup full symbol table by address and section */
1129
 
1130
extern struct symtab *find_pc_sect_symtab (CORE_ADDR, asection *);
1131
 
1132
/* lookup partial symbol by address */
1133
 
1134
extern struct partial_symbol *find_pc_psymbol (struct partial_symtab *,
1135
                                               CORE_ADDR);
1136
 
1137
/* lookup partial symbol by address and section */
1138
 
1139
extern struct partial_symbol *find_pc_sect_psymbol (struct partial_symtab *,
1140
                                                    CORE_ADDR, asection *);
1141
 
1142
extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
1143
 
1144
extern int contained_in (struct block *, struct block *);
1145
 
1146
extern void reread_symbols (void);
1147
 
1148
extern struct type *lookup_transparent_type (const char *);
1149
 
1150
 
1151
/* Macro for name of symbol to indicate a file compiled with gcc. */
1152
#ifndef GCC_COMPILED_FLAG_SYMBOL
1153
#define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled."
1154
#endif
1155
 
1156
/* Macro for name of symbol to indicate a file compiled with gcc2. */
1157
#ifndef GCC2_COMPILED_FLAG_SYMBOL
1158
#define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
1159
#endif
1160
 
1161
/* Functions for dealing with the minimal symbol table, really a misc
1162
   address<->symbol mapping for things we don't have debug symbols for.  */
1163
 
1164
extern void prim_record_minimal_symbol (const char *, CORE_ADDR,
1165
                                        enum minimal_symbol_type,
1166
                                        struct objfile *);
1167
 
1168
extern struct minimal_symbol *prim_record_minimal_symbol_and_info
1169
  (const char *, CORE_ADDR,
1170
   enum minimal_symbol_type,
1171
   char *info, int section, asection * bfd_section, struct objfile *);
1172
 
1173
extern unsigned int msymbol_hash_iw (const char *);
1174
 
1175
extern unsigned int msymbol_hash (const char *);
1176
 
1177
extern void
1178
add_minsym_to_hash_table (struct minimal_symbol *sym,
1179
                          struct minimal_symbol **table);
1180
 
1181
extern struct minimal_symbol *lookup_minimal_symbol (const char *,
1182
                                                     const char *,
1183
                                                     struct objfile *);
1184
 
1185
extern struct minimal_symbol *lookup_minimal_symbol_text (const char *,
1186
                                                          const char *,
1187
                                                          struct objfile *);
1188
 
1189
struct minimal_symbol *lookup_minimal_symbol_solib_trampoline (const char *,
1190
                                                               const char *,
1191
                                                               struct objfile
1192
                                                               *);
1193
 
1194
extern struct minimal_symbol *lookup_minimal_symbol_by_pc (CORE_ADDR);
1195
 
1196
extern struct minimal_symbol *lookup_minimal_symbol_by_pc_section (CORE_ADDR,
1197
                                                                   asection
1198
                                                                   *);
1199
 
1200
extern struct minimal_symbol
1201
  *lookup_solib_trampoline_symbol_by_pc (CORE_ADDR);
1202
 
1203
extern CORE_ADDR find_solib_trampoline_target (CORE_ADDR);
1204
 
1205
extern void init_minimal_symbol_collection (void);
1206
 
1207
extern struct cleanup *make_cleanup_discard_minimal_symbols (void);
1208
 
1209
extern void install_minimal_symbols (struct objfile *);
1210
 
1211
/* Sort all the minimal symbols in OBJFILE.  */
1212
 
1213
extern void msymbols_sort (struct objfile *objfile);
1214
 
1215
struct symtab_and_line
1216
  {
1217
    struct symtab *symtab;
1218
    asection *section;
1219
    /* Line number.  Line numbers start at 1 and proceed through symtab->nlines.
1220
 
1221
       information is not available.  */
1222
    int line;
1223
 
1224
    CORE_ADDR pc;
1225
    CORE_ADDR end;
1226
  };
1227
 
1228
#define INIT_SAL(sal) { \
1229
  (sal)->symtab  = 0;   \
1230
  (sal)->section = 0;   \
1231
  (sal)->line    = 0;   \
1232
  (sal)->pc      = 0;   \
1233
  (sal)->end     = 0;   \
1234
}
1235
 
1236
struct symtabs_and_lines
1237
  {
1238
    struct symtab_and_line *sals;
1239
    int nelts;
1240
  };
1241
 
1242
 
1243
 
1244
/* Some types and macros needed for exception catchpoints.
1245
   Can't put these in target.h because symtab_and_line isn't
1246
   known there. This file will be included by breakpoint.c,
1247
   hppa-tdep.c, etc. */
1248
 
1249
/* Enums for exception-handling support */
1250
enum exception_event_kind
1251
  {
1252
    EX_EVENT_THROW,
1253
    EX_EVENT_CATCH
1254
  };
1255
 
1256
/* Type for returning info about an exception */
1257
struct exception_event_record
1258
  {
1259
    enum exception_event_kind kind;
1260
    struct symtab_and_line throw_sal;
1261
    struct symtab_and_line catch_sal;
1262
    /* This may need to be extended in the future, if
1263
       some platforms allow reporting more information,
1264
       such as point of rethrow, type of exception object,
1265
       type expected by catch clause, etc. */
1266
  };
1267
 
1268
#define CURRENT_EXCEPTION_KIND       (current_exception_event->kind)
1269
#define CURRENT_EXCEPTION_CATCH_SAL  (current_exception_event->catch_sal)
1270
#define CURRENT_EXCEPTION_CATCH_LINE (current_exception_event->catch_sal.line)
1271
#define CURRENT_EXCEPTION_CATCH_FILE (current_exception_event->catch_sal.symtab->filename)
1272
#define CURRENT_EXCEPTION_CATCH_PC   (current_exception_event->catch_sal.pc)
1273
#define CURRENT_EXCEPTION_THROW_SAL  (current_exception_event->throw_sal)
1274
#define CURRENT_EXCEPTION_THROW_LINE (current_exception_event->throw_sal.line)
1275
#define CURRENT_EXCEPTION_THROW_FILE (current_exception_event->throw_sal.symtab->filename)
1276
#define CURRENT_EXCEPTION_THROW_PC   (current_exception_event->throw_sal.pc)
1277
 
1278
 
1279
/* Given a pc value, return line number it is in.  Second arg nonzero means
1280
   if pc is on the boundary use the previous statement's line number.  */
1281
 
1282
extern struct symtab_and_line find_pc_line (CORE_ADDR, int);
1283
 
1284
/* Same function, but specify a section as well as an address */
1285
 
1286
extern struct symtab_and_line find_pc_sect_line (CORE_ADDR, asection *, int);
1287
 
1288
/* Given an address, return the nearest symbol at or below it in memory.
1289
   Optionally return the symtab it's from through 2nd arg, and the
1290
   address in inferior memory of the symbol through 3rd arg.  */
1291
 
1292
extern struct symbol *find_addr_symbol (CORE_ADDR, struct symtab **,
1293
                                        CORE_ADDR *);
1294
 
1295
/* Given a symtab and line number, return the pc there.  */
1296
 
1297
extern int find_line_pc (struct symtab *, int, CORE_ADDR *);
1298
 
1299
extern int
1300
find_line_pc_range (struct symtab_and_line, CORE_ADDR *, CORE_ADDR *);
1301
 
1302
extern void resolve_sal_pc (struct symtab_and_line *);
1303
 
1304
/* Given a string, return the line specified by it.  For commands like "list"
1305
   and "breakpoint".  */
1306
 
1307
extern struct symtabs_and_lines decode_line_spec (char *, int);
1308
 
1309
extern struct symtabs_and_lines decode_line_spec_1 (char *, int);
1310
 
1311
/* Symmisc.c */
1312
 
1313
void maintenance_print_symbols (char *, int);
1314
 
1315
void maintenance_print_psymbols (char *, int);
1316
 
1317
void maintenance_print_msymbols (char *, int);
1318
 
1319
void maintenance_print_objfiles (char *, int);
1320
 
1321
void maintenance_check_symtabs (char *, int);
1322
 
1323
/* maint.c */
1324
 
1325
void maintenance_print_statistics (char *, int);
1326
 
1327
extern void free_symtab (struct symtab *);
1328
 
1329
/* Symbol-reading stuff in symfile.c and solib.c.  */
1330
 
1331
extern struct symtab *psymtab_to_symtab (struct partial_symtab *);
1332
 
1333
extern void clear_solib (void);
1334
 
1335
/* source.c */
1336
 
1337
extern int identify_source_line (struct symtab *, int, int, CORE_ADDR);
1338
 
1339
extern void print_source_lines (struct symtab *, int, int, int);
1340
 
1341
extern void forget_cached_source_info (void);
1342
 
1343
extern void select_source_symtab (struct symtab *);
1344
 
1345
extern char **make_symbol_completion_list (char *, char *);
1346
 
1347
extern char **make_file_symbol_completion_list (char *, char *, char *);
1348
 
1349
extern struct symbol **make_symbol_overload_list (struct symbol *);
1350
 
1351
extern char **make_source_files_completion_list (char *, char *);
1352
 
1353
/* symtab.c */
1354
 
1355
extern struct partial_symtab *find_main_psymtab (void);
1356
 
1357
extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
1358
 
1359
extern struct symtab_and_line find_function_start_sal (struct symbol *sym, int);
1360
 
1361
/* blockframe.c */
1362
 
1363
extern struct blockvector *blockvector_for_pc (CORE_ADDR, int *);
1364
 
1365
extern struct blockvector *blockvector_for_pc_sect (CORE_ADDR, asection *,
1366
                                                    int *, struct symtab *);
1367
 
1368
/* symfile.c */
1369
 
1370
extern void clear_symtab_users (void);
1371
 
1372
extern enum language deduce_language_from_filename (char *);
1373
 
1374
/* symtab.c */
1375
 
1376
extern int in_prologue (CORE_ADDR pc, CORE_ADDR func_start);
1377
 
1378
extern struct symbol *fixup_symbol_section (struct symbol *,
1379
                                            struct objfile *);
1380
 
1381
extern struct partial_symbol *fixup_psymbol_section (struct partial_symbol
1382
                                                     *psym,
1383
                                                     struct objfile *objfile);
1384
 
1385
/* Symbol searching */
1386
 
1387
/* When using search_symbols, a list of the following structs is returned.
1388
   Callers must free the search list using free_search_symbols! */
1389
struct symbol_search
1390
  {
1391
    /* The block in which the match was found. Could be, for example,
1392
       STATIC_BLOCK or GLOBAL_BLOCK. */
1393
    int block;
1394
 
1395
    /* Information describing what was found.
1396
 
1397
       If symtab abd symbol are NOT NULL, then information was found
1398
       for this match. */
1399
    struct symtab *symtab;
1400
    struct symbol *symbol;
1401
 
1402
    /* If msymbol is non-null, then a match was made on something for
1403
       which only minimal_symbols exist. */
1404
    struct minimal_symbol *msymbol;
1405
 
1406
    /* A link to the next match, or NULL for the end. */
1407
    struct symbol_search *next;
1408
  };
1409
 
1410
extern void search_symbols (char *, namespace_enum, int, char **,
1411
                            struct symbol_search **);
1412
extern void free_search_symbols (struct symbol_search *);
1413
extern struct cleanup *make_cleanup_free_search_symbols (struct symbol_search *);
1414
 
1415
/* The name of the ``main'' function.
1416
   FIXME: cagney/2001-03-20: Can't make main_name() const since some
1417
   of the calling code currently assumes that the string isn't
1418
   const. */
1419
extern void set_main_name (const char *name);
1420
extern /*const*/ char *main_name (void);
1421
 
1422
#endif /* !defined(SYMTAB_H) */

powered by: WebSVN 2.1.0

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