GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
objfiles.c File Reference
#include "defs.h"
#include "bfd.h"
#include "symtab.h"
#include "symfile.h"
#include "objfiles.h"
#include "target.h"
#include "bcache.h"
#include "expression.h"
#include "parser-defs.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "gdbsupport/gdb_obstack.h"
#include "hashtab.h"
#include "breakpoint.h"
#include "block.h"
#include "dictionary.h"
#include "source.h"
#include "addrmap.h"
#include "arch-utils.h"
#include "exec.h"
#include "observable.h"
#include "complaints.h"
#include "solist.h"
#include "gdb_bfd.h"
#include "btrace.h"
#include "gdbsupport/pathstuff.h"
#include <algorithm>
#include <vector>

Go to the source code of this file.

Classes

struct  objfile_pspace_info
 
struct  static_link_htab_entry
 

Macros

#define TRY_TYPE(F)
 

Functions

static struct objfile_pspace_infoget_objfile_pspace_data (struct program_space *pspace)
 
void set_objfile_per_bfd (struct objfile *objfile)
 
void set_objfile_main_name (struct objfile *objfile, const char *name, enum language lang)
 
static hashval_t static_link_htab_entry_hash (const void *p)
 
static int static_link_htab_entry_eq (const void *p1, const void *p2)
 
void objfile_register_static_link (struct objfile *objfile, const struct block *block, const struct dynamic_prop *static_link)
 
const struct dynamic_propobjfile_lookup_static_link (struct objfile *objfile, const struct block *block)
 
static void add_to_objfile_sections (struct bfd *abfd, struct bfd_section *asect, struct objfile *objfile, int force)
 
void build_objfile_section_table (struct objfile *objfile)
 
int entry_point_address_query (CORE_ADDR *entry_p)
 
CORE_ADDR entry_point_address (void)
 
static void add_separate_debug_objfile (struct objfile *objfile, struct objfile *parent)
 
void free_objfile_separate_debug (struct objfile *objfile)
 
static void relocate_one_symbol (struct symbol *sym, struct objfile *objfile, const section_offsets &delta)
 
static int objfile_relocate1 (struct objfile *objfile, const section_offsets &new_offsets)
 
void objfile_relocate (struct objfile *objfile, const section_offsets &new_offsets)
 
static int objfile_rebase1 (struct objfile *objfile, CORE_ADDR slide)
 
void objfile_rebase (struct objfile *objfile, CORE_ADDR slide)
 
int objfile_has_full_symbols (struct objfile *objfile)
 
int objfile_has_symbols (struct objfile *objfile)
 
int have_partial_symbols (void)
 
int have_full_symbols (void)
 
void objfile_purge_solibs (void)
 
int have_minimal_symbols (void)
 
static bool sort_cmp (const struct obj_section *sect1, const obj_section *sect2)
 
static struct obj_sectionpreferred_obj_section (struct obj_section *a, struct obj_section *b)
 
static int insert_section_p (const struct bfd *abfd, const struct bfd_section *section)
 
static int filter_debuginfo_sections (struct obj_section **map, int map_size)
 
static int filter_overlapping_sections (struct obj_section **map, int map_size)
 
static void update_section_map (struct program_space *pspace, struct obj_section ***pmap, int *pmap_size)
 
static int bsearch_cmp (const void *key, const void *elt)
 
struct obj_sectionfind_pc_section (CORE_ADDR pc)
 
bool pc_in_section (CORE_ADDR pc, const char *name)
 
void objfiles_changed (void)
 
scoped_restore_tmpl< int > inhibit_section_map_updates (struct program_space *pspace)
 
bool is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile)
 
bool shared_objfile_contains_address_p (struct program_space *pspace, CORE_ADDR address)
 
void default_iterate_over_objfiles_in_search_order (gdbarch *gdbarch, iterate_over_objfiles_in_search_order_cb_ftype cb, objfile *current_objfile)
 
const char * objfile_name (const struct objfile *objfile)
 
const char * objfile_filename (const struct objfile *objfile)
 
const char * objfile_debug_name (const struct objfile *objfile)
 
const char * objfile_flavour_name (struct objfile *objfile)
 
struct typeobjfile_int_type (struct objfile *of, int size_in_bytes, bool unsigned_p)
 

Variables

static const registry< program_space >::key< objfile_pspace_infoobjfiles_pspace_data
 
static const registry< bfd >::key< objfile_per_bfd_storageobjfiles_bfd_data
 

Macro Definition Documentation

◆ TRY_TYPE

#define TRY_TYPE ( F)
Value:
int_type = (unsigned_p \
? builtin_type (of)->builtin_unsigned_ ## F \
: builtin_type (of)->builtin_ ## F); \
if (int_type != NULL && int_type->length () == size_in_bytes) \
return int_type
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
Definition gdbtypes.c:6168
@ F
Definition ia64-tdep.c:83

Function Documentation

◆ add_separate_debug_objfile()

static void add_separate_debug_objfile ( struct objfile * objfile,
struct objfile * parent )
static

◆ add_to_objfile_sections()

static void add_to_objfile_sections ( struct bfd * abfd,
struct bfd_section * asect,
struct objfile * objfile,
int force )
static

◆ bsearch_cmp()

static int bsearch_cmp ( const void * key,
const void * elt )
static

Definition at line 1113 of file objfiles.c.

References obj_section::addr(), and obj_section::endaddr().

Referenced by find_pc_section().

◆ build_objfile_section_table()

void build_objfile_section_table ( struct objfile * objfile)

◆ default_iterate_over_objfiles_in_search_order()

void default_iterate_over_objfiles_in_search_order ( gdbarch * gdbarch,
iterate_over_objfiles_in_search_order_cb_ftype cb,
objfile * current_objfile )

Definition at line 1247 of file objfiles.c.

References current_program_space, and program_space::objfiles().

◆ entry_point_address()

CORE_ADDR entry_point_address ( void )

◆ entry_point_address_query()

int entry_point_address_query ( CORE_ADDR * entry_p)

◆ filter_debuginfo_sections()

static int filter_debuginfo_sections ( struct obj_section ** map,
int map_size )
static

◆ filter_overlapping_sections()

static int filter_overlapping_sections ( struct obj_section ** map,
int map_size )
static

◆ find_pc_section()

struct obj_section * find_pc_section ( CORE_ADDR pc)

◆ free_objfile_separate_debug()

void free_objfile_separate_debug ( struct objfile * objfile)

◆ get_objfile_pspace_data()

static struct objfile_pspace_info * get_objfile_pspace_data ( struct program_space * pspace)
static

◆ have_full_symbols()

int have_full_symbols ( void )

◆ have_minimal_symbols()

int have_minimal_symbols ( void )

Definition at line 812 of file objfiles.c.

References current_program_space, and program_space::objfiles().

Referenced by start_command(), and symbol_not_found_error().

◆ have_partial_symbols()

int have_partial_symbols ( void )

◆ inhibit_section_map_updates()

scoped_restore_tmpl< int > inhibit_section_map_updates ( struct program_space * pspace)

Definition at line 1197 of file objfiles.c.

References get_objfile_pspace_data().

Referenced by svr4_handle_solib_event().

◆ insert_section_p()

static int insert_section_p ( const struct bfd * abfd,
const struct bfd_section * section )
static

Definition at line 925 of file objfiles.c.

References overlay_debugging.

Referenced by update_section_map().

◆ is_addr_in_objfile()

bool is_addr_in_objfile ( CORE_ADDR addr,
const struct objfile * objfile )

◆ objfile_debug_name()

const char * objfile_debug_name ( const struct objfile * objfile)

◆ objfile_filename()

const char * objfile_filename ( const struct objfile * objfile)

Definition at line 1270 of file objfiles.c.

References objfile::obfd.

Referenced by gdbpy_lookup_objfile().

◆ objfile_flavour_name()

const char * objfile_flavour_name ( struct objfile * objfile)

Definition at line 1289 of file objfiles.c.

References objfile::obfd.

Referenced by language_defn::read_var_value().

◆ objfile_has_full_symbols()

int objfile_has_full_symbols ( struct objfile * objfile)

Definition at line 740 of file objfiles.c.

References objfile::compunit_symtabs.

Referenced by have_full_symbols(), and objfile_has_symbols().

◆ objfile_has_symbols()

int objfile_has_symbols ( struct objfile * objfile)

◆ objfile_int_type()

struct type * objfile_int_type ( struct objfile * of,
int size_in_bytes,
bool unsigned_p )

Definition at line 1299 of file objfiles.c.

References TRY_TYPE.

Referenced by dwarf2_cu::addr_sized_int_type(), and read_tag_string_type().

◆ objfile_lookup_static_link()

const struct dynamic_prop * objfile_lookup_static_link ( struct objfile * objfile,
const struct block * block )

Definition at line 226 of file objfiles.c.

References static_link_htab_entry::block, and objfile::static_links.

Referenced by block::static_link().

◆ objfile_name()

const char * objfile_name ( const struct objfile * objfile)

Definition at line 1259 of file objfiles.c.

References objfile::obfd, and objfile::original_name.

Referenced by allocate_symtab(), auto_load_objfile_script(), auto_load_objfile_script_1(), build_error_marker_type(), lnp_state_machine::check_line_address(), clone_program_space(), coff_symtab_read(), collect_probes(), compare_probes(), compile_object_load(), create_dwp_v2_or_v5_section(), dbx_symfile_read(), die_containing_type(), do_module_cleanup(), expr::dump_for_expression(), dump_msymbols(), dump_objfile(), dump_psymtab(), dump_symtab_1(), dw2_expand_marked_cus(), dw2_symtab_iter_next(), dwarf2_build_frame_info(), dwarf2_build_psymtabs_hard(), dwarf2_fetch_constant_bytes(), dwarf2_fetch_die_loc_sect_off(), dwarf2_physname(), dwarf2_ranges_process(), dwarf2_read_debug_names(), dwarf2_read_gdb_index(), dwarf2_rnglists_process(), dwarf2_string_attr(), dwarf_decode_macro_bytes(), elf_read_minimal_symbols(), execute_script_contents(), filter_overlapping_sections(), find_separate_debug_file(), find_separate_debug_file_by_buildid(), find_separate_debug_file_by_debuglink(), find_separate_debug_file_in_section(), dw2_debug_names_iterator::find_vec_in_debug_names(), dw2_debug_names_iterator::find_vec_in_debug_names(), fixup_go_packaging(), follow_die_ref(), follow_die_ref_or_sig(), follow_die_sig(), gdbscm_objfile_filename(), gdbscm_progspace_filename(), get_alignment(), get_DW_AT_signature_type(), get_out_value_type(), get_regs_type(), get_signatured_type(), handle_stap_probe(), handle_variant(), handle_variant_part(), ignore_probe_p(), info_address_command(), info_probes_for_spops(), info_sources_worker(), info_symbol_command(), info_target_command(), minimal_symbol_reader::install(), is_known_support_routine(), jit_object_close_impl(), libpthread_objfile_p(), locexpr_describe_location_piece(), lookup_die_type(), lookup_dwo_cutu(), macho_check_dsym(), macho_symfile_relocate(), macho_symtab_read(), maintenance_check_symtabs(), maintenance_info_psymtabs(), maintenance_info_symtabs(), maintenance_print_msymbols(), maintenance_print_objfiles(), maintenance_print_one_line_table(), maintenance_print_psymbols(), maintenance_print_symbol_cache(), maintenance_print_symbol_cache_statistics(), maintenance_print_symbols(), maintenance_translate_address(), maybe_print_script_not_found_warning(), maybe_print_unsupported_script_warning(), maybe_set_alignment(), dw2_debug_names_iterator::next(), objfpy_get_filename(), objfpy_repr(), ofscm_print_objfile_smob(), open_and_init_dwp_file(), parse_probes_in_pspace(), print_objfile_statistics(), process_full_comp_unit(), process_imported_unit_die(), process_queue(), process_structure_scope(), pspy_get_filename(), psscm_print_pspace_smob(), quirk_rust_enum(), read_addr_index_1(), read_addrmap_from_aranges(), read_array_type(), read_call_site_scope(), read_common_block(), read_import_statement(), read_loclist_index(), read_one_sym(), read_rnglist_index(), read_str_index(), read_stub_str_index(), read_subrange_type(), read_tag_pointer_type(), read_typedef(), remove_symbol_file_command(), objfile::require_partial_symbols(), reread_symbols(), save_gdb_index_command(), scan_file_globals(), separate_debug_file_exists(), solib_aix_get_toc_value(), solib_read_symbols(), source_script_file(), symbol_file_clear(), target_translate_tls_address(), try_open_dwop_file(), try_thread_db_load_from_pdir_1(), type_name_or_error(), and xcoff_initial_scan().

◆ objfile_purge_solibs()

void objfile_purge_solibs ( void )

◆ objfile_rebase()

void objfile_rebase ( struct objfile * objfile,
CORE_ADDR slide )

◆ objfile_rebase1()

static int objfile_rebase1 ( struct objfile * objfile,
CORE_ADDR slide )
static

Definition at line 715 of file objfiles.c.

References objfile_relocate1(), and objfile::section_offsets.

Referenced by objfile_rebase().

◆ objfile_register_static_link()

void objfile_register_static_link ( struct objfile * objfile,
const struct block * block,
const struct dynamic_prop * static_link )

◆ objfile_relocate()

void objfile_relocate ( struct objfile * objfile,
const section_offsets & new_offsets )

◆ objfile_relocate1()

static int objfile_relocate1 ( struct objfile * objfile,
const section_offsets & new_offsets )
static

◆ objfiles_changed()

void objfiles_changed ( void )

◆ pc_in_section()

bool pc_in_section ( CORE_ADDR pc,
const char * name )

Definition at line 1175 of file objfiles.c.

References find_pc_section(), name, and obj_section::the_bfd_section.

Referenced by in_mips_stubs_section(), and in_plt_section().

◆ preferred_obj_section()

static struct obj_section * preferred_obj_section ( struct obj_section * a,
struct obj_section * b )
static

◆ relocate_one_symbol()

static void relocate_one_symbol ( struct symbol * sym,
struct objfile * objfile,
const section_offsets & delta )
static

◆ set_objfile_main_name()

void set_objfile_main_name ( struct objfile * objfile,
const char * name,
enum language lang )

◆ set_objfile_per_bfd()

void set_objfile_per_bfd ( struct objfile * objfile)

◆ shared_objfile_contains_address_p()

bool shared_objfile_contains_address_p ( struct program_space * pspace,
CORE_ADDR address )

◆ sort_cmp()

static bool sort_cmp ( const struct obj_section * sect1,
const obj_section * sect2 )
static

◆ static_link_htab_entry_eq()

static int static_link_htab_entry_eq ( const void * p1,
const void * p2 )
static

Definition at line 183 of file objfiles.c.

References static_link_htab_entry::block.

Referenced by objfile_register_static_link().

◆ static_link_htab_entry_hash()

static hashval_t static_link_htab_entry_hash ( const void * p)
static

Definition at line 171 of file objfiles.c.

References static_link_htab_entry::block.

Referenced by objfile_register_static_link().

◆ update_section_map()

static void update_section_map ( struct program_space * pspace,
struct obj_section *** pmap,
int * pmap_size )
static

Variable Documentation

◆ objfiles_bfd_data

const registry<bfd>::key<objfile_per_bfd_storage> objfiles_bfd_data
static

Definition at line 108 of file objfiles.c.

Referenced by set_objfile_per_bfd().

◆ objfiles_pspace_data

const registry<program_space>::key<objfile_pspace_info> objfiles_pspace_data
static

Definition at line 82 of file objfiles.c.

Referenced by get_objfile_pspace_data().