char *demangled_name;
}
objc_specific;
-#if 0
-/* OBSOLETE struct chill_specific *//* For Chill */
- /* OBSOLETE { */
- /* OBSOLETE char *demangled_name; */
- /* OBSOLETE } */
- /* OBSOLETE chill_specific; */
-#endif
}
language_specific;
extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
+/* Note that all the following SYMBOL_* macros are used with the
+ SYMBOL argument being either a partial symbol, a minimal symbol or
+ a full symbol. All three types have a ginfo field. In particular
+ the SYMBOL_INIT_LANGUAGE_SPECIFIC, SYMBOL_INIT_DEMANGLED_NAME,
+ SYMBOL_DEMANGLED_NAME macros cannot be entirely substituted by
+ functions, unless the callers are changed to pass in the ginfo
+ field only, instead of the SYMBOL parameter. */
+
#define SYMBOL_NAME(symbol) (symbol)->ginfo.name
#define SYMBOL_VALUE(symbol) (symbol)->ginfo.value.ivalue
#define SYMBOL_VALUE_ADDRESS(symbol) (symbol)->ginfo.value.address
extern void symbol_init_demangled_name (struct general_symbol_info *symbol,
struct obstack *obstack);
-
-/* Macro that returns the demangled name for a symbol based on the language
- for that symbol. If no demangled name exists, returns NULL. */
-
-#define SYMBOL_DEMANGLED_NAME(symbol) \
- (SYMBOL_LANGUAGE (symbol) == language_cplus \
- || SYMBOL_LANGUAGE (symbol) == language_java \
- ? SYMBOL_CPLUS_DEMANGLED_NAME (symbol) \
- : (SYMBOL_LANGUAGE (symbol) == language_objc \
- ? SYMBOL_OBJC_DEMANGLED_NAME (symbol) \
- : /* OBSOLETE (SYMBOL_LANGUAGE (symbol) == language_chill */ \
- /* OBSOLETE ? SYMBOL_CHILL_DEMANGLED_NAME (symbol) */ \
- NULL))
-
-/* OBSOLETE #define SYMBOL_CHILL_DEMANGLED_NAME(symbol) */
-/* OBSOLETE (symbol)->ginfo.language_specific.chill_specific.demangled_name */
+/* Return the demangled name for a symbol based on the language for
+ that symbol. If no demangled name exists, return NULL. */
+#define SYMBOL_DEMANGLED_NAME(symbol) \
+ (symbol_demangled_name (&(symbol)->ginfo))
+extern char *symbol_demangled_name (struct general_symbol_info *symbol);
#define SYMBOL_OBJC_DEMANGLED_NAME(symbol) \
(symbol)->ginfo.language_specific.objc_specific.demangled_name
? (internal_error (__FILE__, __LINE__, "Section index is uninitialized"), -1) \
: secoff->offsets[whichone])
-/* The maximum possible size of a section_offsets table. */
-
-#define SIZEOF_SECTION_OFFSETS \
+/* The size of a section_offsets table for N sections. */
+#define SIZEOF_N_SECTION_OFFSETS(n) \
(sizeof (struct section_offsets) \
- + sizeof (((struct section_offsets *) 0)->offsets) * (SECT_OFF_MAX-1))
+ + sizeof (((struct section_offsets *) 0)->offsets) * ((n)-1))
+
+/* The maximum possible size of a section_offsets table. */
+#define SIZEOF_SECTION_OFFSETS (SIZEOF_N_SECTION_OFFSETS (SECT_OFF_MAX))
/* Each source file or header is represented by a struct symtab.
These objects are chained through the `next' field. */
CORE_ADDR end;
};
-#define INIT_SAL(sal) { \
- (sal)->symtab = 0; \
- (sal)->section = 0; \
- (sal)->line = 0; \
- (sal)->pc = 0; \
- (sal)->end = 0; \
-}
+extern void init_sal (struct symtab_and_line *sal);
struct symtabs_and_lines
{
extern struct symtab_and_line find_pc_sect_line (CORE_ADDR, asection *, int);
-/* Given an address, return the nearest symbol at or below it in memory.
- Optionally return the symtab it's from through 2nd arg, and the
- address in inferior memory of the symbol through 3rd arg. */
-
-extern struct symbol *find_addr_symbol (CORE_ADDR, struct symtab **,
- CORE_ADDR *);
-
/* Given a symtab and line number, return the pc there. */
extern int find_line_pc (struct symtab *, int, CORE_ADDR *);