mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-22 23:47:39 +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
|
/* 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>
|
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
|
||||||
|
|
||||||
This file is part of libunwind.
|
This file is part of libunwind.
|
||||||
|
@ -91,8 +91,6 @@ struct cursor
|
||||||
unw_word_t sp; /* stack pointer value */
|
unw_word_t sp; /* stack pointer value */
|
||||||
unw_word_t psp; /* previous sp value */
|
unw_word_t psp; /* previous sp value */
|
||||||
unw_word_t cfm_loc; /* cfm save location (or NULL) */
|
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: */
|
/* preserved state: */
|
||||||
unw_word_t bsp_loc; /* previous bsp save location */
|
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 sigcontext_loc; /* location of sigcontext or NULL */
|
||||||
unw_word_t is_signal_frame; /* is this a signal trampoline frame? */
|
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 hint;
|
||||||
short prev_script;
|
short prev_script;
|
||||||
|
|
||||||
int pi_valid : 1; /* is proc_info valid? */
|
int pi_valid : 1; /* is proc_info valid? */
|
||||||
int pi_is_dynamic : 1; /* proc_info found via dynamic proc info? */
|
int pi_is_dynamic : 1; /* proc_info found via dynamic proc info? */
|
||||||
unw_proc_info_t pi; /* info about current procedure */
|
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
|
struct ia64_global_unwind_state
|
||||||
|
|
Loading…
Reference in a new issue