(lookup): New function (moved from parser.c).
(_Uia64_search_unwind_table): New function (based on code in parser.c).
(kernel_table): New variable.
(get_kernel_table): Relocate the kernel table's "info_offset" values as we
count it. Adjust for new callback-interface.
(callback): Adjust for new interface.
(_Uia64_find_proc_info): Rename from _Uia64_glibc_acquire_unwind_info).
}(Logical change 1.29)
(lookup): New function (moved from parser.c).
(_Uia64_search_unwind_table): New function (based on code in parser.c).
(kernel_table): New variable.
(get_kernel_table): Relocate the kernel table's "info_offset" values as we
count it. Adjust for new callback-interface.
(callback): Adjust for new interface.
(_Uia64_find_proc_info): Rename from _Uia64_glibc_acquire_unwind_info).
2002/11/27 16:44:37-08:00 mostang.com!davidm
Rename: src/ia64/tables-glibc.c -> src/ia64/tables.c
(Logical change 1.29)
(struct ia64_cursor): Change type of "pi" member from struct ia64_proc_info to
unw_proc_info_t.
(struct unw_addr_space): Declare "acc" member even for UNW_LOCAL_ONLY case.
(ia64_acquire_unwind_info): Delete
(ia64_relesae_unwind_info): Ditto.
(ia64_find_proc_info): New routine.
(struct ia64_unwind_table_entry): Delete.
(struct ia64_unwind_talbe): Ditto.
(struct ia64_global_unwind_state): Remove "unwind_table_pool" member.
(ia64_get_proc_info): Rename to ia64_make_proc_info().
(Logical change 1.29)
(lookup_preg): New function.
(parse_dynamic): Ditto.
(get_proc_info): Take explicit IP argument.
(create_state_record_for): New function, containing most of the code originally
in ia64_create_state_record(). Don't forget to initialize
sr->first_region. Check c->pi.format and parse unwind descriptors or
dynamically registered unwind info accordingly.
(ia64_get_proc_info): Adjust for extra argument expected by get_proc_info().
(ia64_create_state_record): Do interesting work by calling create_state_record_for().
(Logical change 1.29)
(get_script_cache): Ditto.
(script_lookup): Renamed from ia64_script_lookup() and add "address-space" argument.
(ia64_script_lookup): New function.
(build_script): Get script from the caller instead of via script_new().
(ia64_find_save_locs): If caching is disabled, create a temporary script and
do not update the script cache.
(Logical change 1.27)
(struct ia64_reg_state): Moved here from parser.c.
(struct ia64_global_unwind_state): Add unwind_table_pool, state_record_pool,
and labeled_state_pool.
(Logical change 1.19)
(alloc_reg_state): Use mempool interface.
(free_reg_state): Ditto.
(alloc_labeled_state): Ditto.
(free_labeled_state): Ditto.
(alloc_spill_area): Fix spill-area allocation (fix by Richard Henderson).
(desc_frgr_mem): Fix case for f16-f31 (fix by Richard Henderson).
(get_proc_info): Use mempool_alloc() instead of malloc().
(Logical change 1.19)
pointing at the signal trampoline frame. Otherwise, raising an exception from within
a signal handler will fail to pass the exception arguments to the exception handler.
(Logical change 1.19)
(unw_regname): First register number now starts with zero.
2002/04/11 21:43:00-07:00 mostang.com!davidm
Rename: src/ia64/shared.c -> src/ia64/unw_regname.c
(Logical change 1.16)
that in the UNW_LOCAL_ONLY-case, bit 2 in register save locations is unused. If
UNW_LOCAL_ONLY is defined, define stream-lined versions of IA64_REG_LOC(),
IA64_FPREG_LOC(), ia64_acquire_unwind_info(), ia64_release_unwind_info(), ia64_get(),
ia64_put(), ia64_getfp(), and ia64_putfp(). Drop convenience macros and declarations for
ia64_glibc_{acquire,release}_unwind_info(). Add convenience macro and declaration for
ia64_local_resume().
(Logical change 1.8)
(_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)
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)
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)