(UNW_DEBUG): If DEBUG is not defined, set it to 0.
(inline): Take advantage of UNUSED macro.
(HAVE_CMPXCHG): Don't define it if we're on HP-UX with GCC v3.2 to
work around a compiler-bug.
(Logical change 1.130)
(maxlevel): New global variable.
(measure_unwind): Return init/step times via arg pointers.
(f1): Pass through init/step pointers.
(doit): New function.
(main): Use doit() instead of open code.
(Logical change 1.130)
unwind-table in remote memory. This can be faster if the unwind-table
is large and only a few entries from the table need to be read. Such
remote tables are handled via a new unwind-table format called
UNW_INFO_FORMAT_TABLE (see libunwind-dynamic.h). The API remains
backwards-compatible with the exception of the ia64-specific
_Uia64_find_dyn_list() function.
BKrev: 3fc3d8cd4VXFifyDtAfkKgGAR7NcnA
(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)
pthread_mutex lock to mediate access to the script-cache.
This has the advantage of avoiding the relatively expensive
sigprocmask()/pthread_mutex_lock()/pthread_mutex_unlock()/sigprocmask()
sequence when caching is enabled. Also, with thread-local caching,
libunwind should scale perfectly to large number of CPUs/threads.
BKrev: 3fc299f5M7RqNOmP68nsDCIWdSS1lg
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)