/* Minimal symbol table definitions for GDB.
- Copyright (C) 2011-2016 Free Software Foundation, Inc.
+ Copyright (C) 2011-2018 Free Software Foundation, Inc.
This file is part of GDB.
#ifndef MINSYMS_H
#define MINSYMS_H
+struct type;
+
/* Several lookup functions return both a minimal symbol and the
objfile in which it is found. This structure is used in these
cases. */
ADDRESS - the address of the symbol
MS_TYPE - the type of the symbol
SECTION - the symbol's section
- appropriate obj_section for the minimal symbol. This can be NULL.
- OBJFILE - the objfile associated with the minimal symbol. */
+ */
struct minimal_symbol *record_full (const char *name,
int name_len,
- int copy_name,
+ bool copy_name,
CORE_ADDR address,
enum minimal_symbol_type ms_type,
int section);
/* Like record_full, but:
- uses strlen to compute NAME_LEN,
- - passes COPY_NAME = 1,
+ - passes COPY_NAME = true,
- and passes a default SECTION, depending on the type
This variant does not return the new symbol. */
- void record (const char *, CORE_ADDR, enum minimal_symbol_type);
+ void record (const char *name, CORE_ADDR address,
+ enum minimal_symbol_type ms_type);
/* Like record_full, but:
- uses strlen to compute NAME_LEN,
- - passes COPY_NAME = 1. */
+ - passes COPY_NAME = true. */
struct minimal_symbol *record_with_info (const char *name,
CORE_ADDR address,
enum minimal_symbol_type ms_type,
int section)
{
- return record_full (name, strlen (name), 1, address, ms_type, section);
+ return record_full (name, strlen (name), true, address, ms_type, section);
}
private:
\f
+/* Return whether MSYMBOL is a function/method. If FUNC_ADDRESS_P is
+ non-NULL, and the MSYMBOL is a function, then *FUNC_ADDRESS_P is
+ set to the function's address, already resolved if MINSYM points to
+ a function descriptor. */
+
+bool msymbol_is_function (struct objfile *objfile,
+ minimal_symbol *minsym,
+ CORE_ADDR *func_address_p = NULL);
+
/* Compute a hash code for the string argument. */
unsigned int msymbol_hash (const char *);
requirements. */
#define SYMBOL_HASH_NEXT(hash, c) \
- ((hash) * 67 + tolower ((unsigned char) (c)) - 113)
+ ((hash) * 67 + TOLOWER ((unsigned char) (c)) - 113)
\f
USER_DATA as arguments. */
void iterate_over_minimal_symbols (struct objfile *objf,
- const char *name,
+ const lookup_name_info &name,
void (*callback) (struct minimal_symbol *,
void *),
void *user_data);
CORE_ADDR minimal_symbol_upper_bound (struct bound_minimal_symbol minsym);
+/* Return the type of MSYMBOL, a minimal symbol of OBJFILE. If
+ ADDRESS_P is not NULL, set it to the MSYMBOL's resolved
+ address. */
+
+type *find_minsym_type_and_address (minimal_symbol *msymbol, objfile *objf,
+ CORE_ADDR *address_p);
+
#endif /* MINSYMS_H */