Test for HAVE_ASM_PTRACE_OFFSETS_H instead of UNW_TARGET_IA64.
Issue warning for platforms using ttrace() instead of ptrace() (HP-UX
is the only platform that does that).
(Logical change 1.63)
Include <inttypes.h> instead of <stdint.h>. HP-UX doesn't have the latter.
Use "inline" instead of "__inline__" (the former gets properly #define'd by
config.h).
(Logical change 1.63)
(_Uia64_search_unwind_table): Be sure to clear "proc_info" members as documented
by unw_get_proc_info(3).
Include <dlfcn.h> if we have dlmodinfo() (HP-UX only).
(tdep_find_proc_info): Use dl_iterate_phdr() only if we have it (glibc-based
systems). Use dlmodinfo() if we have it (HP-UX).
(Logical change 1.63)
Return -UNW_ENOMEM if string buffer is too small. This makes the routine
compatible with the definition of the unw_get_proc_name(3).
(Logical change 1.63)
(unwi_dyn_remote_find_proc_info): Maintain as->dyn_info_list_addr as a cache of
the most recently obtained dyn-info-list address.
(Logical change 1.61)
(_longjmp): Ensure that we have at least 4 exception-handling args. (This code
will need updating to make it work on x86, where only 2 exception handling
args are available).
(longjmp): If we are compiling with GCC, use an alias-attribute to alias it with
_longjmp(). This is more efficient and works around a gcc-3.2/ia64 bug
which causes bad unwind info when a noreturn function is a last call.
(Logical change 1.59)
(_longjmp): Ensure that we have at least 4 exception-handling args. (This code
will need updating to make it work on x86, where only 2 exception handling
args are available).
(Logical change 1.59)
(SOSLOCK): Remove
(SOSUNLOCK): Ditto.
(LOCK): Ditto
(UNLOCK): Ditto.
(sos_alloc): If HAVE_CMPXCHG is defined, use cmpxchg_ptr() to atomically allocate
memory in a lock-free manner. Otherwise, fall back on disabling signal
delivery and holding the sos_lock during memory allocation.
(sos_free): Remove.
(mempool_init): Initialize pool lock. Replace LOCK/UNLOCK with appropriate
signal-masking & mutex_lock/unlock calls.
(mempool_free): Replace LOCK/UNLOC with appropriate signal-masking & mutex_lock/unlock
calls.
(Logical change 1.59)
(ia64_get_cached_proc_info): Rename from ia64_script_lookup() and modify it so
it directly updates the proc-info if the necessary script is in the cache.
(script_new): Remove locking comments and adjust formatting.
(ia64_find_save_locs): If global caching is enabled, mask signal delivery and
hold the cache lock while accessing the cache.
(ia64_script_cache_init): Initialize the cache lock.
(Logical change 1.59)
(parse_dynamic): Fix it so it actually works.
(create_state_record_for): Initialize return_link_reg to zero.
Don't print "no unwind info" unconditionally when UNW_DEBUG is
in effect.
(Logical change 1.56)
(intern_dyn_info): Skip over padding rather than fetching it.
Start intern_regions() at address of first region, not just at the next
sequential address.
(unwi_dyn_remote_find_proc_info): Allocate "di" dynamically (it needs to persist
until put_unwind_info() is called).
(Logical change 1.56)
Skip over "prev_addr". Read start/end-IP directly into the "di" structure,
not into temporary variables. Skip padding by directly adjusting the
address (don't bother fetching padding values; that only slows things down).
Return 0 only if we really did find dynamic unwind info.
(Logical change 1.55)
(.info): Use @gprel() reloc instead of @segrel() reloc for _U_dyn_info_list.
The latter doesn't work because the unwind-info is in a different segment.
(ia64_init): Clear unw.r0.
(Logical change 1.55)