GDB (xrefs)
Classes | Macros | Functions | Variables
/tmp/gdb-8.1/gdb/minsyms.c File Reference
#include "defs.h"
#include <ctype.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"
#include "symbol.h"
#include <algorithm>
#include "safe-ctype.h"

Go to the source code of this file.

Classes

struct  msym_bunch
 
struct  found_minimal_symbols
 

Macros

#define BUNCH_SIZE   127
 

Functions

bool msymbol_is_function (struct objfile *objfile, minimal_symbol *minsym, CORE_ADDR *func_address_p)
 
unsigned int msymbol_hash_iw (const char *string)
 
unsigned int msymbol_hash (const char *string)
 
static void add_minsym_to_hash_table (struct minimal_symbol *sym, struct minimal_symbol **table)
 
static void add_minsym_to_demangled_hash_table (struct minimal_symbol *sym, struct objfile *objfile)
 
static void lookup_minimal_symbol_mangled (const char *lookup_name, const char *sfile, struct objfile *objfile, struct minimal_symbol **table, unsigned int hash, int(*namecmp)(const char *, const char *), found_minimal_symbols &found)
 
static void lookup_minimal_symbol_demangled (const lookup_name_info &lookup_name, const char *sfile, struct objfile *objfile, struct minimal_symbol **table, unsigned int hash, symbol_name_matcher_ftype *matcher, found_minimal_symbols &found)
 
struct bound_minimal_symbol lookup_minimal_symbol (const char *name, const char *sfile, struct objfile *objf)
 
struct bound_minimal_symbol lookup_bound_minimal_symbol (const char *name)
 
int find_minimal_symbol_address (const char *name, CORE_ADDR *addr, struct objfile *objfile)
 
static const char * linkage_name_str (const lookup_name_info &lookup_name)
 
void iterate_over_minimal_symbols (struct objfile *objf, const lookup_name_info &lookup_name, void(*callback)(struct minimal_symbol *, void *), void *user_data)
 
struct bound_minimal_symbol lookup_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 bound_minimal_symbol lookup_minimal_symbol_solib_trampoline (const char *name, struct objfile *objf)
 
static int frob_address (struct objfile *objfile, CORE_ADDR *pc)
 
static struct bound_minimal_symbol lookup_minimal_symbol_by_pc_section_1 (CORE_ADDR pc_in, struct obj_section *section, int want_trampoline)
 
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)
 
static CORE_ADDR stub_gnu_ifunc_resolve_addr (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static int stub_gnu_ifunc_resolve_name (const char *function_name, CORE_ADDR *function_address_p)
 
static void stub_gnu_ifunc_resolver_stop (struct breakpoint *b)
 
static void stub_gnu_ifunc_resolver_return_stop (struct breakpoint *b)
 
struct bound_minimal_symbol lookup_minimal_symbol_and_objfile (const char *name)
 
static int get_symbol_leading_char (bfd *abfd)
 
static int compare_minimal_symbols (const void *fn1p, const void *fn2p)
 
static int compact_minimal_symbols (struct minimal_symbol *msymbol, int mcount, struct objfile *objfile)
 
static void build_minimal_symbol_hash_tables (struct objfile *objfile)
 
void terminate_minimal_symbol_table (struct objfile *objfile)
 
static struct minimal_symbollookup_solib_trampoline_symbol_by_pc (CORE_ADDR pc)
 
CORE_ADDR find_solib_trampoline_target (struct frame_info *frame, CORE_ADDR pc)
 
CORE_ADDR minimal_symbol_upper_bound (struct bound_minimal_symbol minsym)
 

Variables

static const struct gnu_ifunc_fns stub_gnu_ifunc_fns
 
const struct gnu_ifunc_fnsgnu_ifunc_fns_p = &stub_gnu_ifunc_fns
 

Macro Definition Documentation

◆ BUNCH_SIZE

#define BUNCH_SIZE   127

Definition at line 96 of file minsyms.c.

Referenced by minimal_symbol_reader::install(), and minimal_symbol_reader::record_full().

Function Documentation

◆ add_minsym_to_demangled_hash_table()

static void add_minsym_to_demangled_hash_table ( struct minimal_symbol sym,
struct objfile objfile 
)
static

◆ add_minsym_to_hash_table()

static void add_minsym_to_hash_table ( struct minimal_symbol sym,
struct minimal_symbol **  table 
)
static

◆ build_minimal_symbol_hash_tables()

static void build_minimal_symbol_hash_tables ( struct objfile objfile)
static

◆ compact_minimal_symbols()

static int compact_minimal_symbols ( struct minimal_symbol msymbol,
int  mcount,
struct objfile objfile 
)
static

◆ compare_minimal_symbols()

static int compare_minimal_symbols ( const void *  fn1p,
const void *  fn2p 
)
static

Definition at line 1188 of file minsyms.c.

References MSYMBOL_LINKAGE_NAME, and MSYMBOL_VALUE_RAW_ADDRESS.

Referenced by minimal_symbol_reader::install().

◆ find_minimal_symbol_address()

int find_minimal_symbol_address ( const char *  name,
CORE_ADDR addr,
struct objfile objfile 
)

◆ find_solib_trampoline_target()

CORE_ADDR find_solib_trampoline_target ( struct frame_info frame,
CORE_ADDR  pc 
)

◆ frob_address()

static int frob_address ( struct objfile objfile,
CORE_ADDR pc 
)
static

◆ get_symbol_leading_char()

static int get_symbol_leading_char ( bfd *  abfd)
static

Definition at line 1040 of file minsyms.c.

References symfile_objfile.

Referenced by minimal_symbol_reader::record_full().

◆ in_gnu_ifunc_stub()

int in_gnu_ifunc_stub ( CORE_ADDR  pc)

◆ iterate_over_minimal_symbols()

void iterate_over_minimal_symbols ( struct objfile objf,
const lookup_name_info lookup_name,
void(*)(struct minimal_symbol *, void *)  callback,
void *  user_data 
)

◆ linkage_name_str()

static const char* linkage_name_str ( const lookup_name_info lookup_name)
static

◆ lookup_bound_minimal_symbol()

struct bound_minimal_symbol lookup_bound_minimal_symbol ( const char *  name)

◆ lookup_minimal_symbol()

struct bound_minimal_symbol lookup_minimal_symbol ( const char *  name,
const char *  sfile,
struct objfile objf 
)

Definition at line 311 of file minsyms.c.

References case_sensitive_on, objfile_per_bfd_storage::demangled_hash_languages, found_minimal_symbols::external_symbol, found_minimal_symbols::file_symbol, fprintf_unfiltered(), FULL, gdb_stdlog, get_symbol_name_matcher(), hash(), host_address_to_string, language_def(), lookup_minimal_symbol_demangled(), lookup_minimal_symbol_mangled(), MINIMAL_SYMBOL_HASH_SIZE, bound_minimal_symbol::minsym, objfile_per_bfd_storage::msymbol_demangled_hash, msymbol_hash(), objfile_per_bfd_storage::msymbol_hash, name, objfile::next, object_files, objfile::objfile(), objfile_debug_name(), objfile::per_bfd, lookup_name_info::search_name_hash(), objfile::separate_debug_objfile_backlink, symbol_lookup_debug, and found_minimal_symbols::trampoline_symbol.

Referenced by ada_has_this_exception_support(), ada_main_name(), ada_tasks_inferior_data_sniffer(), ada_update_initial_language(), arm_skip_stub(), avr_scan_prologue(), bsd_uthread_lookup_address(), call_site_to_target_addr(), call_target_sbrk(), checkpoint_command(), coff_symfile_read(), compile_object_load(), convert_code_addr_to_desc_addr(), create_exception_master_breakpoint(), create_std_terminate_master_breakpoint(), d_main_name(), dbx_end_psymtab(), define_symbol(), elf_gnu_ifunc_resolve_by_got(), elf_locate_base(), enable_break(), evaluate_subexp_standard(), find_imps(), find_minimal_symbol_address(), find_stab_function_addr(), flush_ea_cache(), frv_frame_this_id(), ft32_analyze_prologue(), gcc_convert_symbol(), gen_var_ref(), get_running_thread_msymbol(), glibc_skip_solib_resolver(), gnuv3_get_typeid(), gnuv3_skip_trampoline(), go_main_name(), has_ravenscar_runtime(), hppa_symbol_address(), inferior_call_waitpid(), inferior_has_bug(), info_scope_command(), inside_main_func(), jit_breakpoint_re_set_internal(), ld_so_xfer_auxv(), lm_base(), lookup_bound_minimal_symbol(), lookup_child_selector(), lookup_objc_class(), m32c_m16c_address_to_pointer(), m32c_m16c_pointer_to_address(), m32c_return_value(), m32r_frame_this_id(), m68hc11_get_register_info(), macho_resolve_oso_sym_with_minsym(), main_got(), minsym_lookup_iterator_cb(), mips_linux_skip_resolver(), obsd_skip_solib_resolver(), ocl_enable_break(), pascal_main_name(), pd_enable(), pdc_symbol_addrs(), ppc_linux_spe_context_lookup(), ps_pglobal_lookup(), remote_check_symbols(), simple_overlay_update(), simple_read_overlay_table(), sol2_skip_solib_resolver(), spu_catch_start(), spu_enable_break(), spu_get_overlay_table(), tui_get_begin_asm_address(), value_nsstring(), value_static_field(), and VEC().

◆ lookup_minimal_symbol_and_objfile()

struct bound_minimal_symbol lookup_minimal_symbol_and_objfile ( const char *  name)

◆ lookup_minimal_symbol_by_pc()

struct bound_minimal_symbol lookup_minimal_symbol_by_pc ( CORE_ADDR  pc)

Definition at line 928 of file minsyms.c.

References find_pc_section(), lookup_minimal_symbol_by_pc_section_1(), and memset().

Referenced by amd64_skip_main_prologue(), amd64_windows_skip_trampoline_code(), arm_pc_is_thumb(), arm_pe_skip_trampoline_code(), arm_skip_stack_protector(), arm_wince_skip_main_prologue(), call_site_find_chain_1(), call_site_for_pc(), call_site_to_target_addr(), convert_code_addr_to_desc_addr(), dwarf_expr_reg_to_entry_parameter(), elf_gnu_ifunc_record_cache(), find_frame_funname(), find_minsym_type_and_address(), find_pc_sect_line(), frv_skip_main_prologue(), ftrace_update_function(), func_verify_no_selftailcall(), get_function_name(), get_pc_function_start(), get_prev_frame_always_1(), gnuv2_value_rtti_type(), gnuv3_get_typename_from_type_info(), gnuv3_rtti_type(), gnuv3_skip_trampoline(), i386_pe_skip_trampoline_code(), i386_skip_main_prologue(), ia64_convert_from_func_ptr_addr(), in_gnu_ifunc_stub(), info_cb(), info_checkpoints_command(), info_frame_command(), m32c_m16c_address_to_pointer(), m32c_m16c_pointer_to_address(), m68hc11_get_return_insn(), maintenance_translate_address(), mips_make_symbol_special(), mips_pc_is_micromips(), mips_pc_is_mips(), mips_pc_is_mips16(), mips_pc_isa(), mips_skip_pic_trampoline_code(), mips_stub_frame_sniffer(), msp430_skip_trampoline_code(), pascal_val_print(), pc_is_isa32(), powerpc_linux_in_dynsym_resolve_code(), ppc_elfv2_skip_entrypoint(), print_unpacked_pointer(), py_print_frame(), read_atcb(), resolve_sal_pc(), rs6000_skip_main_prologue(), rs6000_skip_trampoline_code(), skip_prologue_function(), tailcall_dump(), and until_next_command().

◆ lookup_minimal_symbol_by_pc_name()

struct minimal_symbol* lookup_minimal_symbol_by_pc_name ( CORE_ADDR  pc,
const char *  name,
struct objfile objf 
)

◆ lookup_minimal_symbol_by_pc_section()

struct bound_minimal_symbol lookup_minimal_symbol_by_pc_section ( CORE_ADDR  pc,
struct obj_section section 
)

◆ lookup_minimal_symbol_by_pc_section_1()

static struct bound_minimal_symbol lookup_minimal_symbol_by_pc_section_1 ( CORE_ADDR  pc_in,
struct obj_section section,
int  want_trampoline 
)
static

◆ lookup_minimal_symbol_demangled()

static void lookup_minimal_symbol_demangled ( const lookup_name_info lookup_name,
const char *  sfile,
struct objfile objfile,
struct minimal_symbol **  table,
unsigned int  hash,
symbol_name_matcher_ftype matcher,
found_minimal_symbols found 
)
static

◆ lookup_minimal_symbol_mangled()

static void lookup_minimal_symbol_mangled ( const char *  lookup_name,
const char *  sfile,
struct objfile objfile,
struct minimal_symbol **  table,
unsigned int  hash,
int(*)(const char *, const char *)  namecmp,
found_minimal_symbols found 
)
static

◆ lookup_minimal_symbol_solib_trampoline()

struct bound_minimal_symbol lookup_minimal_symbol_solib_trampoline ( const char *  name,
struct objfile objf 
)

◆ lookup_minimal_symbol_text()

struct bound_minimal_symbol lookup_minimal_symbol_text ( const char *  name,
struct objfile objf 
)

◆ lookup_solib_trampoline_symbol_by_pc()

static struct minimal_symbol* lookup_solib_trampoline_symbol_by_pc ( CORE_ADDR  pc)
static

◆ minimal_symbol_upper_bound()

CORE_ADDR minimal_symbol_upper_bound ( struct bound_minimal_symbol  minsym)

◆ msymbol_hash()

unsigned int msymbol_hash ( const char *  string)

◆ msymbol_hash_iw()

unsigned int msymbol_hash_iw ( const char *  string)

Definition at line 107 of file minsyms.c.

References hash(), skip_spaces(), string, and SYMBOL_HASH_NEXT.

Referenced by default_search_name_hash().

◆ msymbol_is_function()

bool msymbol_is_function ( struct objfile objfile,
minimal_symbol minsym,
CORE_ADDR func_address_p 
)

◆ stub_gnu_ifunc_resolve_addr()

static CORE_ADDR stub_gnu_ifunc_resolve_addr ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static

Definition at line 955 of file minsyms.c.

References _, error(), and paddress().

◆ stub_gnu_ifunc_resolve_name()

static int stub_gnu_ifunc_resolve_name ( const char *  function_name,
CORE_ADDR function_address_p 
)
static

Definition at line 965 of file minsyms.c.

References _, and error().

◆ stub_gnu_ifunc_resolver_return_stop()

static void stub_gnu_ifunc_resolver_return_stop ( struct breakpoint b)
static

Definition at line 985 of file minsyms.c.

References _, and internal_error().

◆ stub_gnu_ifunc_resolver_stop()

static void stub_gnu_ifunc_resolver_stop ( struct breakpoint b)
static

Definition at line 976 of file minsyms.c.

References _, and internal_error().

◆ terminate_minimal_symbol_table()

void terminate_minimal_symbol_table ( struct objfile objfile)

Variable Documentation

◆ gnu_ifunc_fns_p

const struct gnu_ifunc_fns* gnu_ifunc_fns_p = &stub_gnu_ifunc_fns

Definition at line 1003 of file minsyms.c.

Referenced by _initialize_elfread().

◆ stub_gnu_ifunc_fns

const struct gnu_ifunc_fns stub_gnu_ifunc_fns
static
Initial value:
=
{
}
static CORE_ADDR stub_gnu_ifunc_resolve_addr(struct gdbarch *gdbarch, CORE_ADDR pc)
Definition: minsyms.c:955
static void stub_gnu_ifunc_resolver_return_stop(struct breakpoint *b)
Definition: minsyms.c:985
static void stub_gnu_ifunc_resolver_stop(struct breakpoint *b)
Definition: minsyms.c:976
static int stub_gnu_ifunc_resolve_name(const char *function_name, CORE_ADDR *function_address_p)
Definition: minsyms.c:965

Definition at line 993 of file minsyms.c.