+2011-03-30 Thiago Jung Bauermann <bauerman@br.ibm.com>
+
+ * breakpoint.c (breakpoint_re_set_one): Factor out breakpoint-resetting
+ code from here ...
+ (re_set_breakpoint): ... to here ...
+ (addr_string_to_sals): ... and here.
+
+2011-03-29 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * Makefile.in (SFILES): Add missing C sources.
+ (HFILES_NO_SRCDIR): Remove gdbserver subdirectory headers.
+ Add missing headers.
+
+2011-03-29 Mike Frysinger <vapier@gentoo.org>
+
+ * .gitignore: New file.
+
+2011-03-29 Mike Frysinger <vapier@gentoo.org>
+
+ * NEWS: Mention new cfi device simulation.
+
+2011-03-29 Tom Tromey <tromey@redhat.com>
+
+ * dwarf2read.c (fixup_partial_die): Handle linkage name on
+ otherwise anonymous types.
+ (dwarf2_name): Likewise.
+ * valops.c (value_struct_elt_for_reference): Refine artificial
+ type logic. Call error if j==-1.
+
+2011-03-29 Andreas Tobler <andreast-list@fgznet.ch>
+
+ Fix false GCC warning.
+ * infcall.c (find_function_addr): Initialize funaddr.
+
+2011-03-29 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ Fix mingw compilation with --enable-targets=all.
+ * remote-mips.c (gdb_usleep.h): Include header.
+ (mips_enter_debug): Use gdb_usleep instead of sleep.
+
+2011-03-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Support resolution of STT_GNU_IFUNC via breakpoints.
+ * breakpoint.c (print_it_typical): Support bp_gnu_ifunc_resolver and
+ bp_gnu_ifunc_resolver_return.
+ (bpstat_what): Rename parameter to bs_head, new variable bs, adjust
+ the loop. Support bp_gnu_ifunc_resolver and
+ bp_gnu_ifunc_resolver_return. New comment after the loop. New loop
+ for bp_gnu_ifunc_resolver and bp_gnu_ifunc_resolver_return
+ breakpoints.
+ (bptype_string, print_one_breakpoint_location): Support
+ bp_gnu_ifunc_resolver and bp_gnu_ifunc_resolver_return.
+ (user_settable_breakpoint): Return true also for
+ bp_gnu_ifunc_resolver.
+ (allocate_bp_location): Support bp_gnu_ifunc_resolver and
+ bp_gnu_ifunc_resolver_return.
+ (set_breakpoint_location_function): New parameter explicit_loc,
+ describe it. Call find_pc_partial_function_gnu_ifunc with new
+ variable IS_GNU_IFUNC and adjust the address for STT_GNU_IFUNC if
+ EXPLICIT_LOC is not set.
+ (set_raw_breakpoint): Set EXPLICIT_LOC for
+ set_breakpoint_location_function.
+ (clone_momentary_breakpoint): Use true for EXPLICIT_LOC of
+ set_breakpoint_location_function.
+ (mention): Support bp_gnu_ifunc_resolver and
+ bp_gnu_ifunc_resolver_return.
+ (add_location_to_breakpoint): Set EXPLICIT_LOC for
+ set_breakpoint_location_function.
+ (update_breakpoint_locations): Remove static.
+ (breakpoint_re_set_one): Support bp_gnu_ifunc_resolver and
+ bp_gnu_ifunc_resolver_return.
+ * breakpoint.h (enum bptype): New fields bp_gnu_ifunc_resolver and
+ bp_gnu_ifunc_resolver_return.
+ (update_breakpoint_locations): New declaration.
+ * elfread.c: Include gdbthread.h and regcache.h.
+ (elf_gnu_ifunc_resolver_stop, elf_gnu_ifunc_resolver_return_stop): New
+ functions.
+ (elf_gnu_ifunc_fns): Install them.
+ * minsyms.c (stub_gnu_ifunc_resolver_stop)
+ (stub_gnu_ifunc_resolver_return_stop): New functions.
+ (stub_gnu_ifunc_fns): Install them.
+ * symtab.h (struct gnu_ifunc_fns): New fields gnu_ifunc_resolver_stop
+ and gnu_ifunc_resolver_return_stop.
+ (gnu_ifunc_resolver_stop, gnu_ifunc_resolver_return_stop): New.
+
+2011-03-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ STT_GNU_IFUNC reader implementation.
+ * elfread.c: Include gdbtypes.h, value.h and infcall.h.
+ (SYMBOL_GOT_PLT_SUFFIX, elf_rel_plt_read)
+ (elf_objfile_gnu_ifunc_cache_data, struct elf_gnu_ifunc_cache)
+ (elf_gnu_ifunc_cache_hash, elf_gnu_ifunc_cache_eq)
+ (elf_gnu_ifunc_record_cache, elf_gnu_ifunc_resolve_by_cache)
+ (elf_gnu_ifunc_resolve_by_got, elf_gnu_ifunc_resolve_name)
+ (elf_gnu_ifunc_resolve_addr): New.
+ (elf_symfile_read): Call elf_rel_plt_read.
+ (elf_gnu_ifunc_fns): New.
+ (_initialize_elfread): Initialize elf_objfile_gnu_ifunc_cache_data.
+ Install elf_gnu_ifunc_fns.
+ * infcall.c (find_function_return_type): New function.
+ (find_function_addr): Resolve TYPE_GNU_IFUNC functions, if possible.
+ * minsyms.c (stub_gnu_ifunc_resolve_addr)
+ (stub_gnu_ifunc_resolve_name): New functions.
+ (stub_gnu_ifunc_fns, gnu_ifunc_fns_p): New variables.
+ * symtab.h (struct gnu_ifunc_fns, gnu_ifunc_resolve_addr)
+ (gnu_ifunc_resolve_name, gnu_ifunc_fns_p): New.
+
+2011-03-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Code cleanup for later STT_GNU_IFUNC support.
+ * infcall.c (find_function_addr): Remove variable code, use explicit
+ dereferences for it. Move VALUE_TYPE initialization later.
+
+2011-03-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ GDB find_pc_partial_function support for STT_GNU_IFUNC.
+ * blockframe.c (cache_pc_function_is_gnu_ifunc): New variable.
+ (clear_pc_function_cache): Clear it.
+ (find_pc_partial_function): Rename to ...
+ (find_pc_partial_function_gnu_ifunc): ... this function. New
+ parameter is_gnu_ifunc_p, describe it. Set *IS_GNU_IFUNC_P.
+ (find_pc_partial_function): New wrapper for this function.
+ * symtab.h (find_pc_partial_function_gnu_ifunc): New declaration.
+
+2011-03-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ GDB internal type support for STT_GNU_IFUNC.
+ * elfread.c (record_minimal_symbol): Support mst_text_gnu_ifunc.
+ (elf_symtab_read): Set mst_text_gnu_ifunc for
+ BSF_GNU_INDIRECT_FUNCTION.
+ * eval.c (evaluate_subexp_standard): Support TYPE_GNU_IFUNC.
+ * gdbtypes.c (init_type): Support TYPE_FLAG_GNU_IFUNC,
+ builtin_func_func, nodebug_text_gnu_ifunc_symbol and
+ nodebug_got_plt_symbol.
+ * gdbtypes.h (enum type_flag_value): New entry TYPE_FLAG_GNU_IFUNC.
+ (TYPE_GNU_IFUNC): New.
+ (struct main_type): New field flag_gnu_ifunc.
+ (struct builtin_type): New field builtin_func_func.
+ (struct objfile_type): New fields nodebug_text_gnu_ifunc_symbol and
+ nodebug_got_plt_symbol.
+ * minsyms.c (lookup_minimal_symbol_text): Support mst_text_gnu_ifunc.
+ (in_gnu_ifunc_stub): New.
+ (prim_record_minimal_symbol, find_solib_trampoline_target): Support
+ mst_text_gnu_ifunc.
+ * parse.c (write_exp_msymbol): New variable ifunc_msym. Detect and
+ support mst_text_gnu_ifunc. Support mst_slot_got_plt.
+ * solib-svr4.c (svr4_in_dynsym_resolve_code): Return true also for
+ in_gnu_ifunc_stub.
+ * symmisc.c (dump_msymbols): Support mst_text_gnu_ifunc.
+ * symtab.c (search_symbols): Likewise.
+ * symtab.h (enum minimal_symbol_type): New fields mst_text_gnu_ifunc
+ and mst_slot_got_plt.
+ (in_gnu_ifunc_stub): New declaration.
+
+2011-03-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Support a ring of related breakpoints.
+ * breakpoint.c (watchpoint_del_at_next_stop): New, move here code from
+ other functions, add gdb_assert.
+ (update_watchpoint, watchpoint_check): Add gdb_assert. Use
+ watchpoint_del_at_next_stop.
+ (bpstat_check_watchpoint): Use watchpoint_del_at_next_stop.
+ (bpstat_stop_status): Handle ring in related_breakpoint.
+ (set_raw_breakpoint_without_location): Initialize ring in
+ related_breakpoint.
+ (delete_breakpoint): Handle ring in related_breakpoint, use
+ watchpoint_del_at_next_stop.
+ (map_breakpoint_numbers): Handle ring in related_breakpoint.
+
+2011-03-28 Tom Tromey <tromey@redhat.com>
+
+ PR symtab/12441:
+ * dwarf2read.c (prepare_one_comp_unit): Don't call set_cu_language
+ with `language_minimal'.
+
+2011-03-25 Ulrich Weigand <ulrich.weigand@linaro.org>
+
+ * arm-tdep.c (arm_elf_make_msymbol_special): Use ARM_SYM_BRANCH_TYPE
+ instead of checking for STT_ARM_TFUNC symbol type.
+
+2011-03-25 Tom Tromey <tromey@redhat.com>
+
+ * linespec.c (symbol_found): Restore line-based result for
+ non-LOC_LABEL symbols.
+
+2011-03-25 Kai Tietz <ktietz@redhat.com>
+
+ * tui/tui-source.c (tui_set_source_content): Use filename_cmp
+ instead of strcmp for comparison.
+ (tui_source_is_displayed): Likewise.
+ * tui/tui-winsource.c (tui_update_breakpoint_info): Likewise.
+
+2011-03-24 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf2read.c (lookup_signatured_type): Use DW_FORM_ref_sig8 in
+ complaint.
+ (skip_one_die): Use DW_FORM_ref_sig8, not DW_FORM_sig8.
+ (find_partial_die_in_comp_unit): Likewise in comment.
+ (read_attribute_value): Likewise.
+ (lookup_die_type): Likewise.
+ (dwarf_form_name): Likewise.
+ (dump_die_shallow): Likewise.
+ (follow_die_ref_or_sig): Likewise.
+
+2011-03-24 Tom Tromey <tromey@redhat.com>
+
+ PR breakpoints/11816:
+ * linespec.c (decode_line_1): Parse `function:label' linespecs.
+ (decode_compound): Update.
+ (find_function_symbol): New function.
+ (decode_dollar): Update.
+ (decode_label): Add 'function_symbol' parameter. Handle
+ function-relative labels.
+ (decode_variable): Update.
+ (symbol_found): Add 'function_symbol' parameter. Use label's PC,
+ not its line. Set `special_display' and canonical name for
+ labels.
+
+2011-03-24 Tom Tromey <tromey@redhat.com>
+
+ * linespec.h (struct linespec_result) <special_display>: New
+ field.
+ * breakpoint.h (struct breakpoint) <display_canonical>: New
+ field.
+ * breakpoint.c (print_breakpoint_location): Respect
+ display_canonical.
+ (create_breakpoint_sal): Add 'display_canonical' parameter.
+ (create_breakpoints_sal): Update.
+ (create_breakpoint): Update.
+
+2011-03-24 Tom Tromey <tromey@redhat.com>
+
+ * symtab.c (decode_line_spec): Update.
+ * linespec.c (build_canonical_line_spec): Change type of
+ 'canonical'.
+ (decode_line_2, decode_line_1, decode_objc, decode_compound)
+ (find_method, decode_all_digits, decode_dollar, decode_label)
+ (symbol_found): Likewise.
+ (init_linespec_result): New function.
+ * breakpoint.c (struct captured_parse_breakpoint_args)
+ <canonical_p>: New field, replaces addr_string_p.
+ (create_breakpoints_sal): Add 'canonical' parameter, replacing
+ 'addr_string'.
+ (parse_breakpoint_sals): Likewise.
+ (do_captured_parse_breakpoint): Update.
+ (create_breakpoint): Use struct linespec_result.
+ (until_break_command): Update.
+ (breakpoint_re_set_one): Update.
+ (decode_line_spec_1): Update.
+ * linespec.h (struct linespec_result): New.
+ (init_linespec_result): Declare.
+
+2011-03-23 Pedro Alves <pedro@codesourcery.com>
+
+ * regcache.c (regcache_raw_read): If the target didn't supply a
+ given raw register, mark it as unavailable.
+
+2011-03-23 Kai Tietz <ktietz@redhat.com>
+
+ * breakpoint.c (clear_command): Use filename_cmp
+ instead of strcmp for comparison.
+ * buildsym.c (watch_main_source_file_lossage): Likewise.
+ (patch_subfile_names): Use IS_DIR_SEPARATOR instead of
+ checking just for slash.
+ * dbxread.c (read_dbx_symtab): Use lbasename instead of
+ strrchr and filename_cmp instead of strcmp for filenames.
+ (add_old_header_file): Use filename_cmp
+ instead of strcmp for comparison.
+ * exec.c (exec_set_section_address): Likewise.
+ * macrotab.c (macro_lookup_inclusion): Likewise.
+ (macro_lookup_inclusion): Likewise.
+ * elfread.c (_initialize_elfread): Likewise.
+ (elfstab_offset_sections): Likewise.
+ (elfstab_offset_sections): Use lbasename instead of
+ strrchr.
+ * mdebugread.c (parse_partial_symbols): Likewise.
+ (arse_partial_symbols): Use filename_(n)cmp instead of
+ str(n)cmp for comparison.
+ * minsyms.c (lookup_minimal_symbol): Likewise.
+ * psymtab.c (read_psymtabs_with_filename): Likewise.
+ * solib.c (solib_read_symbols): Likewise.
+ (reload_shared_libraries_1): Likewise.
+ * symmisc.c (maintenance_print_symbols): Likewise.
+ * symfile.c (separate_debug_file_exists): Likewise.
+ (reread_symbols): Likewise.
+ (find_separate_debug_file_by_debuglink): Likewise.
+ * remote-fileio.c (remote_fileio_func_rename): Likewise.
+ * source.c (add_path): Likewise.
+ * symtab.c (filename_seen): Likewise.
+ (file_matches): Likewise.
+ (print_symbol_info): Likewise.
+ (maybe_add_partial_symtab_filename): Likewise.
+ (make_source_files_completion_list): Likewise.
+ * xml-syscall.c (init_sysinfo): Likewise.
+ * windows-nat.c (_initialize_check_for_gdb_ini): Use
+ IS_DIR_SEPARATOR for checking for trailing path separator.
+
+2011-03-22 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf2expr.c (execute_stack_op): Handle DW_OP_GNU_entry_value. New
+ label abort_expression.
+ * dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Handle
+ DWARF_VALUE_OPTIMIZED_OUT.
+
+2011-03-22 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Code cleanup.
+ * c-typeprint.c (c_type_print_args): Change parameter show_artificial
+ to linkage_name. Invert its value. Update the function comment.
+ (c_type_print_varspec_suffix): Invert it at the caller.
+ * dwarf2read.c (dwarf2_compute_name): Invert it at the caller.
+
+2011-03-22 Pedro Alves <pedro@codesourcery.com>
+
+ * infcmd.c (post_create_inferior): Ignore NOT_AVAILABLE_ERROR
+ errors when reading the `stop_pc'.
+ * printcmd.c (pc_prefix): Use get_frame_pc_if_available instead of
+ get_frame_pc.
+
+2011-03-22 Phil Muldoon <pmuldoon@redhat.com>
+
+ * NEWS: Document gdb.Write stream keyword.
+
+2011-03-22 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Revert:
+ 2011-03-21 Jan Kratochvil <jan.kratochvil@redhat.com>
+ * dwarf2read.c (producer_is_gxx_lt_4_6): New function.
+ (dwarf2_add_field): Fix new_field->accessibility for
+ cu->header.version >= 3 while verifying also producer_is_gxx_lt_4_6.
+
+2011-03-22 Phil Muldoon <pmuldoon@redhat.com>
+
+ PR python/12183
+
+ * python/py-function.c (fnpy_call): Treat GdbErrors differently to
+ other error classes. Do not print stack trace.
+
+2011-03-21 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf2read.c (producer_is_gxx_lt_4_6): New function.
+ (dwarf2_add_field): Fix new_field->accessibility for
+ cu->header.version >= 3 while verifying also producer_is_gxx_lt_4_6.
+
+2011-03-21 Ulrich Weigand <ulrich.weigand@linaro.org>
+
+ * arm-tdep.c (arm_analyze_prologue): Do not abort parsing when
+ encountering a load via a non-SP register.
+
+2011-03-21 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * tramp-frame.c (tramp_frame_prepend_unwinder): Set stop_reason
+ field in returned unwinder.
+
+2012-03-21 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * ada-lang.c (replace_operator_with_call): Copy also GDBARCH.
+
+2012-03-21 Joel Brobecker <brobecker@adacore.com>
+
+ * ada-lang.c (replace_operator_with_call): Use xzalloc instead
+ of xmalloc.
+
+2012-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * frame.c (frame_unwind_register): Throw an error if unwinding the
+ register failed.
+ * get_prev_frame_1 (get_prev_frame_1): Ask the unwinder if there's
+ an unwind stop reason.
+ (frame_stop_reason_string): Handle UNWIND_UNAVAILABLE.
+ * frame.h (enum unwind_stop_reason) <UNWIND_OUTERMOST,
+ UNWIND_UNAVAILABLE>: New.
+ * inline-frame.c (inline_frame_unwind): Install
+ default_frame_unwind_stop_reason.
+ * frame-unwind.c: Include "exceptions.h".
+ (frame_unwind_find_by_frame): Swallow NOT_AVAILABLE_ERROR errors.
+ (default_frame_unwind_stop_reason): New.
+ * frame-unwind.h (frame_unwind_stop_reason_ftype): New typedef.
+ (default_frame_unwind_stop_reason): Declare.
+ (struct frame_unwind) <stop_reason>: New function pointer.
+
+ * dummy-frame.c: Install default_frame_unwind_stop_reason.
+ * dwarf2-frame.c: Include exceptions.h.
+ (struct dwarf2_frame_cache) <unavailable_retaddr>: New field.
+ (dwarf2_frame_cache): Swallow NOT_AVAILABLE_ERROR errors when
+ computing the CFA. If such an error was thrown, set
+ unavailable_retaddr.
+ (dwarf2_frame_unwind_stop_reason): New.
+ (dwarf2_frame_this_id): Don't build a frame id if the CFA was
+ unavailable.
+ (dwarf2_frame_unwind): Install dwarf2_frame_unwind_stop_reason.
+ (dwarf2_signal_frame_unwind): Ditto.
+
+ * amd64-tdep.c: Include "exceptions.h".
+ (struct amd64_frame_cache): New field "base_p".
+ (amd64_init_frame_cache): Clear it.
+ (amd64_frame_cache_1): New, factored out from amd64_frame_cache.
+ Avoid reading registers with functions that throw if the register
+ is not necessary to compute the frame base.
+ (amd64_frame_cache): Reimplement wrapping amd64_frame_cache_1, and
+ swallowing NOT_AVAILABLE_ERROR.
+ (amd64_frame_unwind_stop_reason): New.
+ (amd64_frame_this_id): Don't build a frame id if the frame base
+ was unavailable.
+ (amd64_frame_unwind): Install amd64_frame_unwind_stop_reason.
+ (amd64_sigtramp_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
+ base_p if the frame base was computable.
+ (amd64_sigtramp_frame_unwind_stop_reason): New.
+ (amd64_sigtramp_frame_this_id): Don't build a frame id if the
+ frame base was unavailable.
+ (amd64_sigtramp_frame_unwind): Install
+ amd64_sigtramp_frame_unwind_stop_reason.
+ (amd64_epilogue_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
+ base_p if the frame base was computable.
+ (amd64_epilogue_frame_unwind_stop_reason): New.
+ (amd64_epilogue_frame_this_id): Don't build a frame id if the
+ frame base was unavailable.
+ (amd64_epilogue_frame_unwind): Install
+ amd64_epilogue_frame_unwind_stop_reason.
+ * i386-tdep.c: Include "exceptions.h".
+ (struct i386_frame_cache): New field "base_p".
+ (i386_init_frame_cache): Clear it.
+ (i386_frame_cache_1): New, factored out from amd64_frame_cache.
+ Avoid reading registers with functions that throw if the register
+ is not necessary to compute the frame base.
+ (i386_frame_cache): Reimplement wrapping amd64_frame_cache_1, and
+ swallowing NOT_AVAILABLE_ERROR.
+ (i386_frame_unwind_stop_reason): New.
+ (i386_frame_this_id): Don't build a frame id if the frame base was
+ unavailable.
+ (i386_frame_prev_register): Handle unavailable SP.
+ (i386_frame_unwind): Install i386_frame_unwind_stop_reason.
+ (i386_epilogue_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
+ base_p if the frame base was computable.
+ (i386_epilogue_frame_unwind_stop_reason): New.
+ (i386_epilogue_frame_this_id): Don't build a frame id if the frame
+ base was unavailable.
+ (i386_epilogue_frame_unwind): Install
+ i386_epilogue_frame_unwind_stop_reason.
+ (i386_sigtramp_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
+ base_p if the frame base was computable.
+ (i386_sigtramp_frame_unwind_stop_reason): New.
+ (i386_sigtramp_frame_this_id): Don't build a frame id if the frame
+ base was unavailable.
+ (i386_sigtramp_frame_unwind): Install
+ i386_sigtramp_frame_unwind_stop_reason.
+ * sentinel-frame.c (sentinel_frame_prev_register): Use the value
+ type's size, not the register's.
+ (sentinel_frame_unwind): Install default_frame_unwind_stop_reason.
+
+ * alpha-mdebug-tdep.c (alpha_mdebug_frame_unwind): Install
+ default_frame_unwind_stop_reason.
+ * alpha-tdep.c (alpha_sigtramp_frame_unwind)
+ (alpha_heuristic_frame_unwind): Ditto.
+ * amd64obsd-tdep.c (amd64obsd_trapframe_unwind): Ditto.
+ * arm-tdep.c (arm_prologue_unwind, arm_stub_unwind): Ditto.
+ * avr-tdep.c (avr_frame_unwind): Ditto.
+ * cris-tdep.c (cris_sigtramp_frame_unwind, cris_frame_unwind):
+ Ditto.
+ * frv-linux-tdep.c (frv_linux_sigtramp_frame_unwind): Ditto.
+ * frv-tdep.c (frv_frame_unwind): Ditto.
+ * h8300-tdep.c (h8300_frame_unwind): Ditto.
+ * hppa-hpux-tdep.c (hppa_hpux_sigtramp_frame_unwind): Ditto.
+ * hppa-linux-tdep.c (hppa_linux_sigtramp_frame_unwind): Ditto.
+ * hppa-tdep.c (hppa_frame_unwind, hppa_fallback_frame_unwind)
+ (hppa_stub_frame_unwind): Ditto.
+ * i386obsd-tdep.c (i386obsd_trapframe_unwind): Ditto.
+ * ia64-tdep.c (ia64_frame_unwind, ia64_sigtramp_frame_unwind)
+ (ia64_libunwind_frame_unwind)
+ (ia64_libunwind_sigtramp_frame_unwind): Ditto.
+ * iq2000-tdep.c (iq2000_frame_unwind): Ditto.
+ * lm32-tdep.c (lm32_frame_unwind): Ditto.
+ * m32c-tdep.c (m32c_unwind): Ditto.
+ * m32r-linux-tdep.c (m32r_linux_sigtramp_frame_unwind): Ditto.
+ * m32r-tdep.c (m32r_frame_unwind): Ditto.
+ * m68hc11-tdep.c (m68hc11_frame_unwind): Ditto.
+ * m68k-tdep.c (m68k_frame_unwind): Ditto.
+ * m68klinux-tdep.c (m68k_linux_sigtramp_frame_unwind): Ditto.
+ * m88k-tdep.c (m88k_frame_unwind): Ditto.
+ * mep-tdep.c (mep_frame_unwind): Ditto.
+ * microblaze-tdep.c (microblaze_frame_unwind): Ditto.
+ * mips-tdep.c (mips_insn16_frame_unwind, mips_insn32_frame_unwind)
+ (mips_stub_frame_unwind): Ditto.
+ * mn10300-tdep.c (mn10300_frame_unwind): Ditto.
+ * moxie-tdep.c (moxie_frame_unwind): Ditto.
+ * mt-tdep.c (mt_frame_unwind): Ditto.
+ * ppc-linux-tdep.c (ppu2spu_unwind): Ditto.
+ * ppcobsd-tdep.c (ppcobsd_sigtramp_frame_unwind): Ditto.
+ * rs6000-tdep.c (rs6000_frame_unwind): Ditto.
+ * s390-tdep.c (s390_frame_unwind, s390_stub_frame_unwind)
+ (s390_sigtramp_frame_unwind): Ditto.
+ * score-tdep.c (score_prologue_unwind): Ditto.
+ * sh-tdep.c (sh_frame_unwind): Ditto.
+ * sh64-tdep.c (sh64_frame_unwind): Ditto.
+ * sparc-sol2-tdep.c (sparc32_sol2_sigtramp_frame_unwind): Ditto.
+ * sparc-tdep.c (sparc32_frame_unwind): Ditto.
+ * sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_unwind): Ditto.
+ * sparc64-tdep.c (sparc64_frame_unwind): Ditto.
+ * sparc64fbsd-tdep.c (sparc64fbsd_sigtramp_frame_unwind): Ditto.
+ * sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_frame_unwind): Ditto.
+ * sparc64obsd-tdep.c (sparc64obsd_frame_unwind)
+ (sparc64obsd_trapframe_unwind): Ditto.
+ * sparcnbsd-tdep.c (sparc32nbsd_sigcontext_frame_unwind): Ditto.
+ * sparcobsd-tdep.c (sparc32obsd_sigtramp_frame_unwind): Ditto.
+ * spu-tdep.c (spu_frame_unwind, spu2ppu_unwind): Ditto.
+ * v850-tdep.c (v850_frame_unwind): Ditto.
+ * vax-tdep.c (vax_frame_unwind): Ditto.
+ * vaxobsd-tdep.c (vaxobsd_sigtramp_frame_unwind): Ditto.
+ * xstormy16-tdep.c (frame_unwind xstormy16_frame_unwind): Ditto.
+ * xtensa-tdep.c (xtensa_unwind): Ditto.
+
+2011-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * tui/tui-hooks.c (tui_selected_frame_level_changed_hook): Assume
+ there's always a frame. Use get_frame_pc_if_available instead of
+ get_frame_pc, and if there's no PC available, don't look up a
+ symtab.
+
+2011-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * stack.c (print_frame_local_vars, print_frame_arg_vars): Handle
+ unavailable PC.
+
+2011-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * tracepoint.c (set_traceframe_context): Handle unavailable PC
+ gracefully.
+
+2011-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * frame.h (frame_unwind_caller_pc_if_available): Declare.
+ * frame.c (frame_unwind_caller_pc_if_available): New.
+ * stack.c (frame_info): Handle unavailable PC.
+
+2011-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * frame.c (frame_unwind_pc): Rename to ...
+ (frame_unwind_pc_if_available): ... this. New `pc' output
+ parameter. Change return type to int. Gracefully handle
+ gdbarch_unwind_pc throwing NOT_AVAILABLE_ERROR. Return 0 if that
+ happened, or 1 otherwise.
+ (frame_unwind_pc): Reimplement on top of
+ frame_unwind_pc_if_available.
+ (get_frame_func): Rename to ...
+ (get_frame_func_if_available): New `pc' output parameter. Change
+ return type to int. Gracefully handle the PC not being available.
+ (get_frame_func): Reimplement on top of
+ get_frame_func_if_available.
+ (select_frame): Handle the PC being unavailable.
+ (get_prev_frame): Handle the PC being unavailable.
+ (get_frame_pc_if_available): New.
+ (get_frame_address_in_block_if_available): New.
+ (find_frame_sal): Handle the frame PC not being available.
+ * frame.h (get_frame_pc_if_available): Declare.
+ (get_frame_address_in_block_if_available): Declare.
+ (get_frame_func_if_available): Declare.
+ * stack.c (print_frame_info): Handle the PC being unavailable.
+ (find_frame_funname): Ditto.
+ (print_frame): Handle the PC being unavailable.
+ (get_frame_language): Ditto.
+ * blockframe.c (get_frame_block): Ditto.
+ * macroscope.c (default_macro_scope): Ditto.
+ * tui/tui-stack.c (tui_show_frame_info): Ditto.
+
+2011-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * dwarf2loc.c (dwarf2_evaluate_loc_desc): Catch
+ NOT_AVAILABLE_ERROR when evaluating the location expression.
+
+2011-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * dwarf2loc.c (read_pieced_value): Handle get_frame_register_bytes
+ returning that the register piece is unavailable/optimized out.
+ (write_pieced_value): Handle get_frame_register_bytes returning
+ that the register piece is unavailable/optimized out when doing a
+ read-modify write of a bitfield.
+ * findvar.c (value_from_register): Handle get_frame_register_bytes
+ returning that the register piece is unavailable/optimized out.
+ * frame.c (get_frame_register_bytes): New parameters `optimizedp'
+ and `unavailablep'. Throw error on bad debug info. Use
+ frame_register instead of frame_register_read, to fill in the new
+ arguments.
+ * frame.h (get_frame_register_bytes): New parameters `optimizedp'
+ and `unavailablep'.
+ * valops.c: (value_assign): Adjust, and handle
+ get_frame_register_bytes failing.
+ * spu-tdep.c: Include exceptions.h.
+ (spu_software_single_step): Adjust, and handle
+ get_frame_register_bytes failing.
+ (spu_get_longjmp_target): Ditto.
+ * gdbarch.sh (register_to_value): Change to return int. New
+ parameters `optimizedp' and `unavailablep'.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * i386-tdep.c (i386_register_to_value): Adjust to new
+ gdbarch_register_to_value interface.
+ * i387-tdep.c (i387_register_to_value): Ditto.
+ * i387-tdep.h (i387_register_to_value): Ditto.
+ * alpha-tdep.c (alpha_register_to_value): Ditto.
+ * ia64-tdep.c (ia64_register_to_value): Ditto.
+ * m68k-tdep.c (m68k_register_to_value): Ditto.
+ * mips-tdep.c (mips_register_to_value): Ditto.
+ * rs6000-tdep.c (rs6000_register_to_value): Ditto.
+
+2011-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * findvar.c (value_of_register): Mark the value as unavailable, if
+ the register is unavailable.
+ * frame.h (frame_register_unwind): New `unavailablep' parameter.
+ (frame_register): New `unavailablep' parameter.
+ (frame_register_read): Update comment.
+ * frame.c (frame_register_unwind): New `unavailablep' parameter.
+ Set it if the register is unavailable. If the register is
+ unavailable, clear the output buffer.
+ (frame_register): New `unavailablep' parameter. Pass it down.
+ (frame_unwind_register): Adjust.
+ (put_frame_register): Adjust.
+ (frame_register_read): Adjust. Also return false if the register
+ is not available.
+ (frame_register_unwind_location): Adjust.
+ * sentinel-frame.c (sentinel_frame_prev_register): If the register
+ is unavailable, mark the value accordingly.
+ * stack.c (frame_info): Handle unavailable registers.
+
+2011-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * mi/mi-main.c (register_changed_p): Handle REG_UNAVAILABLE, and
+ simplify, using regcache_cooked_read.
+
2011-03-18 Pedro Alves <pedro@codesourcery.com>
* regcache.h (regcache_raw_read, regcache_raw_read_signed)