GDB (API)
Defines | Functions | Variables
/home/stan/gdb/src/gdb/minsyms.c File Reference
#include "defs.h"
#include <ctype.h>
#include "gdb_string.h"
#include "symtab.h"
#include "bfd.h"
#include "filenames.h"
#include "symfile.h"
#include "objfiles.h"
#include "demangle.h"
#include "value.h"
#include "cp-abi.h"
#include "target.h"
#include "cp-support.h"
#include "language.h"
#include "cli/cli-utils.h"

Go to the source code of this file.

Defines

#define BUNCH_SIZE   127

Functions

unsigned int msymbol_hash_iw (const char *string)
unsigned int msymbol_hash (const char *string)
struct minimal_symbollookup_minimal_symbol (const char *name, const char *sfile, struct objfile *objf)
struct bound_minimal_symbol lookup_bound_minimal_symbol (const char *name)
void iterate_over_minimal_symbols (struct objfile *objf, const char *name, void(*callback)(struct minimal_symbol *, void *), void *user_data)
struct minimal_symbollookup_minimal_symbol_text (const char *name, struct objfile *objf)
struct minimal_symbollookup_minimal_symbol_by_pc_name (CORE_ADDR pc, const char *name, struct objfile *objf)
struct minimal_symbollookup_minimal_symbol_solib_trampoline (const char *name, struct objfile *objf)
struct bound_minimal_symbol lookup_minimal_symbol_by_pc_section (CORE_ADDR pc, struct obj_section *section)
struct bound_minimal_symbol lookup_minimal_symbol_by_pc (CORE_ADDR pc)
int in_gnu_ifunc_stub (CORE_ADDR pc)
struct bound_minimal_symbol lookup_minimal_symbol_and_objfile (const char *name)
void init_minimal_symbol_collection (void)
void prim_record_minimal_symbol (const char *name, CORE_ADDR address, enum minimal_symbol_type ms_type, struct objfile *objfile)
struct minimal_symbolprim_record_minimal_symbol_full (const char *name, int name_len, int copy_name, CORE_ADDR address, enum minimal_symbol_type ms_type, int section, struct objfile *objfile)
struct minimal_symbolprim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, enum minimal_symbol_type ms_type, int section, struct objfile *objfile)
struct cleanup * make_cleanup_discard_minimal_symbols (void)
void install_minimal_symbols (struct objfile *objfile)
void terminate_minimal_symbol_table (struct objfile *objfile)
void msymbols_sort (struct objfile *objfile)
CORE_ADDR find_solib_trampoline_target (struct frame_info *frame, CORE_ADDR pc)

Variables

struct gnu_ifunc_fnsgnu_ifunc_fns_p = &stub_gnu_ifunc_fns

Define Documentation

#define BUNCH_SIZE   127

Definition at line 59 of file minsyms.c.


Function Documentation

CORE_ADDR find_solib_trampoline_target ( struct frame_info *  frame,
CORE_ADDR  pc 
)

Definition at line 1327 of file minsyms.c.

Definition at line 752 of file minsyms.c.

Prepare to start collecting minimal symbols. This should be called by a symbol reader to initialize the minimal symbol module. Currently, minimal symbol table creation is not reentrant; it relies on global (static) variables in minsyms.c.

Definition at line 861 of file minsyms.c.

void install_minimal_symbols ( struct objfile objfile)

Install the minimal symbols that have been collected into the given objfile. After this is called, the cleanup returned by make_cleanup_discard_minimal_symbols should be run in order to clean up global state.

Parameters:
objfilethe objfile from which to get minimal symbols

Definition at line 1176 of file minsyms.c.

void iterate_over_minimal_symbols ( struct objfile objf,
const char *  name,
void(*)(struct minimal_symbol *, void *)  callback,
void *  user_data 
)

Iterate over all the minimal symbols in the objfile OBJF which match NAME. Both the ordinary and demangled names of each symbol are considered. The caller is responsible for canonicalizing NAME, should that need to be done.

For each matching symbol, CALLBACK is called with the symbol and USER_DATA as arguments.

Definition at line 319 of file minsyms.c.

struct bound_minimal_symbol lookup_bound_minimal_symbol ( const char *  name) [read]

Like lookup_minimal_symbol, but searches all files and objfiles and returns a bound minimal symbol.

Parameters:
namestring to look for
Returns:
minimal symbol and its objfile

Definition at line 311 of file minsyms.c.

struct minimal_symbol* lookup_minimal_symbol ( const char *  name,
const char *  sfile,
struct objfile objf 
) [read]

Look through all the current minimal symbol tables and find the first minimal symbol that matches NAME. If OBJF is non-NULL, limit the search to that objfile. If SFILE is non-NULL, the only file-scope symbols considered will be from that source file (global symbols are still preferred). Returns a pointer to the minimal symbol that matches, or NULL if no match is found.

Parameters:
namestring to look for
sfileif supplied, name of a source file
objfif supplied, pointer to objfile to lookup in

Definition at line 298 of file minsyms.c.

Find the minimal symbol named NAME, and return both the minsym struct and its objfile. This only checks the linkage name.

Parameters:
namestring to look for
Returns:
minimal symbol and its objfile

Definition at line 815 of file minsyms.c.

Backward compatibility: search through the minimal symbol table for a matching PC (no section given).

This is a wrapper that calls lookup_minimal_symbol_by_pc_section with a NULL section argument.

Definition at line 735 of file minsyms.c.

struct minimal_symbol* lookup_minimal_symbol_by_pc_name ( CORE_ADDR  ,
const char *  ,
struct objfile  
) [read]

Look through all the current minimal symbol tables and find the first minimal symbol that matches NAME and PC. If OBJF is non-NULL, limit the search to that objfile. Returns a pointer to the minimal symbol that matches, or NULL if no match is found.

Definition at line 405 of file minsyms.c.

Search through the minimal symbol table for each objfile and find the symbol whose address is the largest address that is still less than or equal to PC, and which matches SECTION.

If SECTION is NULL, this uses the result of find_pc_section instead.

The result has a non-NULL 'minsym' member if such a symbol is found, or NULL if PC is not in a suitable range.

Definition at line 713 of file minsyms.c.

struct minimal_symbol* lookup_minimal_symbol_solib_trampoline ( const char *  ,
struct objfile  
) [read]

Look through all the current minimal symbol tables and find the first minimal symbol that matches NAME and is a solib trampoline. If OBJF is non-NULL, limit the search to that objfile. Returns a pointer to the minimal symbol that matches, or NULL if no match is found.

This function only searches the mangled (linkage) names.

Definition at line 437 of file minsyms.c.

struct minimal_symbol* lookup_minimal_symbol_text ( const char *  name,
struct objfile objf 
) [read]

Look through all the current minimal symbol tables and find the first minimal symbol that matches NAME and has text type. If OBJF is non-NULL, limit the search to that objfile. Returns a pointer to the minimal symbol that matches, or NULL if no match is found.

This function only searches the mangled (linkage) names.

Definition at line 353 of file minsyms.c.

struct cleanup* make_cleanup_discard_minimal_symbols ( void  ) [read]

Return a cleanup which is used to clean up the global state left over by minimal symbol creation. After calling init_minimal_symbol_collection, a symbol reader should call this function. Then, after all minimal symbols have been read, regardless of whether they are installed or not, the cleanup returned by this function should be run.

Definition at line 1045 of file minsyms.c.

unsigned int msymbol_hash ( const char *  )

Compute a hash code for the string argument.

Definition at line 102 of file minsyms.c.

unsigned int msymbol_hash_iw ( const char *  )

Like msymbol_hash, but compute a hash code that is compatible with strcmp_iw.

Definition at line 83 of file minsyms.c.

void msymbols_sort ( struct objfile objfile)

Sort all the minimal symbols in OBJFILE. This should be only be called after relocating symbols; it ensures that the minimal symbols are properly sorted by address.

Definition at line 1289 of file minsyms.c.

void prim_record_minimal_symbol ( const char *  ,
CORE_ADDR  ,
enum  minimal_symbol_type,
struct objfile  
)

Like prim_record_minimal_symbol_full, but:

  • uses strlen to compute NAME_LEN,
  • passes COPY_NAME = 0,
  • and passes a default SECTION, depending on the type

This variant does not return the new symbol.

Definition at line 874 of file minsyms.c.

struct minimal_symbol* prim_record_minimal_symbol_and_info ( const char *  ,
CORE_ADDR  ,
enum  minimal_symbol_type,
int  section,
struct objfile  
) [read]

Like prim_record_minimal_symbol_full, but:

  • uses strlen to compute NAME_LEN,
  • passes COPY_NAME = 0.

Definition at line 973 of file minsyms.c.

struct minimal_symbol* prim_record_minimal_symbol_full ( const char *  name,
int  name_len,
int  copy_name,
CORE_ADDR  address,
enum minimal_symbol_type  ms_type,
int  section,
struct objfile objfile 
) [read]

Record a new minimal symbol. This is the "full" entry point; simpler convenience entry points are also provided below.

This returns a new minimal symbol. It is ok to modify the returned minimal symbol (though generally not necessary). It is not ok, though, to stash the pointer anywhere; as minimal symbols may be moved after creation. The memory for the returned minimal symbol is still owned by the minsyms.c code, and should not be freed.

Arguments are:

Parameters:
NAME- the symbol's name
NAME_LEN- the length of the name
COPY_NAME- if true, the minsym code must make a copy of NAME. If false, then NAME must be NUL-terminated, and must have a lifetime that is at least as long as OBJFILE's lifetime.
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.

Definition at line 907 of file minsyms.c.

void terminate_minimal_symbol_table ( struct objfile objfile)

Create the terminating entry of OBJFILE's minimal symbol table. If OBJFILE->msymbols is zero, allocate a single entry from OBJFILE->objfile_obstack; otherwise, just initialize OBJFILE->msymbols[OBJFILE->minimal_symbol_count].

Definition at line 1268 of file minsyms.c.


Variable Documentation

struct gnu_ifunc_fns* gnu_ifunc_fns_p = &stub_gnu_ifunc_fns

Definition at line 810 of file minsyms.c.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines