2004/04/20 09:53:04-07:00 hp.com!davidm
(validate_cache): If HAVE_DL_PHDR_REMOVALS_COUNTER is defined, use
dl_phdr_removals_counter() to validate the cache. This is
much more efficient than using dl_iterate_phdr(), since it
avoids locking.
(Logical change 1.205)
(SC_FLAGS): New macro.
(rTMP): Move from r14 to r10.
(rPOS): Move from r14 to r11.
(rCPOS): Move from r17 to r14.
(rNAT): Move from r18 to r15.
(rFLAGS): New macro.
(Logical change 1.193)
(uc_addr): Moved to here from Ginit-ia64.c and added a special
case when the register is constant.
(IA64_REG_LOC): Use uc_addr() instead of tdep_uc_addr().
(IA64_REG_NAT_LOC): Likewise.
(IA64_FPREG_LOC): Likewise.
(Logical change 1.186)
directives specify physical stacked register numbers and
the register-backing store always represents physical
registers, so it was wrong to rotate here.
(Logical change 1.184)
Adjust NaT-bit handling. Much simpler now.
Pass NULL as new third argument to ia64_scratch_loc().
Set save_loc->extra.nat_bitnr to the NaT bit number (or 0
when not accessing a NaT bit).
(Logical change 1.181)
Handle NaT-bit registers by returning not just the
NaT-word address, but also the NaT-bit number.
(hpux_scratch_loc): Add "nat_bitnr"-pointer argument.
(ia64_scratch_loc): Likewise.
(access_nat): Add "nat_bitnr" argument. Rename "loc" to "nat_loc".
Greatly simplify now that we have the NaT-word and the
NaT bit-number readily available.
(access_reg): Pass NaT-bit number to access_nat().
Handle scratch NaT-bit registers in a more generic fashion,
now that we can. Adjust all calls to ia64_scratch_loc() for
third argument.
(Logical change 1.181)
Added operations IA64_INSN_ADD_PSP_NAT, IA64_INSN_ADD_SP_NAT,
IA64_INSN_MOVE_NAT, IA64_INSN_MOVE_NO_NAT,
IA64_INSN_MOVE_STACKED_NAT, IA64_INSN_MOVE_STACKED_NAT,
IA64_INSN_MOVE_SCRATCH_NAT, and IA64_INSN_MOVE_SCRATCH_NO_NAT.
(emit_nat_info): Remove---it's no longer needed.
(compile_reg): Emit special op-codes when compiling a preserved
static register, such that it's NaT-info can be updated.
(set_nat_info): New function.
(run_script): Implement new script instructions.
(Logical change 1.181)
(build_script): Adjust for extra argument to compile_reg().
Fix the primary-NaT compilation such that it always
updates IA64_REGPRI_UNAT_MEM.
(run_script): For IA64_INSN_SETNET_MEMSTK, set the location based on
IA64_REG_PRI_UNAT_MEM and don't forget to turn on the
MEMSTK_NAT bit.
(Logical change 1.178)
to a stacked register. We can't use ia64_get_stacked() here because
c->rbs will, in general, be different from the frame in which the
register was saved.
(Logical change 1.173)
pollution when compiling with debugging enabled. The name-space
pollution came from the fact that functions won't be inlined in this
case and that ended up generating dead code with references to
non-existent functions.
(Logical change 1.154)
name-space pollution when compiling with debugging enabled. The
name-space pollution came from the fact that functions won't be
inlined in this case and that ended up generating dead code with
references to non-existent functions.
(Logical change 1.154)
(_Uia64_get_kernel_table): Define only when UNW_LOCAL_ONLY is not
defined.
(_Uia64_find_dyn_list): Likewise.
(ia64_local_validate_cache): Fix prototype (second argument was
missing).
(Logical change 1.154)
resolved within the library itself.
(is_local_addr_space): Define UNW_LOCAL_ONLY and generic versions.
(read_mem): New function.
(tdep_put_unwind_info): Define only if not UNW_LOCAL_ONLY.
(tdep_search_unwind_table): Rename from _Uia64_search_unwind_table().
Optimize away stuff that isn't needed for UNW_LOCAL_ONLY.
Use read_mem() instead of open-coding accesses via
access_mem() callback.
(get_kernel_table): Rename from _Uia64_get_kernel_table().
(_Uia64_get_kernel_table): Define for non-UNW_LOCAL_ONLY case so
that libunwind-ptrace.a can get to it.
}(Logical change 1.151)
resolved within the library itself.
(is_local_addr_space): Define UNW_LOCAL_ONLY and generic versions.
(read_mem): New function.
(tdep_put_unwind_info): Define only if not UNW_LOCAL_ONLY.
(tdep_search_unwind_table): Rename from _Uia64_search_unwind_table().
Optimize away stuff that isn't needed for UNW_LOCAL_ONLY.
Use read_mem() instead of open-coding accesses via
access_mem() callback.
(get_kernel_table): Rename from _Uia64_get_kernel_table().
(_Uia64_get_kernel_table): Define for non-UNW_LOCAL_ONLY case so
that libunwind-ptrace.a can get to it.
2004/01/03 00:33:30-08:00 hp.com!davidm
Rename: src/ia64/tables-ia64.c -> src/ia64/Gtables-ia64.c
(Logical change 1.151)
(unw_decode_r2): Likewise.
(unw_decode_r3): Likewise.
(unw_decode_p1): Likewise.
(unw_decode_p2_p5): Likewise.
(unw_decode_p6): Likewise.
(unw_decode_p7_p10): Likewise.
(unw_decode_b1): Likewise.
(unw_decode_b3_x4): Likewise.
(unw_decode_table): Remove.
(unw_decode): Do the first-level of decoding inline, rather than
through the unw_decode_table.
(Logical change 1.148)
(regname_len): New macro.
(regname_str): New macro.
(NREGS): New macro.
(unw_regname): Change it from using a regname[] array to using
a single string.
(Logical change 1.148)
the former to avoid compiler-warnings.
(run_script): Before doing the big switch, check for most common
case (IA64_INSN_MOVE_STACKED).
(Logical change 1.130)
(remote_lookup): New function.
(_Uia64_search_unwind_table): Handle UNW_INFO_FORMAT_REMOTE_TABLE.
(_Uia64_find_dyn_list): Take unw_dyn_info_t pointer argument instead of its
members and handle UNW_INFO_FORMAT_REMOTE_TABLE.
(Logical change 1.126)
not needed because we default to "no caching" and if the application
turns on caching via unw_set_caching_policy(), the cache will get
initialized at that time.
(Logical change 1.124)
(get_script_cache): Return NULL if caching is disabled. If
HAVE_ATOMIC_OPS_H is defined, set the busy flag and if
the script cache is busy already, return NULL.
(put_script_cache): Don't allow it to be called for UNW_CACHE_NONE case.
If HAVE_ATOMIC_OPS_H is defined, clear the "busy" flag via
AO_CLEAR.
(ia64_get_cached_proc_info): If we're unable to acquire the cache,
return -UNW_ENOINFO.
(script_init): New function.
(script_new): Replace open code with call to script_init().
(uncached_find_save_locs): New function.
(ia64_find_save_locs): Move code for uncached case to
uncached_find_save_locs(). If get_script_cache() is unable to
lock the script-cache, fall back to uncached_find_save_locs().
(ia64_script_cache_init): Delete.
(Logical change 1.124)
early. Always flush cache after changing the policy.
This is to ensure that the per-thread cache gets initialized
and no stale info remains.
(Logical change 1.118)
(ia64_init): Use unw.lock to protect against races during
initialization. Disable signal delivery during initialization
to ensure thread-safety (e.g., unw_init_local() may call
ia64_init() and the former must be thread-safe).
(Logical change 1.111)
personality-routine and LSDA address and dont' forget to
dereference the personality-routine function-pointer, so we
really get the address of the function-descriptor of the
personality routine.
(callback): Set the segment-base based on the segment that contains
the unwind-table. Normally, that the text segment but in
special cases, such as the kernel's gate DSO, it will be
in a different segment.
(Logical change 1.108)