1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2025-02-02 04:52:53 +01:00

Include "elf64.h".

(struct cursor): Add member "eh_valid_mask" to track which eh_args[] are valid.
	Fix comment for rbs_curr.
(tdep_get_elf_image): New routine.

(Logical change 1.45)
This commit is contained in:
mostang.com!davidm 2003-02-08 10:10:59 +00:00
parent b2a5a9023b
commit 108627cab7

View file

@ -32,6 +32,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
#include <endian.h> #include <endian.h>
#include <libunwind.h> #include <libunwind.h>
#include "elf64.h"
#include "mempool.h" #include "mempool.h"
enum ia64_pregnum enum ia64_pregnum
@ -118,6 +119,7 @@ struct cursor
short hint; short hint;
short prev_script; short prev_script;
uint8_t eh_valid_mask;
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? */
@ -131,7 +133,7 @@ struct cursor
stacked registers and since we only have to track the current stacked registers and since we only have to track the current
frame and only areas that are not empty, this puts an upper frame and only areas that are not empty, this puts an upper
limit on the # of backing-store areas we have to track. */ limit on the # of backing-store areas we have to track. */
uint8_t rbs_curr; /* index of current rbs-area (contains c->bsp) */ uint8_t rbs_curr; /* index of curr. rbs-area (contains c->bsp) */
uint8_t rbs_left_edge; /* index of inner-most valid rbs-area */ uint8_t rbs_left_edge; /* index of inner-most valid rbs-area */
uint8_t rbs_right_edge; /* index of outer-most valid rbs-area */ uint8_t rbs_right_edge; /* index of outer-most valid rbs-area */
struct rbs_area struct rbs_area
@ -175,9 +177,12 @@ struct ia64_global_unwind_state
#define tdep_search_unwind_table(a,b,c,d,e,f) \ #define tdep_search_unwind_table(a,b,c,d,e,f) \
_Uia64_search_unwind_table (a, b, c, d, e, f) _Uia64_search_unwind_table (a, b, c, d, e, f)
#define tdep_find_proc_info(as,ip,pi,n,a) \ #define tdep_find_proc_info(as,ip,pi,n,a) \
UNW_ARCH_OBJ(find_proc_info) (as,ip,pi,n,a) UNW_ARCH_OBJ(find_proc_info) (as, ip, pi, n, a)
#define tdep_put_unwind_info(a,b,c) UNW_ARCH_OBJ(put_unwind_info)(a,b,c) #define tdep_put_unwind_info(a,b,c) UNW_ARCH_OBJ(put_unwind_info)(a, b, c)
#define tdep_uc_addr(uc,reg) UNW_ARCH_OBJ(uc_addr)(uc,reg) #define tdep_uc_addr(uc,reg) UNW_ARCH_OBJ(uc_addr)(uc, reg)
#define tdep_get_elf_image(a,b,c,d,e) UNW_ARCH_OBJ(get_elf_image) (a, b, c, \
d, e)
#define tdep_get_proc_name(a,b,c,d) _Uelf64_get_proc_name (a, b, c, d)
#define tdep_debug_level unw.debug_level #define tdep_debug_level unw.debug_level
#define unw UNW_ARCH_OBJ(data) #define unw UNW_ARCH_OBJ(data)
@ -188,6 +193,8 @@ extern int tdep_find_proc_info (unw_addr_space_t as, unw_word_t ip,
extern void tdep_put_unwind_info (unw_addr_space_t as, extern void tdep_put_unwind_info (unw_addr_space_t as,
unw_proc_info_t *pi, void *arg); unw_proc_info_t *pi, void *arg);
extern void *tdep_uc_addr (ucontext_t *uc, unw_regnum_t regnum); extern void *tdep_uc_addr (ucontext_t *uc, unw_regnum_t regnum);
extern int tdep_get_elf_image (struct elf_image *ei, pid_t pid, unw_word_t ip,
unsigned long *segbase, unsigned long *mapoff);
extern struct ia64_global_unwind_state unw; extern struct ia64_global_unwind_state unw;