This changes get_objfile_arch to be a new inline method,
objfile::arch.
To my surprise, this function came up while profiling DWARF psymbol
reading. Making this change improved performance from 1.986 seconds
to 1.869 seconds. Both measurements were done by taking the mean of
10 runs on a fixed copy of the gdb executable.
gdb/ChangeLog
2020-04-18 Tom Tromey <
[email protected]>
* xcoffread.c (enter_line_range, scan_xcoff_symtab): Update.
* value.c (value_fn_field): Update.
* valops.c (find_function_in_inferior)
(value_allocate_space_in_inferior): Update.
* tui/tui-winsource.c (tui_update_source_windows_with_line):
Update.
* tui/tui-source.c (tui_source_window::set_contents): Update.
* symtab.c (lookup_global_or_static_symbol)
(find_function_start_sal_1, skip_prologue_sal)
(print_msymbol_info, find_gnu_ifunc, symbol_arch): Update.
* symmisc.c (dump_msymbols, dump_symtab_1)
(maintenance_print_one_line_table): Update.
* symfile.c (init_entry_point_info, section_is_mapped)
(list_overlays_command, simple_read_overlay_table)
(simple_overlay_update_1): Update.
* stap-probe.c (handle_stap_probe): Update.
* stabsread.c (dbx_init_float_type, define_symbol)
(read_one_struct_field, read_enum_type, read_range_type): Update.
* source.c (info_line_command): Update.
* python/python.c (gdbpy_source_objfile_script)
(gdbpy_execute_objfile_script): Update.
* python/py-type.c (save_objfile_types): Update.
* python/py-objfile.c (py_free_objfile): Update.
* python/py-inferior.c (python_new_objfile): Update.
* psymtab.c (psym_find_pc_sect_compunit_symtab, dump_psymtab)
(dump_psymtab_addrmap_1, maintenance_info_psymtabs)
(maintenance_check_psymtabs): Update.
* printcmd.c (info_address_command): Update.
* objfiles.h (struct objfile) <arch>: New method, from
get_objfile_arch.
(get_objfile_arch): Don't declare.
* objfiles.c (get_objfile_arch): Remove.
(filter_overlapping_sections): Update.
* minsyms.c (msymbol_is_function): Update.
* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines)
(output_nondebug_symbol): Update.
* mdebugread.c (parse_symbol, basic_type, parse_partial_symbols)
(mdebug_expand_psymtab): Update.
* machoread.c (macho_add_oso_symfile): Update.
* linux-tdep.c (linux_infcall_mmap, linux_infcall_munmap):
Update.
* linux-fork.c (checkpoint_command): Update.
* linespec.c (convert_linespec_to_sals): Update.
* jit.c (finalize_symtab): Update.
* infrun.c (insert_exception_resume_from_probe): Update.
* ia64-tdep.c (ia64_find_unwind_table): Update.
* hppa-tdep.c (internalize_unwinds): Update.
* gdbtypes.c (get_type_arch, init_float_type, objfile_type):
Update.
* gcore.c (call_target_sbrk): Update.
* elfread.c (record_minimal_symbol, elf_symtab_read)
(elf_rel_plt_read, elf_gnu_ifunc_record_cache)
(elf_gnu_ifunc_resolve_by_got): Update.
* dwarf2/read.c (create_addrmap_from_index)
(create_addrmap_from_aranges, dw2_find_pc_sect_compunit_symtab)
(read_debug_names_from_section)
(process_psymtab_comp_unit_reader, add_partial_symbol)
(add_partial_subprogram, process_full_comp_unit)
(read_file_scope, read_func_scope, read_lexical_block_scope)
(read_call_site_scope, dwarf2_ranges_read)
(dwarf2_record_block_ranges, dwarf2_add_field)
(mark_common_block_symbol_computed, read_tag_pointer_type)
(read_tag_string_type, dwarf2_init_float_type)
(dwarf2_init_complex_target_type, read_base_type)
(partial_die_info::read, partial_die_info::read)
(read_attribute_value, dwarf_decode_lines_1, new_symbol)
(dwarf2_fetch_die_loc_sect_off): Update.
* dwarf2/loc.c (dwarf2_find_location_expression)
(class dwarf_evaluate_loc_desc, rw_pieced_value)
(dwarf2_evaluate_loc_desc_full, dwarf2_locexpr_baton_eval)
(dwarf2_loc_desc_get_symbol_read_needs)
(locexpr_describe_location_piece, locexpr_describe_location_1)
(loclist_describe_location): Update.
* dwarf2/index-write.c (write_debug_names): Update.
* dwarf2/frame.c (dwarf2_build_frame_info): Update.
* dtrace-probe.c (dtrace_process_dof): Update.
* dbxread.c (read_dbx_symtab, dbx_end_psymtab)
(process_one_symbol): Update.
* ctfread.c (ctf_init_float_type, read_base_type): Update.
* coffread.c (coff_symtab_read, enter_linenos, decode_base_type)
(coff_read_enum_type): Update.
* cli/cli-cmds.c (edit_command, list_command): Update.
* buildsym.c (buildsym_compunit::finish_block_internal): Update.
* breakpoint.c (create_overlay_event_breakpoint)
(create_longjmp_master_breakpoint)
(create_std_terminate_master_breakpoint)
(create_exception_master_breakpoint, get_sal_arch): Update.
* block.c (block_gdbarch): Update.
* annotate.c (annotate_source_line): Update.
+
+ * xcoffread.c (enter_line_range, scan_xcoff_symtab): Update.
+ * value.c (value_fn_field): Update.
+ * valops.c (find_function_in_inferior)
+ (value_allocate_space_in_inferior): Update.
+ * tui/tui-winsource.c (tui_update_source_windows_with_line):
+ Update.
+ * tui/tui-source.c (tui_source_window::set_contents): Update.
+ * symtab.c (lookup_global_or_static_symbol)
+ (find_function_start_sal_1, skip_prologue_sal)
+ (print_msymbol_info, find_gnu_ifunc, symbol_arch): Update.
+ * symmisc.c (dump_msymbols, dump_symtab_1)
+ (maintenance_print_one_line_table): Update.
+ * symfile.c (init_entry_point_info, section_is_mapped)
+ (list_overlays_command, simple_read_overlay_table)
+ (simple_overlay_update_1): Update.
+ * stap-probe.c (handle_stap_probe): Update.
+ * stabsread.c (dbx_init_float_type, define_symbol)
+ (read_one_struct_field, read_enum_type, read_range_type): Update.
+ * source.c (info_line_command): Update.
+ * python/python.c (gdbpy_source_objfile_script)
+ (gdbpy_execute_objfile_script): Update.
+ * python/py-type.c (save_objfile_types): Update.
+ * python/py-objfile.c (py_free_objfile): Update.
+ * python/py-inferior.c (python_new_objfile): Update.
+ * psymtab.c (psym_find_pc_sect_compunit_symtab, dump_psymtab)
+ (dump_psymtab_addrmap_1, maintenance_info_psymtabs)
+ (maintenance_check_psymtabs): Update.
+ * printcmd.c (info_address_command): Update.
+ * objfiles.h (struct objfile) <arch>: New method, from
+ get_objfile_arch.
+ (get_objfile_arch): Don't declare.
+ * objfiles.c (get_objfile_arch): Remove.
+ (filter_overlapping_sections): Update.
+ * minsyms.c (msymbol_is_function): Update.
+ * mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines)
+ (output_nondebug_symbol): Update.
+ * mdebugread.c (parse_symbol, basic_type, parse_partial_symbols)
+ (mdebug_expand_psymtab): Update.
+ * machoread.c (macho_add_oso_symfile): Update.
+ * linux-tdep.c (linux_infcall_mmap, linux_infcall_munmap):
+ Update.
+ * linux-fork.c (checkpoint_command): Update.
+ * linespec.c (convert_linespec_to_sals): Update.
+ * jit.c (finalize_symtab): Update.
+ * infrun.c (insert_exception_resume_from_probe): Update.
+ * ia64-tdep.c (ia64_find_unwind_table): Update.
+ * hppa-tdep.c (internalize_unwinds): Update.
+ * gdbtypes.c (get_type_arch, init_float_type, objfile_type):
+ Update.
+ * gcore.c (call_target_sbrk): Update.
+ * elfread.c (record_minimal_symbol, elf_symtab_read)
+ (elf_rel_plt_read, elf_gnu_ifunc_record_cache)
+ (elf_gnu_ifunc_resolve_by_got): Update.
+ * dwarf2/read.c (create_addrmap_from_index)
+ (create_addrmap_from_aranges, dw2_find_pc_sect_compunit_symtab)
+ (read_debug_names_from_section)
+ (process_psymtab_comp_unit_reader, add_partial_symbol)
+ (add_partial_subprogram, process_full_comp_unit)
+ (read_file_scope, read_func_scope, read_lexical_block_scope)
+ (read_call_site_scope, dwarf2_ranges_read)
+ (dwarf2_record_block_ranges, dwarf2_add_field)
+ (mark_common_block_symbol_computed, read_tag_pointer_type)
+ (read_tag_string_type, dwarf2_init_float_type)
+ (dwarf2_init_complex_target_type, read_base_type)
+ (partial_die_info::read, partial_die_info::read)
+ (read_attribute_value, dwarf_decode_lines_1, new_symbol)
+ (dwarf2_fetch_die_loc_sect_off): Update.
+ * dwarf2/loc.c (dwarf2_find_location_expression)
+ (class dwarf_evaluate_loc_desc, rw_pieced_value)
+ (dwarf2_evaluate_loc_desc_full, dwarf2_locexpr_baton_eval)
+ (dwarf2_loc_desc_get_symbol_read_needs)
+ (locexpr_describe_location_piece, locexpr_describe_location_1)
+ (loclist_describe_location): Update.
+ * dwarf2/index-write.c (write_debug_names): Update.
+ * dwarf2/frame.c (dwarf2_build_frame_info): Update.
+ * dtrace-probe.c (dtrace_process_dof): Update.
+ * dbxread.c (read_dbx_symtab, dbx_end_psymtab)
+ (process_one_symbol): Update.
+ * ctfread.c (ctf_init_float_type, read_base_type): Update.
+ * coffread.c (coff_symtab_read, enter_linenos, decode_base_type)
+ (coff_read_enum_type): Update.
+ * cli/cli-cmds.c (edit_command, list_command): Update.
+ * buildsym.c (buildsym_compunit::finish_block_internal): Update.
+ * breakpoint.c (create_overlay_event_breakpoint)
+ (create_longjmp_master_breakpoint)
+ (create_std_terminate_master_breakpoint)
+ (create_exception_master_breakpoint, get_sal_arch): Update.
+ * block.c (block_gdbarch): Update.
+ * annotate.c (annotate_source_line): Update.
+
* auto-load.c (show_auto_load_cmd): Remove.
return;
annotate_source (s->fullname, line, (int) (*offsets)[line - 1],
- mid_statement, get_objfile_arch (SYMTAB_OBJFILE (s)),
+ mid_statement, SYMTAB_OBJFILE (s)->arch (),
pc);
}
}
if (BLOCK_FUNCTION (block) != NULL)
return symbol_arch (BLOCK_FUNCTION (block));
- return get_objfile_arch (block_objfile (block));
+ return block_objfile (block)->arch ();
}
/* See block.h. */
}
addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
- b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
+ b = create_internal_breakpoint (objfile->arch (), addr,
bp_overlay_event,
&internal_breakpoint_ops);
initialize_explicit_location (&explicit_loc);
struct gdbarch *gdbarch;
struct breakpoint_objfile_data *bp_objfile_data;
- gdbarch = get_objfile_arch (objfile);
+ gdbarch = objfile->arch ();
bp_objfile_data = get_breakpoint_objfile_data (objfile);
}
addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
- b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
+ b = create_internal_breakpoint (objfile->arch (), addr,
bp_std_terminate_master,
&internal_breakpoint_ops);
initialize_explicit_location (&explicit_loc);
if (!bp_objfile_data->exception_probes.empty ())
{
- gdbarch = get_objfile_arch (objfile);
+ gdbarch = objfile->arch ();
for (probe *p : bp_objfile_data->exception_probes)
{
if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
continue;
- gdbarch = get_objfile_arch (objfile);
+ gdbarch = objfile->arch ();
if (bp_objfile_data->exception_msym.minsym == NULL)
{
get_sal_arch (struct symtab_and_line sal)
{
if (sal.section)
- return get_objfile_arch (sal.section->objfile);
+ return sal.section->objfile->arch ();
if (sal.symtab)
- return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+ return SYMTAB_OBJFILE (sal.symtab)->arch ();
return NULL;
}
CORE_ADDR start, CORE_ADDR end,
int is_global, int expandable)
{
- struct gdbarch *gdbarch = get_objfile_arch (m_objfile);
+ struct gdbarch *gdbarch = m_objfile->arch ();
struct pending *next, *next1;
struct block *block;
struct pending_block *pblock;
error (_("No source file for address %s."),
paddress (get_current_arch (), sal.pc));
- gdbarch = get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+ gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
sym = find_pc_function (sal.pc);
if (sym)
printf_filtered ("%s is in %s (%s:%d).\n",
error (_("No source file for address %s."),
paddress (get_current_arch (), sal.pc));
- gdbarch = get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+ gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
sym = find_pc_function (sal.pc);
if (sym)
printf_filtered ("%s is in %s (%s:%d).\n",
long symtab_offset, unsigned int nsyms,
struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct context_stack *newobj = nullptr;
struct coff_symbol coff_symbol;
struct coff_symbol *cs = &coff_symbol;
enter_linenos (long file_offset, int first_line,
int last_line, struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
char *rawptr;
struct internal_lineno lptr;
union internal_auxent *aux,
struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct type *type;
switch (c_type)
coff_read_enum_type (int index, int length, int lastsym,
struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct symbol *sym;
struct type *type;
int nsyms = 0;
const char *name,
const char *name_hint)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const struct floatformat **format;
struct type *type;
if (kind == CTF_K_INTEGER)
{
uint32_t issigned, ischar, isbool;
- struct gdbarch *gdbarch = get_objfile_arch (of);
+ struct gdbarch *gdbarch = of->arch ();
issigned = cet.cte_format & CTF_INT_SIGNED;
ischar = cet.cte_format & CTF_INT_CHAR;
static void
read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct external_nlist *bufp = 0; /* =0 avoids gcc -Wall glitch. */
struct internal_nlist nlist;
CORE_ADDR text_addr;
int textlow_not_set)
{
int i;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
if (capping_symbol_offset != -1)
LDSYMLEN (pst) = capping_symbol_offset - LDSYMOFF (pst);
const section_offsets §ion_offsets,
struct objfile *objfile, enum language language)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct context_stack *newobj;
struct context_stack cstk;
/* This remembers the address of the start of a function. It is
std::vector<std::unique_ptr<probe>> *probesp,
struct dtrace_dof_hdr *dof)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct dtrace_dof_sect *section;
int i;
dwarf2_cie_table cie_table;
dwarf2_fde_table fde_table;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
/* Build a minimal decoding of the DWARF2 compilation unit. */
std::unique_ptr<comp_unit> unit (new comp_unit (objfile));
const bool dwarf5_is_dwarf64 = check_dwarf64_offsets (dwarf2_per_objfile);
struct objfile *objfile = dwarf2_per_objfile->objfile;
const enum bfd_endian dwarf5_byte_order
- = gdbarch_byte_order (get_objfile_arch (objfile));
+ = gdbarch_byte_order (objfile->arch ());
/* The CU list is already sorted, so we don't need to do additional
work here. Also, the debug_types entries do not appear in
size_t *locexpr_length, CORE_ADDR pc)
{
struct objfile *objfile = baton->per_cu->objfile ();
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
unsigned int addr_size = baton->per_cu->addr_size ();
int signed_addr_p = bfd_get_sign_extend_vma (objfile->obfd);
(CORE_ADDR) 0);
scoped_restore save_arch = make_scoped_restore (&this->gdbarch);
- this->gdbarch = get_objfile_arch (per_cu->objfile ());
+ this->gdbarch = per_cu->objfile ()->arch ();
scoped_restore save_addr_size = make_scoped_restore (&this->addr_size);
this->addr_size = per_cu->addr_size ();
scoped_restore save_offset = make_scoped_restore (&this->offset);
}
struct objfile *objfile = c->per_cu->objfile ();
- struct gdbarch *objfile_gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *objfile_gdbarch = objfile->arch ();
ULONGEST stack_value_size_bits
= 8 * TYPE_LENGTH (value_type (p->v.value));
scoped_value_mark free_values;
- ctx.gdbarch = get_objfile_arch (objfile);
+ ctx.gdbarch = objfile->arch ();
ctx.addr_size = per_cu->addr_size ();
ctx.ref_addr_size = per_cu->ref_addr_size ();
ctx.offset = per_cu->text_offset ();
size_t n = TYPE_LENGTH (value_type (value));
size_t len = TYPE_LENGTH (subobj_type);
size_t max = TYPE_LENGTH (type);
- struct gdbarch *objfile_gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *objfile_gdbarch = objfile->arch ();
if (subobj_byte_offset + len > max)
invalid_synthetic_pointer ();
objfile = dlbaton->per_cu->objfile ();
- ctx.gdbarch = get_objfile_arch (objfile);
+ ctx.gdbarch = objfile->arch ();
ctx.addr_size = dlbaton->per_cu->addr_size ();
ctx.ref_addr_size = dlbaton->per_cu->ref_addr_size ();
ctx.offset = dlbaton->per_cu->text_offset ();
ctx.needs = SYMBOL_NEEDS_NONE;
ctx.per_cu = per_cu;
- ctx.gdbarch = get_objfile_arch (objfile);
+ ctx.gdbarch = objfile->arch ();
ctx.addr_size = per_cu->addr_size ();
ctx.ref_addr_size = per_cu->ref_addr_size ();
ctx.offset = per_cu->text_offset ();
const gdb_byte *data, const gdb_byte *end,
unsigned int addr_size)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
size_t leb128_size;
if (data[0] >= DW_OP_reg0 && data[0] <= DW_OP_reg31)
{
fprintf_filtered (stream, _("a complex DWARF expression:\n"));
data = disassemble_dwarf_expression (stream,
- get_objfile_arch (objfile),
+ objfile->arch (),
addr_size, offset_size, data,
data, end, 0,
dwarf_always_disassemble,
= (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
const gdb_byte *loc_ptr, *buf_end;
struct objfile *objfile = dlbaton->per_cu->objfile ();
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
unsigned int addr_size = dlbaton->per_cu->addr_size ();
int offset_size = dlbaton->per_cu->offset_size ();
struct mapped_index *index)
{
struct objfile *objfile = dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const gdb_byte *iter, *end;
struct addrmap *mutable_map;
CORE_ADDR baseaddr;
{
struct objfile *objfile = dwarf2_per_objfile->objfile;
bfd *abfd = objfile->obfd;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const CORE_ADDR baseaddr = objfile->text_section_offset ();
auto_obstack temp_obstack;
if (warn_if_readin && data->v.quick->compunit_symtab)
warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
- paddress (get_objfile_arch (objfile), pc));
+ paddress (objfile->arch (), pc));
result
= recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
section->read (objfile);
- map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
+ map.dwarf5_byte_order = gdbarch_byte_order (objfile->arch ());
const gdb_byte *addr = section->buffer;
{
struct dwarf2_cu *cu = reader->cu;
struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct dwarf2_per_cu_data *per_cu = cu->per_cu;
CORE_ADDR baseaddr;
CORE_ADDR best_lowpc = 0, best_highpc = 0;
struct dwarf2_per_objfile *dwarf2_per_objfile
= cu->per_cu->dwarf2_per_objfile;
struct objfile *objfile = dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
CORE_ADDR addr = 0;
const char *actual_name = NULL;
CORE_ADDR baseaddr;
if (set_addrmap)
{
struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
CORE_ADDR baseaddr;
CORE_ADDR this_highpc;
CORE_ADDR this_lowpc;
struct dwarf2_cu *cu = per_cu->cu;
struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
struct objfile *objfile = dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
CORE_ADDR lowpc, highpc;
struct compunit_symtab *cust;
CORE_ADDR baseaddr;
struct dwarf2_per_objfile *dwarf2_per_objfile
= cu->per_cu->dwarf2_per_objfile;
struct objfile *objfile = dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
CORE_ADDR lowpc = ((CORE_ADDR) -1);
CORE_ADDR highpc = ((CORE_ADDR) 0);
struct attribute *attr;
read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
{
struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct context_stack *newobj;
CORE_ADDR lowpc;
CORE_ADDR highpc;
read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
{
struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
CORE_ADDR lowpc, highpc;
struct die_info *child_die;
CORE_ADDR baseaddr;
read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
{
struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
CORE_ADDR pc, baseaddr;
struct attribute *attr;
struct call_site *call_site, call_site_local;
dwarf2_psymtab *ranges_pst)
{
struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const CORE_ADDR baseaddr = objfile->text_section_offset ();
int low_set = 0;
CORE_ADDR low = 0;
CORE_ADDR baseaddr, struct dwarf2_cu *cu)
{
struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct attribute *attr;
struct attribute *attr_high;
struct dwarf2_cu *cu)
{
struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct nextfield *new_field;
struct attribute *attr;
struct field *fp;
struct dwarf2_locexpr_baton *baton;
gdb_byte *ptr;
unsigned int cu_off;
- enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
+ enum bfd_endian byte_order = gdbarch_byte_order (objfile->arch ());
LONGEST offset = 0;
gdb_assert (common_loc && member_loc);
read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
{
struct gdbarch *gdbarch
- = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
+ = cu->per_cu->dwarf2_per_objfile->objfile->arch ();
struct comp_unit_head *cu_header = &cu->header;
struct type *type;
struct attribute *attr_byte_size;
read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
{
struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct type *type, *range_type, *index_type, *char_type;
struct attribute *attr;
struct dynamic_prop prop;
dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
const char *name_hint, enum bfd_endian byte_order)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const struct floatformat **format;
struct type *type;
int bits, const char *name_hint,
enum bfd_endian byte_order)
{
- gdbarch *gdbarch = get_objfile_arch (objfile);
+ gdbarch *gdbarch = objfile->arch ();
struct type *tt = nullptr;
/* Try to find a suitable floating point builtin type of size BITS.
if (!name)
complaint (_("DW_AT_name missing from DW_TAG_base_type"));
- arch = get_objfile_arch (objfile);
+ arch = objfile->arch ();
enum bfd_endian byte_order = gdbarch_byte_order (arch);
attr = dwarf2_attr (die, DW_AT_endianity, cu);
if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
{
struct objfile *objfile = dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
complaint (_("DW_AT_low_pc %s is zero "
"for DIE at %s [in module %s]"),
else if (lowpc >= highpc)
{
struct objfile *objfile = dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
"for DIE at %s [in module %s]"),
struct dwarf2_per_objfile *dwarf2_per_objfile
= cu->per_cu->dwarf2_per_objfile;
struct objfile *objfile = dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
bfd *abfd = reader->abfd;
struct comp_unit_head *cu_header = &cu->header;
unsigned int bytes_read;
info_ptr += bytes_read;
break;
case DW_FORM_addr:
- DW_ADDR (attr) = cu->header.read_address (abfd, info_ptr, &bytes_read);
- DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
- info_ptr += bytes_read;
+ {
+ struct gdbarch *gdbarch = objfile->arch ();
+ DW_ADDR (attr) = cu->header.read_address (abfd, info_ptr, &bytes_read);
+ DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
+ info_ptr += bytes_read;
+ }
break;
case DW_FORM_block2:
blk = dwarf_alloc_block (cu);
CORE_ADDR baseaddr;
struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
bfd *abfd = objfile->obfd;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
/* True if we're recording line info (as opposed to building partial
symtabs and just interested in finding include files mentioned by
the line number program). */
struct dwarf2_per_objfile *dwarf2_per_objfile
= cu->per_cu->dwarf2_per_objfile;
struct objfile *objfile = dwarf2_per_objfile->objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct symbol *sym = NULL;
const char *name;
struct attribute *attr = NULL;
{
CORE_ADDR pc = (*get_frame_pc) (baton);
CORE_ADDR baseaddr = objfile->text_section_offset ();
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
for (const auto &cand_off
: dwarf2_per_objfile->abstract_to_concrete[die->sect_off])
enum minimal_symbol_type ms_type,
asection *bfd_section, struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
if (ms_type == mst_text || ms_type == mst_file_text
|| ms_type == mst_text_gnu_ifunc)
long number_of_symbols, asymbol **symbol_table,
bool copy_names)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
asymbol *sym;
long i;
CORE_ADDR symaddr;
const struct elf_backend_data *bed = get_elf_backend_data (obfd);
asection *relplt, *got_plt;
bfd_size_type reloc_count, reloc;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
size_t ptr_size = TYPE_LENGTH (ptr_type);
{
struct elf_gnu_ifunc_cache *entry_found_p
= (struct elf_gnu_ifunc_cache *) *slot;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
if (entry_found_p->addr != addr)
{
for (objfile *objfile : current_program_space->objfiles ())
{
bfd *obfd = objfile->obfd;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
size_t ptr_size = TYPE_LENGTH (ptr_type);
CORE_ADDR pointer_address, addr;
else
return (bfd_vma) 0;
- gdbarch = get_objfile_arch (sbrk_objf);
+ gdbarch = sbrk_objf->arch ();
target_sbrk_arg = value_from_longest (builtin_type (gdbarch)->builtin_int,
sbrk_arg);
gdb_assert (target_sbrk_arg);
struct gdbarch *arch;
if (TYPE_OBJFILE_OWNED (type))
- arch = get_objfile_arch (TYPE_OWNER (type).objfile);
+ arch = TYPE_OWNER (type).objfile->arch ();
else
arch = TYPE_OWNER (type).gdbarch;
{
if (byte_order == BFD_ENDIAN_UNKNOWN)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
byte_order = gdbarch_byte_order (gdbarch);
}
const struct floatformat *fmt = floatformats[byte_order];
1, struct objfile_type);
/* Use the objfile architecture to determine basic type properties. */
- gdbarch = get_objfile_arch (objfile);
+ gdbarch = objfile->arch ();
/* Basic types. */
objfile_type->builtin_void
if (size > 0)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
unsigned long tmp;
unsigned i;
char *buf = (char *) alloca (size);
dip->start_ip = p_text->p_vaddr + load_base;
dip->end_ip = dip->start_ip + p_text->p_memsz;
- dip->gp = ia64_find_global_pointer (get_objfile_arch (objfile), ip);
+ dip->gp = ia64_find_global_pointer (objfile->arch (), ip);
dip->format = UNW_INFO_FORMAT_REMOTE_TABLE;
dip->u.rti.name_ptr = (unw_word_t) bfd_get_filename (bfd);
dip->u.rti.segbase = segbase;
if (debug_infrun)
fprintf_unfiltered (gdb_stdlog,
"infrun: exception resume at %s\n",
- paddress (get_objfile_arch (probe->objfile),
+ paddress (probe->objfile->arch (),
handler));
bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame),
{
struct block *new_block = allocate_block (&objfile->objfile_obstack);
struct symbol *block_name = allocate_symbol (objfile);
- struct type *block_type = arch_type (get_objfile_arch (objfile),
+ struct type *block_type = arch_type (objfile->arch (),
TYPE_CODE_VOID,
TARGET_CHAR_BIT,
"void");
if (MSYMBOL_TYPE (elem.minsym) == mst_data_gnu_ifunc)
{
struct gdbarch *gdbarch
- = get_objfile_arch (elem.objfile);
+ = elem.objfile->arch ();
msym_addr
= (gdbarch_convert_from_func_ptr_addr
(gdbarch,
if (!fork_fn)
error (_("checkpoint: can't find fork function in inferior."));
- gdbarch = get_objfile_arch (fork_objf);
+ gdbarch = fork_objf->arch ();
ret = value_from_longest (builtin_type (gdbarch)->builtin_int, 0);
/* Tell linux-nat.c that we're checkpointing this inferior. */
"mmap" uses 64-bit off_t on x86_64 and 32-bit off_t on i386 and x32. */
struct value *mmap_val = find_function_in_inferior ("mmap64", &objf);
struct value *addr_val;
- struct gdbarch *gdbarch = get_objfile_arch (objf);
+ struct gdbarch *gdbarch = objf->arch ();
CORE_ADDR retval;
enum
{
struct objfile *objf;
struct value *munmap_val = find_function_in_inferior ("munmap", &objf);
struct value *retval_val;
- struct gdbarch *gdbarch = get_objfile_arch (objf);
+ struct gdbarch *gdbarch = objf->arch ();
LONGEST retval;
enum
{
{
if (mach_o_debug_level > 4)
{
- struct gdbarch *arch = get_objfile_arch (main_objfile);
+ struct gdbarch *arch = main_objfile->arch ();
printf_unfiltered
(_("Adding symbol %s (addr: %s)\n"),
sym->name, paddress (arch, sym->value));
if (mach_o_debug_level > 3)
{
- struct gdbarch *arch = get_objfile_arch (main_objfile);
+ struct gdbarch *arch = main_objfile->arch ();
printf_unfiltered
(_("resolve sect %s with %s (set to %s)\n"),
sec->name, sym->name,
parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
const section_offsets §ion_offsets, struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const bfd_size_type external_sym_size = debug_swap->external_sym_size;
void (*const swap_sym_in) (bfd *, void *, SYMR *) = debug_swap->swap_sym_in;
const char *name;
static struct type *
basic_type (int bt, struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct type **map_bt = basic_type_data.get (objfile);
struct type *tp;
parse_partial_symbols (minimal_symbol_reader &reader,
struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const bfd_size_type external_sym_size = debug_swap->external_sym_size;
const bfd_size_type external_rfd_size = debug_swap->external_rfd_size;
const bfd_size_type external_ext_size = debug_swap->external_ext_size;
if (processing_gcc_compilation != 0)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
/* This symbol table contains stabs-in-ecoff entries. */
already sorted by increasing values in the symbol table, so no
need to perform any other sorting. */
- gdbarch = get_objfile_arch (SYMTAB_OBJFILE (s));
+ gdbarch = SYMTAB_OBJFILE (s)->arch ();
ui_out_emit_list list_emitter (uiout, "lines");
if (SYMTAB_LINETABLE (s) != NULL && SYMTAB_LINETABLE (s)->nitems > 0)
output_nondebug_symbol (ui_out *uiout,
const struct bound_minimal_symbol &msymbol)
{
- struct gdbarch *gdbarch = get_objfile_arch (msymbol.objfile);
+ struct gdbarch *gdbarch = msymbol.objfile->arch ();
ui_out_emit_tuple tuple_emitter (uiout, NULL);
uiout->field_core_addr ("address", gdbarch,
case mst_file_bss:
case mst_data_gnu_ifunc:
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
CORE_ADDR pc
= gdbarch_convert_from_func_ptr_addr (gdbarch, msym_addr,
current_top_target ());
per_bfd = get_objfile_bfd_data (this, abfd);
}
-/* Retrieve the gdbarch associated with OBJFILE. */
-
-struct gdbarch *
-get_objfile_arch (const struct objfile *objfile)
-{
- return objfile->per_bfd->gdbarch;
-}
-
/* If there is a valid and known entry point, function fills *ENTRY_P with it
and returns non-zero; otherwise it returns zero. */
const CORE_ADDR sect2_endaddr = obj_section_endaddr (sect2);
- struct gdbarch *const gdbarch = get_objfile_arch (objf1);
+ struct gdbarch *const gdbarch = objf1->arch ();
complaint (_("unexpected overlap between:\n"
" (A) section `%s' from `%s' [%s, %s)\n"
str.size () + 1);
}
+ /* Retrieve the gdbarch associated with this objfile. */
+ struct gdbarch *arch () const
+ {
+ return per_bfd->gdbarch;
+ }
+
/* The object file's original name as specified by the user,
made absolute, and tilde-expanded. However, it is not canonicalized
/* Declarations for functions defined in objfiles.c */
-extern struct gdbarch *get_objfile_arch (const struct objfile *);
-
extern int entry_point_address_query (CORE_ADDR *entry_p);
extern CORE_ADDR entry_point_address (void);
{
struct objfile *objfile = msymbol.objfile;
- gdbarch = get_objfile_arch (objfile);
+ gdbarch = objfile->arch ();
load_addr = BMSYMBOL_VALUE_ADDRESS (msymbol);
printf_filtered ("Symbol \"");
continue, so let's not. */
warning (_("\
(Internal error: pc %s in read in psymtab, but not in symtab.)\n"),
- paddress (get_objfile_arch (objfile), pc));
+ paddress (objfile->arch (), pc));
psymtab_to_symtab (objfile, ps);
return ps->get_compunit_symtab ();
}
dump_psymtab (struct objfile *objfile, struct partial_symtab *psymtab,
struct ui_file *outfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
int i;
if (psymtab->anonymous)
{
struct dump_psymtab_addrmap_data *data
= (struct dump_psymtab_addrmap_data *) datap;
- struct gdbarch *gdbarch = get_objfile_arch (data->objfile);
+ struct gdbarch *gdbarch = data->objfile->arch ();
struct partial_symtab *addrmap_psymtab = (struct partial_symtab *) obj;
const char *psymtab_address_or_end = NULL;
ALL_PSPACES (pspace)
for (objfile *objfile : pspace->objfiles ())
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
/* We don't want to print anything for this objfile until we
actually find a symtab whose name matches. */
for (objfile *objfile : current_program_space->objfiles ())
for (partial_symtab *ps : require_partial_symbols (objfile, true))
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
/* We don't call psymtab_to_symtab here because that may cause symtab
expansion. When debugging a problem it helps if checkers leave
return;
gdbpy_enter enter_py (objfile != NULL
- ? get_objfile_arch (objfile)
+ ? objfile->arch ()
: target_gdbarch (),
current_language);
static void
py_free_objfile (struct objfile *objfile, void *datum)
{
- gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
+ gdbpy_enter enter_py (objfile->arch (), current_language);
gdbpy_ref<objfile_object> object ((objfile_object *) datum);
object->objfile = NULL;
}
/* This prevents another thread from freeing the objects we're
operating on. */
- gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
+ gdbpy_enter enter_py (objfile->arch (), current_language);
copied_types = create_copied_types_hash (objfile);
if (!gdb_python_initialized)
return;
- gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
+ gdbpy_enter enter_py (objfile->arch (), current_language);
gdbpy_current_objfile = objfile;
python_run_simple_file (file, filename);
if (!gdb_python_initialized)
return;
- gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
+ gdbpy_enter enter_py (objfile->arch (), current_language);
gdbpy_current_objfile = objfile;
PyRun_SimpleString (script);
else if (sal.line > 0
&& find_line_pc_range (sal, &start_pc, &end_pc))
{
- struct gdbarch *gdbarch
- = get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+ struct gdbarch *gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
if (start_pc == end_pc)
{
static struct type *
dbx_init_float_type (struct objfile *objfile, int bits)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const struct floatformat **format;
struct type *type;
define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct symbol *sym;
const char *p = find_name_end (string);
int deftype;
const char *p, struct type *type,
struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
fip->list->field.name
= obstack_strndup (&objfile->objfile_obstack, *pp, p - *pp);
read_enum_type (const char **pp, struct type *type,
struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const char *p;
char *name;
long n;
read_range_type (const char **pp, int typenums[2], int type_size,
struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const char *orig_pp = *pp;
int rangenums[2];
long n2, n3;
{
bfd *abfd = objfile->obfd;
int size = bfd_get_arch_size (abfd) / 8;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
/* Provider and the name of the probe. */
/* Make certain that the address points at real code, and not a
function descriptor. */
entry_point
- = gdbarch_convert_from_func_ptr_addr (get_objfile_arch (objfile),
+ = gdbarch_convert_from_func_ptr_addr (objfile->arch (),
entry_point,
current_top_target ());
/* Remove any ISA markers, so that this matches entries in the
symbol table. */
ei->entry_point
- = gdbarch_addr_bits_remove (get_objfile_arch (objfile), entry_point);
+ = gdbarch_addr_bits_remove (objfile->arch (), entry_point);
found = 0;
ALL_OBJFILE_OSECTIONS (objfile, osect)
case ovly_auto: /* overlay debugging automatic */
/* Unles there is a gdbarch_overlay_update function,
there's really nothing useful to do here (can't really go auto). */
- gdbarch = get_objfile_arch (osect->objfile);
+ gdbarch = osect->objfile->arch ();
if (gdbarch_overlay_update_p (gdbarch))
{
if (overlay_cache_invalid)
ALL_OBJFILE_OSECTIONS (objfile, osect)
if (section_is_mapped (osect))
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
const char *name;
bfd_vma lma, vma;
int size;
return 0;
}
- gdbarch = get_objfile_arch (ovly_table_msym.objfile);
+ gdbarch = ovly_table_msym.objfile->arch ();
word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
byte_order = gdbarch_byte_order (gdbarch);
{
int i;
asection *bsect = osect->the_bfd_section;
- struct gdbarch *gdbarch = get_objfile_arch (osect->objfile);
+ struct gdbarch *gdbarch = osect->objfile->arch ();
int word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
static void
dump_msymbols (struct objfile *objfile, struct ui_file *outfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
int index;
char ms_type;
dump_symtab_1 (struct symtab *symtab, struct ui_file *outfile)
{
struct objfile *objfile = SYMTAB_OBJFILE (symtab);
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
int i;
struct mdict_iterator miter;
int len;
uiout->field_signed ("line", item->line);
else
uiout->field_string ("line", _("END"));
- uiout->field_core_addr ("address", get_objfile_arch (objfile),
+ uiout->field_core_addr ("address", objfile->arch (),
item->pc);
uiout->field_string ("is-stmt", item->is_stmt ? "Y" : "");
uiout->text ("\n");
lookup_data.block_index = block_index;
lookup_data.domain = domain;
gdbarch_iterate_over_objfiles_in_search_order
- (objfile != NULL ? get_objfile_arch (objfile) : target_gdbarch (),
+ (objfile != NULL ? objfile->arch () : target_gdbarch (),
lookup_symbol_global_or_static_iterator_cb, &lookup_data, objfile);
result = lookup_data.result;
}
&& (COMPUNIT_LOCATIONS_VALID (SYMTAB_COMPUNIT (sal.symtab))
|| SYMTAB_LANGUAGE (sal.symtab) == language_asm))
{
- struct gdbarch *gdbarch = get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+ struct gdbarch *gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
sal.pc = func_addr;
if (gdbarch_skip_entrypoint_p (gdbarch))
name = msymbol.minsym->linkage_name ();
}
- gdbarch = get_objfile_arch (objfile);
+ gdbarch = objfile->arch ();
/* Process the prologue in two passes. In the first pass try to skip the
prologue (SKIP is true) and verify there is a real need for it (indicated
static void
print_msymbol_info (struct bound_minimal_symbol msymbol)
{
- struct gdbarch *gdbarch = get_objfile_arch (msymbol.objfile);
+ struct gdbarch *gdbarch = msymbol.objfile->arch ();
char *tmp;
if (gdbarch_addr_bit (gdbarch) <= 32)
CORE_ADDR msym_addr = MSYMBOL_VALUE_ADDRESS (objfile, minsym);
if (MSYMBOL_TYPE (minsym) == mst_data_gnu_ifunc)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
msym_addr
= gdbarch_convert_from_func_ptr_addr (gdbarch,
msym_addr,
{
if (!SYMBOL_OBJFILE_OWNED (symbol))
return symbol->owner.arch;
- return get_objfile_arch (SYMTAB_OBJFILE (symbol->owner.symtab));
+ return SYMTAB_OBJFILE (symbol->owner.symtab)->arch ();
}
/* See symtab.h. */
m_fullname = make_unique_xstrdup (symtab_to_fullname (s));
cur_line = 0;
- m_gdbarch = get_objfile_arch (SYMTAB_OBJFILE (s));
+ m_gdbarch = SYMTAB_OBJFILE (s)->arch ();
m_start_line_or_addr.loa = LOA_LINE;
cur_line_no = m_start_line_or_addr.u.line_no = line_no;
if (sal.symtab != nullptr)
{
find_line_pc (sal.symtab, sal.line, &sal.pc);
- gdbarch = get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+ gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
}
for (struct tui_source_window_base *win_info : tui_source_windows ())
if (msymbol.minsym != NULL)
{
struct objfile *objfile = msymbol.objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
struct type *type;
CORE_ADDR maddr;
{
struct objfile *objf;
struct value *val = find_function_in_inferior ("malloc", &objf);
- struct gdbarch *gdbarch = get_objfile_arch (objf);
+ struct gdbarch *gdbarch = objf->arch ();
struct value *blocklen;
blocklen = value_from_longest (builtin_type (gdbarch)->builtin_int, len);
/* The minimal symbol might point to a function descriptor;
resolve it to the actual code address instead. */
struct objfile *objfile = msym.objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
set_value_address (v,
gdbarch_convert_from_func_ptr_addr
CORE_ADDR endaddr, unsigned *firstLine)
{
struct objfile *objfile = this_symtab_objfile;
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
unsigned int curoffset;
CORE_ADDR addr;
void *ext_lnno;
scan_xcoff_symtab (minimal_symbol_reader &reader,
struct objfile *objfile)
{
- struct gdbarch *gdbarch = get_objfile_arch (objfile);
+ struct gdbarch *gdbarch = objfile->arch ();
CORE_ADDR toc_offset = 0; /* toc offset value in data section. */
const char *filestring = NULL;