1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-06-02 17:22:37 +02:00
Commit graph

730 commits

Author SHA1 Message Date
mostang.com!davidm 59f4f0d4c1 Move sharable stuff into shared.c.
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm 0c897ad858 Make this file sharable by using exported names that do not depend on UNW_LOCAL_ONLY.
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm 3083f40842 Initial revision 2002-02-28 16:24:48 +00:00
mostang.com!davidm ede7c575f9 Adjust for fact that IA64_REG_LOC now takes two arguments.
Special case access of NaT bits.

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm 2353a19c67 (unw_resume): If UNW_LOCAL_ONLY is defined, directly call ia64_local_resume().
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm 155b35c2cf (unw_init_remote): If UNW_LOCAL_ONLY is defined, return -UNW_EINVAL. Use common_init()
to handle most of the cursor initialization.

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm 503d83fa69 (uc_addr): New function to translate a register number into a ucontext address.
(_U_ia64_uc_addr): New function.
(access_reg): Use uc_addr() to calculate ucontext address.  Use uc->sc_rbs_base
	when accessing ar.bsp or ar.bspstore (see comments for unw_init_local()).
(access_fpreg): Ditto.
(ia64_local_resume): Renamed from resume().  Read NaT bits via ia64_access_reg().
	Call abort() instead of fprintf() when encountering a signal trampoline.
(unw_init_local): Initialize uc->sc_rbs_base to the bsp value of the current function.
	For UNW_LOCAL_ONLY case, just initialize c->uc and then call
	common_init() to do the remaining initialization.  For the general case,
	just initialize the accessor and then also call common_init().

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm 5e34685f18 (Logical change 1.8) 2002-02-28 16:24:48 +00:00
mostang.com!davidm 97c6919cd3 Rename: src/ia64/unwind_decoder.c -> src/ia64/unwind_decoder.h
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm de7b9f4912 Rename: src/ia64/unwind_decoder.c -> src/ia64/unwind_decoder.h
(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm 95ce9146a7 Initial revision 2002-02-23 20:27:03 +00:00
mostang.com!davidm 2f69df1d92 Include unwind_decoder.h instead of unwind_decoder.c.
(Logical change 1.7)
2002-02-23 20:27:03 +00:00
(none)!davidm 68ffdc1fce When printing a value of type unw_word_t, use the %lu format and
cast the value to (long).

(struct ia64_labeled_state): New type.
(alloc_labeled_state): New macro.
(free_labeled_state): Ditto.
(push, pop): Update for new ia64_state_record layout.
(dup_state_stack): New function.
(free_state_stack): Ditto.
(desc_copy_state): Make it restore the entire stack of states, not
	just the current one.
(desc_label_state): Make it save the entire stack of states, not
	just the current one.
(ia64_free_state_record): Free the list of labeled states.

(desc_prologue): Terminate parsing at end of region regardless of
	whether the next region is a body or a prologue.

(lookup): Verify that unwind table entry found by binary search
	really includes the desired IP.  If not, return NULL.
(get_proc_info): Adjust for move of start/end from unwind table
	to the unwind table info.  Return -UNW_ENOMEM if unable
	to allocate a new table.  If unwind entry does not exist
	for desired IP, clear the procedure info to zero.  Check
	the unwind version number and return -UNW_EBADVERSION if
	it is not 1.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 8dbd577e05 To simplify cross-compilation, use unw_word_t instead of long pointers
for backing store addresses.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 6a4f3b23c1 Rename IA64_UNW_ACCESSORS to UNW_LOCAL_ONLY. Drop weak_alias() and
alias() macros.

(struct ia64_cursor): Rearrange order of members a bit to group
	things that logicall belong together.  Rename rp_loc to
	ip_loc.
(struct ia64_unwind_table): Drop start and end members (they are now
	in unw_ia64_table_t).
(struct ia64_reg_state): Break declaration out of declaration for
	ia64_state_record and add "next" member.
(struct ia64_state_record): Add member "labeled_states", drop
	members "stack", and "reg_state_list".

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 143ace01a8 Rename IA64_INSN_MOVE_SIGCONTEXT to IA64_INSN_MOVE_SCRATCH.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 60cbd737ab Reformat preg_index initialization to GNU Coding standard.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 4224f76cfd Initial revision 2002-02-22 21:58:53 +00:00
(none)!davidm 7820abd977 Include "offsets.h" to get offsets for various structures (such
as sigcontext).  Adjust for the fact that the RSE arithmetic
is now done on values of type unw_word_t rather than long pointers.

(ia64_scratch_loc): Rename from ia64_get_sigcontext() and expand
	it such that it returns a scratch register location if
	the current frame is not a sigcontext frame.
(ia64_access_reg): Read the address of the personality routine with
	ia64_get() rather than trying to dereference the address
	directly.  When writing the IP or the PR, update the cached
	values, too.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 3790561497 Include "offsets.h" instead of <signal.h> to enable cross-compilation.
Use offsets defined in this file instead of calculating the offsets
from sigcontext structure.

(update_frame_state): Rename from ia64_get_frame_state() and make it
static and inlined.

(unw_step): Call update_frame_state() instead of ia64_get_frame_state().

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 172cc2ba9b If UNW_REMOTE_ONLY is defined, make unw_init_local() a stub that
unconditionally returns -UNW_EINVAL.

(access_reg): IP is now read via UNW_IA64_IP (instead of
	UNW_IA64_BR+0).  CFM is now read via UNW_IA64_CFM
	instead of UNW_IA64_AR_PFS.  For UNW_IA64_AR_BSP
	(and UNW_IA64_AR_BSPSTORE), adjust the pointer so
	that it points to the first stacked register in
	the current frame.
(resume): "rp_loc" has been renamed to "ip_loc".
(unw_init_local): Add an #error directive to prevent compilation
	with UNW_LOCAL_ONLY until this case has been implemented.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 7c934e9308 For now, add #error directive to ensure compilation fails when
attempting to compile with UNW_LOCAL_ONLY.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm fb5ed0d939 Compile only if UNW_REMOTE_ONLY is not defined.
(get_kernel_table): Return -UNW_ENOMEM if unable to allocate buffer
	for kernel's unwind info.  Initialize the start and end
	members in unw_ia64_table_t.
(callback): Initialize the start and end members.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 4588bf926d Build only if UNW_REMOTE_ONLY is not defined.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 5cdb197f44 (unw_init_remote): Rename from ia64_init_remote(). Initialize
cfm_loc with UNW_IA64_CFM.  Initialize bspstore_loc with
	UNW_IA64_AR_BSPSTORE.  Renamem rp_loc to ip_loc and initialize
	with UNW_IA64_IP.  Initialized the cached values of
	PR and IP.  Initialize sp and psp to value in UNW_IA64_SP.
	Initialize exception handling args by reading the corresponding
	scratch registers (r15-r18).  If the read fails, initialize
	with 0.  Finish by calling ia64_get_proc_info() instead of
	ia64_get_frame_state().

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm dffc24cb9f (compile_reg): Use IA64_INSN_MOVE_SCRATCH instead of
IA64_INSN_MOVE_SIGCONTEXT.
(run_script): Drop IA64_INSN_MOVE_SIGCONTEXT.  Implement
	IA64_INSN_MOVE_SCRATCH by calling ia64_scratch_loc().

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm 73c10de341 (Logical change 1.5) 2002-02-22 21:58:53 +00:00
mostang.com!davidm 444b815950 Clarify comment about proc_info.
(Logical change 1.4)
2002-02-15 23:51:28 +00:00
mostang.com!davidm 7fbfe0a255 (Logical change 1.3) 2002-02-15 23:22:05 +00:00
mostang.com!davidm 63669f7ad4 Initial revision 2002-02-15 23:22:05 +00:00