gdb/
[platform/upstream/binutils.git] / gdb / ChangeLog
index a663756..bcad138 100644 (file)
@@ -1,5 +1,202 @@
 2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
+       Entry values NEWS entries, DWARF disassembly support.
+       * NEWS: New entry values entry.
+       (set print entry-values, show print entry-values)
+       (set debug entry-values, show debug entry-values): New entries.
+       * dwarf2loc.c (disassemble_dwarf_expression): New parameters start and
+       indent.  Remove variable start.  Move header printing out.  Respect
+       INDENT.  Support DW_OP_GNU_entry_value.
+       (locexpr_describe_location_1): Move the header printing here, extend
+       the disassemble_dwarf_expression passed parameters.
+
+2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Display @entry parameter values even for references.
+       * ada-valprint.c (ada_val_print_1) <TYPE_CODE_REF>: Try also
+       coerce_ref_if_computed.
+       * c-valprint.c (c_val_print) <TYPE_CODE_REF>: Likewise.
+       * dwarf2expr.c (dwarf_block_to_dwarf_reg_deref): New function.
+       (execute_stack_op) <DW_OP_GNU_entry_value>: Add -1 deref_size to the
+       existing push_dwarf_reg_entry_value call.  Add new detection calling
+       dwarf_block_to_dwarf_reg_deref.  Update the error message.
+       (ctx_no_push_dwarf_reg_entry_value): New parameter deref_size.
+       * dwarf2expr.h
+       (struct dwarf_expr_context_funcs) <push_dwarf_reg_entry_value>: Add new
+       parameter deref_size, describe it in the comment.
+       (ctx_no_push_dwarf_reg_entry_value): Add new parameter deref_size.
+       (dwarf_block_to_dwarf_reg_deref): New declaration.
+       * dwarf2loc.c (dwarf_entry_parameter_to_value): Add new parameter
+       deref_size, describe it in the function comment.  New variables
+       data_src and size, fetch the alternative block accoring to DEREF_SIZE.
+       (dwarf_expr_push_dwarf_reg_entry_value): Add new parameter deref_size,
+       describe it in the function comment.  Fetch the alternative block
+       accoring to DEREF_SIZE.
+       (entry_data_value_coerce_ref, entry_data_value_copy_closure)
+       (entry_data_value_free_closure, entry_data_value_funcs): New.
+       (value_of_dwarf_reg_entry): New variables checked_type, target_type,
+       outer_val, target_val, val and addr.  Try to fetch and create also
+       referenced value content.
+       (pieced_value_funcs): NULL value for coerce_ref.
+       (needs_dwarf_reg_entry_value): Add new parameter deref_size.
+       * f-valprint.c (f_val_print) <TYPE_CODE_REF>: Try also
+       coerce_ref_if_computed.
+       * opencl-lang.c (opencl_value_funcs): NULL value for coerce_ref.
+       * p-valprint.c (pascal_val_print) <TYPE_CODE_REF>: Likewise.
+       * stack.c (read_frame_arg): Compare also dereferenced values.
+       * value.c (value_computed_funcs): Make the parameter v const, use
+       value_lval_const for it.
+       (value_lval_const, coerce_ref_if_computed): New function.
+       (coerce_ref): New variable retval.  Call also coerce_ref_if_computed.
+       * value.h (struct lval_funcs): New field coerce_ref.
+       (value_computed_funcs): Make the parameter v const.
+       (value_lval_const, coerce_ref_if_computed): New declarations.
+
+2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Support @entry in input expressions.
+       * c-exp.y (ENTRY, unknown_cpp_name): New.
+       (exp: UNKNOWN_CPP_NAME): Change to `exp: unknown_cpp_name'.
+       (unknown_cpp_name: UNKNOWN_CPP_NAME, unknown_cpp_name: ENTRY)
+       (variable: name_not_typename '@' ENTRY, name: ENTRY)
+       (name_not_typename: ENTRY): New.
+       (yylex): Recognize ENTRY.
+       * eval.c (evaluate_subexp_standard): Support also OP_VAR_ENTRY_VALUE.
+       * expprint.c (print_subexp_standard, dump_subexp_body_standard):
+       Likewise.
+       * parse.c (operator_length_standard): Likewise.
+       * std-operator.def: New operator OP_VAR_ENTRY_VALUE.
+
+2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Display referenced values in backtraces.
+       * printcmd.c (print_variable_and_value): Set OPTS.DEREF_REF to 1.
+       * stack.c (print_frame_arg): Likewise.
+
+2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Make some lval_funcs methods to default on NULL.
+       * valops.c (value_fetch_lazy): Check if lval_computed read method is
+       NULL.
+       (value_assign): Check if lval_computed write method is NULL.
+       * value.h (struct lval_funcs): Comment NULL values for read and write
+       methods.
+
+2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Display @entry parameter values (without references).
+       * dwarf2expr.c (dwarf_block_to_fb_offset, dwarf_block_to_sp_offset):
+       New functions.
+       * dwarf2expr.h (dwarf_block_to_fb_offset, dwarf_block_to_sp_offset):
+       New declarations.
+       * dwarf2loc.c (dwarf2_find_location_expression): Support location list
+       entry record.
+       (dwarf_entry_parameter_to_value, value_of_dwarf_reg_entry)
+       (value_of_dwarf_block_entry, locexpr_read_variable_at_entry): New
+       functions.
+       (dwarf2_locexpr_funcs): Install locexpr_read_variable_at_entry.
+       (loclist_read_variable_at_entry): New function.
+       (dwarf2_loclist_funcs): Install loclist_read_variable_at_entry.
+       * dwarf2read.c (read_call_site_scope): Support also DW_OP_fbreg in
+       DW_AT_location, call dwarf_block_to_sp_offset for it.
+       * frame.h (print_entry_values_no, print_entry_values_only)
+       (print_entry_values_preferred, print_entry_values_if_needed)
+       (print_entry_values_both, print_entry_values_compact)
+       (print_entry_values_default, print_entry_values): New declarations.
+       (struct frame_arg): New field entry_kind.
+       (read_frame_arg): New parameter entryargp.
+       * mi/mi-cmd-stack.c (list_arg_or_local): New gdb_assert for
+       arg->entry_kind.  Optionally print the `@entry' suffix.
+       (list_args_or_locals): New variable entryarg, initialize it.
+       Initialize also entry_kind of arg and entryarg.  Conditionalize
+       list_arg_or_local for arg, add list_arg_or_local for entryarg.  Call
+       xfree for entryarg.error.
+       * stack.c (print_entry_values_no, print_entry_values_only)
+       (print_entry_values_preferred, print_entry_values_if_needed)
+       (print_entry_values_both, print_entry_values_compact)
+       (print_entry_values_default, print_entry_values_choices)
+       (print_entry_values): New variables.
+       (print_frame_arg): New gdb_assert for arg->entry_kind.  Optionally
+       print the `@entry' suffix, possibly in combination for
+       print_entry_values_compact.
+       (read_frame_arg): New parameter entryargp, new variables entryval,
+       entryval_error and val_equal.  Read in also entryargp, respect
+       print_entry_values, compare the values using val_equal, fill in also
+       argp->entry_kind (together with entryargp->entry_kind).
+       (print_frame_args): New variable entryarg, initialize it.
+       Conditionalize print_frame_arg for arg, add print_frame_arg for
+       entryarg.  Call xfree for entryarg.error.
+       (_initialize_stack): Call add_setshow_enum_cmd for `entry-values'.
+       * symtab.h (struct symbol_computed_ops): New field
+       read_variable_at_entry.
+
+2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Code reshuffle.
+       * frame.h (struct frame_arg): New definition.
+       (read_frame_arg): New declaration.
+       * mi/mi-cmd-stack.c (list_arg_or_local): New functiom from ...
+       (list_args_or_locals): ... the code here.  New variable arg, call
+       read_frame_arg and list_arg_or_local with it.  Unify the
+       PRINT_SIMPLE_VALUES and PRINT_ALL_VALUES cases.  Call xfree for
+       arg.error.
+       * stack.c (print_frame_arg): New functiom from the code of
+       print_frame_args.
+       (read_frame_arg): New function.
+       (print_frame_args): Remove variable val.  New variable arg, call
+       read_frame_arg and print_frame_arg with it.  Call xfree for arg.error.
+
+2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Protect entry values against self tail calls.
+       * dwarf2loc.c (VEC (CORE_ADDR), func_verify_no_selftailcall): New.
+       (dwarf_expr_dwarf_reg_entry_value): Call func_verify_no_selftailcall.
+
+2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Recognize virtual tail call frames.
+       * Makefile.in (SFILES): Add dwarf2-frame-tailcall.c.
+       (HFILES_NO_SRCDIR): Add dwarf2-frame-tailcall.h.
+       (COMMON_OBS): Add dwarf2-frame-tailcall.o.
+       * dwarf2-frame-tailcall.c: New file.
+       * dwarf2-frame-tailcall.h: New file.
+       * dwarf2-frame.c: Include dwarf2-frame-tailcall.h.
+       (execute_cfa_program): New function comment.  Return INSN_PTR.  Reset
+       REGS.PREV only after CIE execution.
+       (struct dwarf2_frame_cache): New field tailcall_cache.
+       (dwarf2_frame_cache): New variables entry_pc, entry_cfa_sp_offset,
+       entry_cfa_sp_offset_p and instr.  Execute FDE instructions in two
+       parts, try to find entry_cfa_sp_offset.  Call
+       dwarf2_tailcall_sniffer_first.
+       (dwarf2_frame_prev_register): Call dwarf2_tailcall_prev_register_first
+       when appropriate.
+       (dwarf2_frame_dealloc_cache): New function.
+       (dwarf2_frame_sniffer): Preinitialize cache by dwarf2_frame_cache.
+       (dwarf2_frame_unwind): Install dwarf2_frame_dealloc_cache.
+       (dwarf2_signal_frame_unwind): Do not install dwarf2_frame_dealloc_cache.
+       (dwarf2_append_unwinders): Add dwarf2_tailcall_frame_unwind.
+       (dwarf2_frame_cfa): Support also dwarf2_tailcall_frame_unwind.
+       * dwarf2loc.c (func_addr_to_tail_call_list)
+       (tailcall_dump, call_sitep, VEC (call_sitep), chain_candidate)
+       (call_site_find_chain_1, call_site_find_chain): New.
+       * dwarf2loc.h (struct call_site_chain): New.
+       (call_site_find_chain): New declaration.
+       * frame.c (get_frame_address_in_block): Support also TAILCALL_FRAME.
+       * frame.h (enum frame_type): New entry TAILCALL_FRAME.
+       * python/py-frame.c (gdbpy_initialize_frames): Add TAILCALL_FRAME.
+       * stack.c (frame_info): Support also TAILCALL_FRAME.
+
+2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Tail call sites reader implementation.
+       * dwarf2read.c (read_call_site_scope): Recognize DW_AT_GNU_tail_call,
+       fill in TYPE_TAIL_CALL_LIST.
+       * gdbtypes.h (struct func_type): New field tail_call_list.
+       (struct call_site): New field tail_call_next.
+       (TYPE_TAIL_CALL_LIST): New definition.
+
+2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
        Implement basic support for DW_TAG_GNU_call_site.
        * block.c: Include gdbtypes.h and exceptions.h.
        (call_site_for_pc): New function.