From: Aldy Hernandez Date: Thu, 6 Dec 2001 21:38:03 +0000 (+0000) Subject: tm.texi (DWARF_FRAME_REGISTERS): Add documentation. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=919543abfebfc21d56c54f2efd749b4a5ed199be;p=platform%2Fupstream%2Fgcc.git tm.texi (DWARF_FRAME_REGISTERS): Add documentation. * doc/tm.texi (DWARF_FRAME_REGISTERS): Add documentation. (PRE_GCC3_DWARF_FRAME_REGISTERS): Same. * unwind-dw2.c (__frame_state_for): Change DWARF_FRAME_REGISTERS to PRE_GCC3_DWARF_FRAME_REGISTERS. (frame_state): Same. (PRE_GCC3_DWARF_FRAME_REGISTERS): Define if not already defined. Co-Authored-By: Richard Henderson From-SVN: r47730 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1560217..167de28 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2001-12-06 Aldy Hernandez + Richard Henderson + + * doc/tm.texi (DWARF_FRAME_REGISTERS): Add documentation. + (PRE_GCC3_DWARF_FRAME_REGISTERS): Same. + + * unwind-dw2.c (__frame_state_for): Change DWARF_FRAME_REGISTERS + to PRE_GCC3_DWARF_FRAME_REGISTERS. + (frame_state): Same. + (PRE_GCC3_DWARF_FRAME_REGISTERS): Define if not already defined. + 2001-12-06 Kaveh R. Ghazi * langhooks.c (lhd_staticp): Mark parameter with diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 67b78e6..0991bf0 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -3011,6 +3011,33 @@ macros and should be used to refer to those items. If the static chain is passed in a register, the two previous macros should be defined instead. + +@findex DWARF_FRAME_REGISTERS +@item DWARF_FRAME_REGISTERS +This macro specifies the maximum number of hard registers that can be +saved in a call frame. This is used to size data structures used in +DWARF2 exception handling. + +Prior to GCC 3.0, this macro was needed in order to establish a stable +exception handling ABI in the face of adding new hard registers for ISA +extensions. In GCC 3.0 and later, the EH ABI is insulated from changes +in the number of hard registers. Nevertheless, this macro can still be +used to reduce the runtime memory requirements of the exception handling +routines, which can be substantial if the ISA contains a lot of +registers that are not call-saved. + +If this macro is not defined, it defaults to +@code{FIRST_PSEUDO_REGISTER}. + +@findex PRE_GCC3_DWARF_FRAME_REGISTERS +@item PRE_GCC3_DWARF_FRAME_REGISTERS + +This macro is similar to @code{DWARF_FRAME_REGISTERS}, but is provided +for backward compatibility in pre GCC 3.0 compiled code. + +If this macro is not defined, it defaults to +@code{DWARF_FRAME_REGISTERS}. + @end table @node Elimination diff --git a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c index 5d335c6..a5ac368 100644 --- a/gcc/unwind-dw2.c +++ b/gcc/unwind-dw2.c @@ -42,6 +42,11 @@ #define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER #endif +/* Dwarf frame registers used for pre gcc 3.0 compiled glibc. */ +#ifndef PRE_GCC3_DWARF_FRAME_REGISTERS +#define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS +#endif + /* This is the register and unwind state for a particular frame. */ struct _Unwind_Context { @@ -944,10 +949,10 @@ typedef struct frame_state void *eh_ptr; long cfa_offset; long args_size; - long reg_or_offset[DWARF_FRAME_REGISTERS+1]; + long reg_or_offset[PRE_GCC3_DWARF_FRAME_REGISTERS+1]; unsigned short cfa_reg; unsigned short retaddr_column; - char saved[DWARF_FRAME_REGISTERS+1]; + char saved[PRE_GCC3_DWARF_FRAME_REGISTERS+1]; } frame_state; struct frame_state * __frame_state_for (void *, struct frame_state *); @@ -974,7 +979,7 @@ __frame_state_for (void *pc_target, struct frame_state *state_in) if (fs.cfa_how == CFA_EXP) return 0; - for (reg = 0; reg < DWARF_FRAME_REGISTERS + 1; reg++) + for (reg = 0; reg < PRE_GCC3_DWARF_FRAME_REGISTERS + 1; reg++) { state_in->saved[reg] = fs.regs.reg[reg].how; switch (state_in->saved[reg])