1. 04 Jul, 2000 1 commit
  2. 26 Jun, 2000 1 commit
    • dwarf2.h (enum dwarf_call_frame_info): Add DW_CFA_def_cfa_expression. · 7d9d8943
              * dwarf2.h (enum dwarf_call_frame_info): Add
              DW_CFA_def_cfa_expression.
              * dwarf2out.c (union dw_cfi_oprnd_struct): Add a pointer to a
              dw_loc_descr_struct entry.
              (struct cfa_loc): New structure to track a CFA location.
              (lookup_cfa): Take a cfa_loc parameter instead of a reg and an offset.
              (lookup_cfa_1): Take a cfa_loc parameter instead of a reg and an
              offset, plus handle DW_CFA_def_cfa_expression.
              (def_cfa_1): Use to be dwarf2out_def_cfa, only now it uses a
              cfa_loc record.
              (dwarf2out_def_cfa): Entry point maintained for compatability.
              (dwarf_cfi_name): Add DW_CFA_def_cfa_expression.
              (cfa_reg, cfa_offset): Replace with cfa_loc record 'cfa'.
              (cfa_store_reg, cfa_store_offset): Replace with cfa_loc 'cfa_store'.
              (initial_return_save, dwarf2out_stack_adjust): Use cfa.reg, not
              cfa_reg.
              (dwarf2out_frame_debug_expr): Use new cfa_loc records. Recognize rtl
              sequences for the new DW_CFA_def_cfa_expression record.
              (dwarf2out_frame_debug): Use new variables/fields.A
              (output_cfi): Handle DW_CFA_def_cfa_expression.
              (output_cfa_loc): New function to generate a CFI record for
              DW_CFA_def_cfa_expression.
              (get_cfa_from_loc_descr): New function to get a cfa_loc record from
              a dw_loc_descr sequeunce.
              (build_loc_descr): Build a dw_loc_descr from a cfa_loc record.
              (dwarf_stack_op_name, new_loc_descr, add_loc_descr, size_of_loc_descr,
              size_of_locs, output_loc_operands, output_loc_sequence): Move into
              unwind info section.
              * frame.h (frame_state): Add base_offset and indirect fields.
              * frame-dwarf2.c (decode_stack_op): New function to interpret a
              dw_loc_descr operation.
              (execute_cfa_insn): Add support for DW_CFA_def_cfa_expression.
              (struct frame_state): Add base offset and indirect fields.
              * libgcc2.c (next_stack_level): Support indirect loading for CFA.
      
      From-SVN: r34717
      Andrew Macleod committed
  3. 07 Jun, 2000 1 commit
  4. 25 May, 2000 1 commit
    • except.c (func_eh_entry): Add emitted field. · ce152ef8
      2000-05-25  Andrew MacLeod  <amacleod@cygnus.com>
                  Andrew Haley  <aph@cygnus.com>
      
      	* except.c  (func_eh_entry): Add emitted field.
      	(new_eh_region_entry): Set emitted field to 0;
      	(output_exception_table_entry): Only emit previously un-emitted data,
      	and send it to the eh_data section.
      	(output_exception_table): Break out common parts. Output
      	exception table for entire compilation unit to eh_data section.
      	(output_exception_table_data): Common parts of output_exception_table.
      	Send output to eh_data section.
      	(output_function_exception_table): Output exception table data for
      	a single function to eh_data section.
      	(free_exception_table): New external to free the table.
      	* except.h (free_exception_table): Add prototype.
      	(output_function_exception_table): Add prototype.
      	* final.c (final_end_function): Output function exception table
      	for IA64_UNWIND_INFO.
      	(final_scan_insn): Emit any unwind directives for an insn.
      
      	* frame-dwarf2.c: New file containing all DWARF 2 specific code
      	from frame.c.
      	* frame.c: Remove all DWARF 2 specific code.
      	* config/ia64/frame-ia64.c: New file.
      	(gthread_stuff): Make all gthread available with
      	IA64_UNWIND_INFO.
      	(dwarf_fde): Define an IA64 struct for dwarf_fde.
      	(__register_frame_info, __register_frame): Move to common area of file.
      	(__register_frame_info_table, __register_frame_table): Move to common i
      	area.
      	(__deregister_frame_info, __deregister_frame): Move to common area.
      	(__frame_init, find_fde): New versions for IA64_UNWIND_INFO.
      	(read_uleb128): New version for ia64.
      	(get_unwind_record): Read the next IA-64 unwind record.
      	(read_R_record): Read a region header record.
      	(process_a_b_reg_code): X record helper.
      	(read_X_record): Read an X format record.
      	(read_B_record): Read a B format record.
      	(P3_record_types): List of record types matching the P3 format.
      	(P7_record_types): List of record types matching the P7 format.
      	(P8_record_types): List of record types matching the P8 format.
      	(read_P_record): Read a P format record.
      	(init_ia64_reg_loc): Set default fields for a register.
      	(init_ia64_unwind_frame): Set defaults for all register records.
      	(execute_one_ia64_descriptor): Execute one descriptor record.
      	(rse_address_add): Calculate the position of a local reg in memory.
      	(normalize_reg_loc): Turn a location descriptor into a memory address.
      	(maybe_normalize_reg_loc): Only normalize a descriptor if it falls
      	within a specified PC offset range.
      	(get_real_reg_value): Given a register location, retrieve its value.
      	(set_real_reg_value): Change the value of a register location.
      	(copy_reg_value): Copy reg values, if needed.
      	(copy_saved_reg_state): Copy all registers that need to be copied.
      	(process_state_between): Normalize all frame register records that
      	fall within the specified PC range.
      	(frame_translate): Take a processed frame description, and turn
      	everything into addresses.
      	(build_ia64_frame_state ): Find and create frame state record for a PC.
      	(get_personality): Get the personality routine for a given frame.
      	(get_except_table): Get the exception table for a given frame.
      	(record_name): Unwind record names for debugging.
      	(print_record): Print and unwind record.
      	(print_all_records): Print an entire unwind image.
      	(__ia64_backtrace): Print a backtrace.
      	(ia64_backtrace_helper): New function.
      	(__register_frame_info_aux): New function.
      	* config/ia64/crtend.asm (__do_frame_setup_aux): New function.
      
      	* frame.h (enum unw_record_type): New unwind record types.
      	(struct unw_p_record, unw_b_record, unw_x_record) : New unwind records.
      	(struct unw_r_record, unwind_record): New unwind record structs.
      	(struct unwind_info_ptr): Unwind information layout.
      	(IA64_UNW_LOC_TYPE_*): Macros for different types for location
      	descriptors.
      	(struct ia64_reg_loc): Register location description.
      	(struct ia64_frame_state): Location of all registers in a frame.
      	(struct object): Add pc_base and fde_end for IA64_UNWIND_INFO.
      	* libgcc2.c (__ia64_personality_v1): Personality routine.
      	(__calc_caller_bsp): Calculate the bsp register for the caller's
      	frame.
      	(ia64_throw_helper): Figure out who to return to and set up the
      	registers.
      	(__throw): Throw routine.
      
      	* output.h (assemble_eh_align, assemble_eh_label): New functions
      	to generate EH info where we want it.
      	(assemble_eh_integer): New function.
      	* toplev.c (compile_file): Output module level exception table for
      	non-ia64 targets.
      	(main): Set exceptions_via_longjump and flag_new_exceptions based
      	on IA64_UNWIND_INFO too.
      
      	* varasm.c (assemble_eh_label): Generate a label via
      	ASM_OUTPUT_EH_LABEL if it has been specified.
      	(assemble_eh_align): Generate an alignment directive via
      	ASM_OUTPUT_EH_ALIGN if it has been specified.
      	(assemble_eh_label): Generate an integer value via
      	ASM_OUTPUT_EH_type if they have been specified.
      	* config/ia64/ia64.c (rtx_needs_barrier): Add flushrs.
      	(ia64_init_builtins): Add __builtin_ia64_bsp
      	and __builtin_ia64_flushrs.
      	(ia64_expand_builtin): Add IA64_BUILTIN_BSP and
      	IA64_BUILTIN_FLUSHRS.
      	* config/ia64/ia64.h (ia64_builtins): Add IA64_BUILTIN_BSP and
      	IA64_BUILTIN_FLUSHRS.
      
      	* config/ia64/ia64.md (flushrs): New insn to flush the register
      	stack.  Add to unspec list.
      
      	* config/ia64/crtbegin.asm (frame_object): Change size.
      	(__do_frame_setup_aux): New function.
      	* config/ia64/crtend.asm: call __do_frame_setup_aux.
      	* config/ia64/t-ia64 (LIB2ADDEH): Add.
      	* Makefile.in (LIB2ADDEH): Add.
      	(LIB2ADD): Use LIB2ADDEH.
      
      Co-Authored-By: Andrew Haley <aph@cygnus.com>
      
      From-SVN: r34169
      Andrew MacLeod committed
  5. 23 Mar, 2000 2 commits
    • rs6000.h (DWARF_FRAME_RETURN_COLUMN): Define. · 8034da37
              * config/rs6000/rs6000.h (DWARF_FRAME_RETURN_COLUMN): Define.
              * config/alpha/alpha.h (DWARF_FRAME_RETURN_COLUMN): Define.
              * config/sparc/sparc.h (DWARF_FRAME_RETURN_COLUMN): Define.
      
              * frame.h (frame_state): Revert last change.
              * frame.c (execute_cfa_insn): Just don't record the save of a CFA reg.
              * libgcc2.c (throw_helper): Revert last change.
      
      From-SVN: r32705
      Jason Merrill committed
    • Implement dwarf2 exception handling for the ARM. · 2c849145
              * config/arm/arm.h (INCOMING_RETURN_ADDR_RTX): Define.
              (DWARF_FRAME_RETURN_COLUMN): Define.
              * config/arm/arm.c (emit_multi_reg_push): Return rtx.  Attach
              REG_FRAME_RELATED_EXPR note.
              (emit_sfm): Likewise.
              (arm_expand_prologue): Set RTX_FRAME_RELATED_P on everything.
              * dwarf2out.c (reg_save): Handle saving a register to itself.
              (dwarf2out_frame_debug_expr): Handle an intermediate cfa reg.
              * except.c (eh_regs): Don't use the static chain reg if it's
              callee-saved.
              * frame.h (frame_state): Add cfa_saved field.
              * frame.c (execute_cfa_insn): Set it.
              * libgcc2.c (throw_helper): Don't adjust sp if it's restored in
              the epilogue.
              * function.c (ARG_POINTER_CFA_OFFSET): Default to FIRST_PARM_OFFSET.
              Now takes a parm.
              (instantiate_virtual_regs): Adjust.
              * tm.texi: Adjust.
              * config/m68k/m68k.h (ARG_POINTER_CFA_OFFSET): Don't define.
              * config/ns32k/ns32k.h (ARG_POINTER_CFA_OFFSET): Don't define.
              * config/sparc/sparc.h (ARG_POINTER_CFA_OFFSET): Take a parm.
      
              * dwarf2out.c (reg_number): Refer to FIRST_PSEUDO_REGISTER.
              (initial_return_save): Use DWARF_FRAME_REGNUM, not reg_number.
      
      From-SVN: r32696
      Jason Merrill committed
  6. 30 Dec, 1999 1 commit
    • Restore i386 binary compatibility in Dwarf EH info. · 3073d01c
              * config/i386/i386.h (DWARF_FRAME_REGISTERS): Define as 17, the old
              value of FIRST_PSEUDO_REGISTER.
              * frame.h (DWARF_FRAME_REGISTERS): Default to FIRST_PSEUDO_REGISTER.
              (struct frame_state): Use DWARF_FRAME_REGISTERS.
              * dwarfout.c (output_reg_number): Ditto.
              * dwarf2out.c (reg_number, expand_builtin_init_dwarf_reg_sizes): Ditto.
              (DWARF_FRAME_RETURN_COLUMN): Default to DWARF_FRAME_REGISTERS.
      
      From-SVN: r31127
      Martin v. Loewis committed
  7. 27 Feb, 1999 1 commit
    • frame.h: Update some comments. · 8f08ea1e
              * frame.h: Update some comments.
              * defaults.h (TARGET_ATTRIBUTE_WEAK): Define.
              * crtstuff.c (__register_frame_info, __deregister_frame_info): Declare
              using TARGET_WEAK_ATTRIBUTE.
              (__do_global_dtors_aux): Check if __deregister_frame_info is
              zero before calling it.
              (__do_global_dtors): Likewise.
              (frame_dummy): Check if __register_frame_info is zero before
              calling it.
              (__frame_dummy): Likewise.
      
      Co-Authored-By: Jeffrey A Law <law@cygnus.com>
      
      From-SVN: r25487
      H.J. Lu committed
  8. 06 Jan, 1999 1 commit
  9. 15 Dec, 1997 2 commits
  10. 07 Dec, 1997 1 commit
  11. 10 Sep, 1997 1 commit