mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-26 09:07:38 +01:00
(struct cursor): Replace rbs_top and top_rnat_loc with rbs_wridx, rbs_curr,
rbs_nvalid, and rbs_area. Add new member sigcontext_off. (Logical change 1.40)
This commit is contained in:
parent
7c6f9ccd2c
commit
8b17d136c5
1 changed files with 22 additions and 3 deletions
|
@ -1,5 +1,5 @@
|
|||
/* libunwind - a platform-independent unwind library
|
||||
Copyright (C) 2001-2002 Hewlett-Packard Co
|
||||
Copyright (C) 2001-2003 Hewlett-Packard Co
|
||||
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
|
||||
|
||||
This file is part of libunwind.
|
||||
|
@ -91,8 +91,6 @@ struct cursor
|
|||
unw_word_t sp; /* stack pointer value */
|
||||
unw_word_t psp; /* previous sp value */
|
||||
unw_word_t cfm_loc; /* cfm save location (or NULL) */
|
||||
unw_word_t rbs_top; /* address of end of register backing store */
|
||||
unw_word_t top_rnat_loc; /* location of final (topmost) RNaT word */
|
||||
|
||||
/* preserved state: */
|
||||
unw_word_t bsp_loc; /* previous bsp save location */
|
||||
|
@ -114,12 +112,33 @@ struct cursor
|
|||
unw_word_t sigcontext_loc; /* location of sigcontext or NULL */
|
||||
unw_word_t is_signal_frame; /* is this a signal trampoline frame? */
|
||||
|
||||
unw_word_t sigcontext_off; /* sigcontext-offset relative to signal sp */
|
||||
|
||||
short hint;
|
||||
short prev_script;
|
||||
|
||||
int pi_valid : 1; /* is proc_info valid? */
|
||||
int pi_is_dynamic : 1; /* proc_info found via dynamic proc info? */
|
||||
unw_proc_info_t pi; /* info about current procedure */
|
||||
|
||||
/* In case of stack-discontiguities, such as those introduced by
|
||||
signal-delivery on an alternate signal-stack (see
|
||||
sigaltstack(2)), we use the following data-structure to keep
|
||||
track of the register-backing-store areas across on which the
|
||||
current frame may be backed up. Since there are at most 96
|
||||
stacked registers and since we only have to track the current
|
||||
frame and only areas that are not empty, at most 96
|
||||
backing-store areas have to be tracked. */
|
||||
uint8_t rbs_wridx; /* write index (see rbs-ia64.c) */
|
||||
uint8_t rbs_curr; /* index of current rbs-area (contains c->bsp) */
|
||||
uint8_t rbs_nvalid; /* number of entries that area valid */
|
||||
struct rbs_area
|
||||
{
|
||||
unw_word_t end;
|
||||
unw_word_t size;
|
||||
unw_word_t rnat_loc;
|
||||
}
|
||||
rbs_area[96];
|
||||
};
|
||||
|
||||
struct ia64_global_unwind_state
|
||||
|
|
Loading…
Reference in a new issue