From b3b3bada0d514f8e57a04fd333f05d1da94e2304 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 23 Jan 2020 17:55:35 -0500 Subject: gdb: introduce objfile text_section_offset and data_section_offset methods The pattern objfile->section_offsets[SECT_OFF_TEXT (objfile)] ... appears very often, to get the offset of the text section of an objfile. I thought it would be more readable to write it as: objfile->text_section_offset () ... so I added this method and used it where possible. I also added data_section_offset, although it is not used as much. gdb/ChangeLog: * objfiles.h (ALL_OBJFILE_OSECTIONS): Move up. (SECT_OFF_DATA): Likewise. (SECT_OFF_RODATA): Likewise. (SECT_OFF_TEXT): Likewise. (SECT_OFF_BSS): Likewise. (struct objfile) : New methods. * amd64-windows-tdep.c (amd64_windows_find_unwind_info): Use objfile::text_section_offset. * coff-pe-read.c (add_pe_forwarded_sym): Likewise. * coffread.c (coff_symtab_read): Likewise. (enter_linenos): Likewise. (process_coff_symbol): Likewise. * ctfread.c (get_objfile_text_range): Likewise. * dtrace-probe.c (dtrace_probe::get_relocated_address): Use objfile::data_section_offset. * dwarf2-frame.c (execute_cfa_program): Use objfile::text_section_offset. (dwarf2_frame_find_fde): Likewise. * dwarf2read.c (create_addrmap_from_index): Likewise. (create_addrmap_from_aranges): Likewise. (dw2_find_pc_sect_compunit_symtab): Likewise. (process_psymtab_comp_unit_reader): Likewise. (add_partial_symbol): Likewise. (add_partial_subprogram): Likewise. (process_full_comp_unit): Likewise. (read_file_scope): Likewise. (read_func_scope): Likewise. (read_lexical_block_scope): Likewise. (read_call_site_scope): Likewise. (dwarf2_rnglists_process): Likewise. (dwarf2_ranges_process): Likewise. (dwarf2_ranges_read): Likewise. (dwarf_decode_lines_1): Likewise. (new_symbol): Likewise. (dwarf2_fetch_die_loc_sect_off): Likewise. (dwarf2_per_cu_text_offset): Likewise. * hppa-bsd-tdep.c (hppabsd_find_global_pointer): Likewise. * hppa-tdep.c (read_unwind_info): Likewise. * ia64-tdep.c (ia64_find_unwind_table): Likewise. * psympriv.h (struct partial_symtab): Likewise. * psymtab.c (find_pc_sect_psymtab): Likewise. * solib-svr4.c (enable_break): Likewise. * stap-probe.c (relocate_address): Use objfile::data_section_offset. * xcoffread.c (enter_line_range): Use objfile::text_section_offset. (read_xcoff_symtab): Likewise. --- gdb/coffread.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'gdb/coffread.c') diff --git a/gdb/coffread.c b/gdb/coffread.c index 227cf86..b682755 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -920,7 +920,7 @@ coff_symtab_read (minimal_symbol_reader &reader, if (in_source_file) complete_symtab (filestring, (cs->c_value - + objfile->section_offsets[SECT_OFF_TEXT (objfile)]), + + objfile->text_section_offset ()), main_aux.x_scn.x_scnlen); in_source_file = 0; } @@ -1113,7 +1113,7 @@ coff_symtab_read (minimal_symbol_reader &reader, NULL, cstk.start_addr, fcn_cs_saved.c_value + fcn_aux_saved.x_sym.x_misc.x_fsize - + objfile->section_offsets[SECT_OFF_TEXT (objfile)]); + + objfile->text_section_offset ()); within_function = 0; } break; @@ -1122,7 +1122,7 @@ coff_symtab_read (minimal_symbol_reader &reader, if (strcmp (cs->c_name, ".bb") == 0) { tmpaddr = cs->c_value; - tmpaddr += objfile->section_offsets[SECT_OFF_TEXT (objfile)]; + tmpaddr += objfile->text_section_offset (); push_context (++depth, tmpaddr); } else if (strcmp (cs->c_name, ".eb") == 0) @@ -1145,9 +1145,7 @@ coff_symtab_read (minimal_symbol_reader &reader, } if (*get_local_symbols () && !outermost_context_p ()) { - tmpaddr - = (cs->c_value - + objfile->section_offsets[SECT_OFF_TEXT (objfile)]); + tmpaddr = cs->c_value + objfile->text_section_offset (); /* Make a block for the local symbols within. */ finish_block (0, cstk.old_blocks, NULL, cstk.start_addr, tmpaddr); @@ -1439,7 +1437,7 @@ enter_linenos (long file_offset, int first_line, if (L_LNNO32 (&lptr) && L_LNNO32 (&lptr) <= last_line) { CORE_ADDR addr = lptr.l_addr.l_paddr; - addr += objfile->section_offsets[SECT_OFF_TEXT (objfile)]; + addr += objfile->text_section_offset (); record_line (get_current_subfile (), first_line + L_LNNO32 (&lptr), gdbarch_addr_bits_remove (gdbarch, addr)); @@ -1574,7 +1572,7 @@ process_coff_symbol (struct coff_symbol *cs, if (ISFCN (cs->c_type)) { - SYMBOL_VALUE (sym) += objfile->section_offsets[SECT_OFF_TEXT (objfile)]; + SYMBOL_VALUE (sym) += objfile->text_section_offset (); SYMBOL_TYPE (sym) = lookup_function_type (decode_function_type (cs, cs->c_type, aux, objfile)); -- cgit v1.1