diff options
author | Tom Tromey <tromey@redhat.com> | 2013-08-15 08:43:43 -0600 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2014-02-26 12:11:16 -0700 |
commit | efd66ac6698323d9523a4dce352008c4c835812e (patch) | |
tree | f886696f3562ab3ba9542f82dcced106c740e642 /gdb/symtab.c | |
parent | 50e65b1713256487d50514b50b38b3fd1080b93e (diff) | |
download | binutils-gdb-efd66ac6698323d9523a4dce352008c4c835812e.tar.gz |
change minsym representation
In a later patch we're going to change the minimal symbol address
calculation to apply section offsets at the point of use. To make it
simpler to catch potential problem spots, this patch changes the
representation of minimal symbols and introduces new
minimal-symbol-specific variants of the various accessors. This is
necessary because it would be excessively ambitious to try to convert
all the symbol types at once.
The core of this change is just renaming a field in minimal_symbol;
the rest is just a fairly mechanical rewording.
2014-02-26 Tom Tromey <tromey@redhat.com>
* symtab.h (struct minimal_symbol) <mginfo>: Rename from ginfo.
(MSYMBOL_VALUE, MSYMBOL_VALUE_ADDRESS, MSYMBOL_VALUE_BYTES)
(MSYMBOL_BLOCK_VALUE, MSYMBOL_VALUE_CHAIN, MSYMBOL_LANGUAGE)
(MSYMBOL_SECTION, MSYMBOL_OBJ_SECTION, MSYMBOL_NATURAL_NAME)
(MSYMBOL_LINKAGE_NAME, MSYMBOL_PRINT_NAME, MSYMBOL_DEMANGLED_NAME)
(MSYMBOL_SET_LANGUAGE, MSYMBOL_SEARCH_NAME)
(MSYMBOL_MATCHES_SEARCH_NAME, MSYMBOL_SET_NAMES): New macros.
* ada-lang.c (ada_main_name): Update.
(ada_lookup_simple_minsym): Update.
(ada_make_symbol_completion_list): Update.
(ada_add_standard_exceptions): Update.
* ada-tasks.c (read_atcb, ada_tasks_inferior_data_sniffer): Update.
* aix-thread.c (pdc_symbol_addrs, pd_enable): Update.
* amd64-windows-tdep.c (amd64_skip_main_prologue): Update.
* arm-tdep.c (skip_prologue_function): Update.
(arm_skip_stack_protector, arm_skip_stub): Update.
* arm-wince-tdep.c (arm_pe_skip_trampoline_code): Update.
(arm_wince_skip_main_prologue): Update.
* auxv.c (ld_so_xfer_auxv): Update.
* avr-tdep.c (avr_scan_prologue): Update.
* ax-gdb.c (gen_var_ref): Update.
* block.c (call_site_for_pc): Update.
* blockframe.c (get_pc_function_start): Update.
(find_pc_partial_function_gnu_ifunc): Update.
* breakpoint.c (create_overlay_event_breakpoint): Update.
(create_longjmp_master_breakpoint): Update.
(create_std_terminate_master_breakpoint): Update.
(create_exception_master_breakpoint): Update.
(resolve_sal_pc): Update.
* bsd-uthread.c (bsd_uthread_lookup_address): Update.
* btrace.c (ftrace_print_function_name, ftrace_function_switched):
Update.
* c-valprint.c (c_val_print): Update.
* coff-pe-read.c (add_pe_forwarded_sym): Update.
* coffread.c (coff_symfile_read): Update.
* common/agent.c (agent_look_up_symbols): Update.
* dbxread.c (find_stab_function_addr): Update.
(end_psymtab): Update.
* dwarf2loc.c (call_site_to_target_addr): Update.
(func_verify_no_selftailcall): Update.
(tailcall_dump): Update.
(call_site_find_chain_1): Update.
(dwarf_expr_reg_to_entry_parameter): Update.
* elfread.c (elf_gnu_ifunc_record_cache): Update.
(elf_gnu_ifunc_resolve_by_got): Update.
* f-valprint.c (info_common_command): Update.
* findvar.c (read_var_value): Update.
* frame.c (get_prev_frame_1): Update.
(inside_main_func): Update.
* frv-tdep.c (frv_skip_main_prologue): Update.
(frv_frame_this_id): Update.
* glibc-tdep.c (glibc_skip_solib_resolver): Update.
* gnu-v2-abi.c (gnuv2_value_rtti_type): Update.
* gnu-v3-abi.c (gnuv3_rtti_type): Update.
(gnuv3_skip_trampoline): Update.
* hppa-hpux-tdep.c (hppa32_hpux_in_solib_call_trampoline): Update.
(hppa64_hpux_in_solib_call_trampoline): Update.
(hppa_hpux_skip_trampoline_code): Update.
(hppa64_hpux_search_dummy_call_sequence): Update.
(hppa_hpux_find_import_stub_for_addr): Update.
(hppa_hpux_find_dummy_bpaddr): Update.
* hppa-tdep.c (hppa_symbol_address)
(hppa_lookup_stub_minimal_symbol): Update.
* i386-tdep.c (i386_skip_main_prologue): Update.
(i386_pe_skip_trampoline_code): Update.
* ia64-tdep.c (ia64_convert_from_func_ptr_addr): Update.
* infcall.c (get_function_name): Update.
* infcmd.c (until_next_command): Update.
* jit.c (jit_breakpoint_re_set_internal): Update.
(jit_inferior_init): Update.
* linespec.c (minsym_found): Update.
(add_minsym): Update.
* linux-fork.c (info_checkpoints_command): Update.
* linux-nat.c (get_signo): Update.
* linux-thread-db.c (inferior_has_bug): Update.
* m32c-tdep.c (m32c_return_value): Update.
(m32c_m16c_address_to_pointer): Update.
(m32c_m16c_pointer_to_address): Update.
* m32r-tdep.c (m32r_frame_this_id): Update.
* m68hc11-tdep.c (m68hc11_get_register_info): Update.
* machoread.c (macho_resolve_oso_sym_with_minsym): Update.
* maint.c (maintenance_translate_address): Update.
* minsyms.c (add_minsym_to_hash_table): Update.
(add_minsym_to_demangled_hash_table): Update.
(msymbol_objfile): Update.
(lookup_minimal_symbol): Update.
(iterate_over_minimal_symbols): Update.
(lookup_minimal_symbol_text): Update.
(lookup_minimal_symbol_by_pc_name): Update.
(lookup_minimal_symbol_solib_trampoline): Update.
(lookup_minimal_symbol_by_pc_section_1): Update.
(lookup_minimal_symbol_and_objfile): Update.
(prim_record_minimal_symbol_full): Update.
(compare_minimal_symbols): Update.
(compact_minimal_symbols): Update.
(build_minimal_symbol_hash_tables): Update.
(install_minimal_symbols): Update.
(terminate_minimal_symbol_table): Update.
(find_solib_trampoline_target): Update.
(minimal_symbol_upper_bound): Update.
* mips-linux-tdep.c (mips_linux_skip_resolver): Update.
* mips-tdep.c (mips_stub_frame_sniffer): Update.
(mips_skip_pic_trampoline_code): Update.
* msp430-tdep.c (msp430_skip_trampoline_code): Update.
* objc-lang.c (selectors_info): Update.
(classes_info): Update.
(find_methods): Update.
(find_imps): Update.
(find_objc_msgsend): Update.
* objfiles.c (objfile_relocate1): Update.
* objfiles.h (ALL_OBJFILE_MSYMBOLS): Update.
* obsd-tdep.c (obsd_skip_solib_resolver): Update.
* p-valprint.c (pascal_val_print): Update.
* parse.c (write_exp_msymbol): Update.
* ppc-linux-tdep.c (powerpc_linux_in_dynsym_resolve_code)
(ppc_linux_spe_context_lookup, ppc_elfv2_skip_entrypoint): Update.
* ppc-sysv-tdep.c (convert_code_addr_to_desc_addr): Update.
* printcmd.c (build_address_symbolic): Update.
(sym_info): Update.
(address_info): Update.
* proc-service.c (ps_pglobal_lookup): Update.
* psymtab.c (find_pc_sect_psymtab_closer): Update.
(find_pc_sect_psymtab): Update.
* python/py-framefilter.c (py_print_frame): Update.
* ravenscar-thread.c (get_running_thread_id): Update.
* record-btrace.c (btrace_call_history, btrace_get_bfun_name):
Update.
* remote.c (remote_check_symbols): Update.
* rs6000-tdep.c (rs6000_skip_main_prologue): Update.
(rs6000_skip_trampoline_code): Update.
* sh64-tdep.c (sh64_elf_make_msymbol_special): Update.
* sol2-tdep.c (sol2_skip_solib_resolver): Update.
* solib-dsbt.c (lm_base): Update.
* solib-frv.c (lm_base): Update.
(main_got): Update.
* solib-irix.c (locate_base): Update.
* solib-som.c (som_solib_create_inferior_hook): Update.
(som_solib_desire_dynamic_linker_symbols): Update.
(link_map_start): Update.
* solib-spu.c (spu_enable_break): Update.
(ocl_enable_break): Update.
* solib-svr4.c (elf_locate_base): Update.
(enable_break): Update.
* spu-tdep.c (spu_get_overlay_table): Update.
(spu_catch_start): Update.
(flush_ea_cache): Update.
* stabsread.c (define_symbol): Update.
(scan_file_globals): Update.
* stack.c (find_frame_funname): Update.
(frame_info): Update.
* symfile.c (simple_read_overlay_table): Update.
(simple_overlay_update): Update.
* symmisc.c (dump_msymbols): Update.
* symtab.c (fixup_section): Update.
(find_pc_sect_line): Update.
(skip_prologue_sal): Update.
(search_symbols): Update.
(print_msymbol_info): Update.
(rbreak_command): Update.
(MCOMPLETION_LIST_ADD_SYMBOL): New macro.
(completion_list_objc_symbol): Update.
(default_make_symbol_completion_list_break_on): Update.
* tracepoint.c (scope_info): Update.
* tui/tui-disasm.c (tui_find_disassembly_address): Update.
(tui_get_begin_asm_address): Update.
* valops.c (find_function_in_inferior): Update.
* value.c (value_static_field): Update.
(value_fn_field): Update.
Diffstat (limited to 'gdb/symtab.c')
-rw-r--r-- | gdb/symtab.c | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/gdb/symtab.c b/gdb/symtab.c index 50c09c1090a..326f4c97175 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -1118,7 +1118,7 @@ fixup_section (struct general_symbol_info *ginfo, point to the actual function code. */ msym = lookup_minimal_symbol_by_pc_name (addr, ginfo->name, objfile); if (msym) - ginfo->section = SYMBOL_SECTION (msym); + ginfo->section = MSYMBOL_SECTION (msym); else { /* Static, function-local variables do appear in the linker @@ -2378,7 +2378,7 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent) if (MSYMBOL_TYPE (msymbol.minsym) == mst_solib_trampoline) { mfunsym - = lookup_minimal_symbol_text (SYMBOL_LINKAGE_NAME (msymbol.minsym), + = lookup_minimal_symbol_text (MSYMBOL_LINKAGE_NAME (msymbol.minsym), NULL); if (mfunsym == NULL) /* I eliminated this warning since it is coming out @@ -2394,8 +2394,8 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent) SYMBOL_LINKAGE_NAME (msymbol)); */ ; /* fall through */ - else if (SYMBOL_VALUE_ADDRESS (mfunsym) - == SYMBOL_VALUE_ADDRESS (msymbol.minsym)) + else if (MSYMBOL_VALUE_ADDRESS (mfunsym) + == MSYMBOL_VALUE_ADDRESS (msymbol.minsym)) /* Avoid infinite recursion */ /* See above comment about why warning is commented out. */ /* warning ("In stub for %s; unable to find real function/line info", @@ -2403,7 +2403,7 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent) ; /* fall through */ else - return find_pc_line (SYMBOL_VALUE_ADDRESS (mfunsym), 0); + return find_pc_line (MSYMBOL_VALUE_ADDRESS (mfunsym), 0); } @@ -2917,9 +2917,9 @@ skip_prologue_sal (struct symtab_and_line *sal) } objfile = msymbol.objfile; - pc = SYMBOL_VALUE_ADDRESS (msymbol.minsym); - section = SYMBOL_OBJ_SECTION (objfile, msymbol.minsym); - name = SYMBOL_LINKAGE_NAME (msymbol.minsym); + pc = MSYMBOL_VALUE_ADDRESS (msymbol.minsym); + section = MSYMBOL_OBJ_SECTION (objfile, msymbol.minsym); + name = MSYMBOL_LINKAGE_NAME (msymbol.minsym); } gdbarch = get_objfile_arch (objfile); @@ -3658,16 +3658,16 @@ search_symbols (char *regexp, enum search_domain kind, || MSYMBOL_TYPE (msymbol) == ourtype4) { if (!datum.preg_p - || regexec (&datum.preg, SYMBOL_NATURAL_NAME (msymbol), 0, + || regexec (&datum.preg, MSYMBOL_NATURAL_NAME (msymbol), 0, NULL, 0) == 0) { /* Note: An important side-effect of these lookup functions is to expand the symbol table if msymbol is found, for the benefit of the next loop on ALL_PRIMARY_SYMTABS. */ if (kind == FUNCTIONS_DOMAIN - ? find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol)) == NULL + ? find_pc_symtab (MSYMBOL_VALUE_ADDRESS (msymbol)) == NULL : (lookup_symbol_in_objfile_from_linkage_name - (objfile, SYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN) + (objfile, MSYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN) == NULL)) found_misc = 1; } @@ -3761,16 +3761,16 @@ search_symbols (char *regexp, enum search_domain kind, || MSYMBOL_TYPE (msymbol) == ourtype4) { if (!datum.preg_p - || regexec (&datum.preg, SYMBOL_NATURAL_NAME (msymbol), 0, + || regexec (&datum.preg, MSYMBOL_NATURAL_NAME (msymbol), 0, NULL, 0) == 0) { /* For functions we can do a quick check of whether the symbol might be found via find_pc_symtab. */ if (kind != FUNCTIONS_DOMAIN - || find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol)) == NULL) + || find_pc_symtab (MSYMBOL_VALUE_ADDRESS (msymbol)) == NULL) { if (lookup_symbol_in_objfile_from_linkage_name - (objfile, SYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN) + (objfile, MSYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN) == NULL) { /* match */ @@ -3848,14 +3848,14 @@ print_msymbol_info (struct bound_minimal_symbol msymbol) char *tmp; if (gdbarch_addr_bit (gdbarch) <= 32) - tmp = hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol.minsym) + tmp = hex_string_custom (MSYMBOL_VALUE_ADDRESS (msymbol.minsym) & (CORE_ADDR) 0xffffffff, 8); else - tmp = hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol.minsym), + tmp = hex_string_custom (MSYMBOL_VALUE_ADDRESS (msymbol.minsym), 16); printf_filtered ("%s %s\n", - tmp, SYMBOL_PRINT_NAME (msymbol.minsym)); + tmp, MSYMBOL_PRINT_NAME (msymbol.minsym)); } /* This is the guts of the commands "info functions", "info types", and @@ -4013,7 +4013,7 @@ rbreak_command (char *regexp, int from_tty) } else { - int newlen = (strlen (SYMBOL_LINKAGE_NAME (p->msymbol.minsym)) + 3); + int newlen = (strlen (MSYMBOL_LINKAGE_NAME (p->msymbol.minsym)) + 3); if (newlen > len) { @@ -4021,12 +4021,12 @@ rbreak_command (char *regexp, int from_tty) len = newlen; } strcpy (string, "'"); - strcat (string, SYMBOL_LINKAGE_NAME (p->msymbol.minsym)); + strcat (string, MSYMBOL_LINKAGE_NAME (p->msymbol.minsym)); strcat (string, "'"); break_command (string, from_tty); printf_filtered ("<function, no debug info> %s;\n", - SYMBOL_PRINT_NAME (p->msymbol.minsym)); + MSYMBOL_PRINT_NAME (p->msymbol.minsym)); } } @@ -4097,6 +4097,10 @@ static VEC (char_ptr) *return_val; completion_list_add_name \ (SYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word)) +#define MCOMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \ + completion_list_add_name \ + (MSYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word)) + /* Test to see if the symbol specified by SYMNAME (which is already demangled for C++ symbols) matches SYM_TEXT in the first SYM_TEXT_LEN characters. If so, add it to the current completion list. */ @@ -4154,7 +4158,7 @@ completion_list_objc_symbol (struct minimal_symbol *msymbol, const char *method, *category, *selector; char *tmp2 = NULL; - method = SYMBOL_NATURAL_NAME (msymbol); + method = MSYMBOL_NATURAL_NAME (msymbol); /* Is it a method? */ if ((method[0] != '-') && (method[0] != '+')) @@ -4418,8 +4422,8 @@ default_make_symbol_completion_list_break_on (const char *text, ALL_MSYMBOLS (objfile, msymbol) { QUIT; - COMPLETION_LIST_ADD_SYMBOL (msymbol, sym_text, sym_text_len, text, - word); + MCOMPLETION_LIST_ADD_SYMBOL (msymbol, sym_text, sym_text_len, text, + word); completion_list_objc_symbol (msymbol, sym_text, sym_text_len, text, word); |