From 4b72e226dd3bee783a1128868297319ba0ef29cd Mon Sep 17 00:00:00 2001 From: jason Date: Mon, 26 Jun 2000 20:15:07 +0000 Subject: * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34717 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/frame.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gcc/frame.h') diff --git a/gcc/frame.h b/gcc/frame.h index 85c5e436d5b..52908f11b32 100644 --- a/gcc/frame.h +++ b/gcc/frame.h @@ -1,6 +1,6 @@ /* Header file for unwinding stack frames for exception handling. */ /* Compile this one with gcc. */ -/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. Contributed by Jason Merrill . This file is part of GNU CC. @@ -30,11 +30,13 @@ typedef struct frame_state void *cfa; void *eh_ptr; long cfa_offset; + long base_offset; long args_size; long reg_or_offset[DWARF_FRAME_REGISTERS+1]; unsigned short cfa_reg; unsigned short retaddr_column; char saved[DWARF_FRAME_REGISTERS+1]; + char indirect; } frame_state; /* Values for 'saved' above. */ -- cgit v1.2.1