(eventually) clear the IP values of all scripts, but failed to
update the hash/collision-chain info, which could result in
loops in the collision-chains. Fixed by flushing the cache under
the global lock and since things are locked now, we can update the
collision-chain etc. without fear of races. Added test-flush-cache
to test for this error-condition.
BKrev: 3f6aa88cQRr-NcDXg_8mM3dN2esAQQ
hash-table, collision-chains, and hash-table in addition
to clearing the script's IP value. The latter wasn't nearly
sufficient because it could cause loops on the collision
chain...
(get_script_cache): Also lock the cache if global caching is in
effect. Take additional "saved_sigmaskp" argument.
After flushing the cache, update the cache generation
here.
(put_script_cache): New function.
(ia64_get_cached_proc_info): Adjust for get_script_cache() and
put_script_cache() changes.
(ia64_find_save_locs): Ditto.
(ia64_script_cache_init): Call flush_script_cache() instead of
opening-coding the equivalent code.
(Logical change 1.96)
a failure status, we ended up bugging out at a time when the
script was already created, but not fully initialized. To prevent
this, the proc-info is now obtained early on, i.e., before creating
the script, so that if the proc-info cannot be obtained, we can bug
out without bad side-effects. Also, I added a test-program
(test-proc-info) which verifies that proc-info lookup failures are
not cached (which we don't want, because it could turn temporary
failures into permanent ones and would break UNW_ESTOPUNWIND).
BKrev: 3f694c12mGQ-jHr9HOtB4YXFHeLdMw
state-record.
(ia64_fetch_proc_info): Rename from get_proc_info().
(create_state_record_for): Assert that c->pi_valid is TRUE at the
time of entry. Remove call to get_proc_info().
(Logical change 1.95)
a value that is potentially > 31. Casting it to (unsigned long)
is not enough on 32-bit platforms.
(create_state_record_for): Cast 0xf to (unw_word_t) instead of
(unsigned long) to avoid losing bits on 32-bit platforms.
(Logical change 1.92)
Linux kernel "struct pt_regs" layout.
(update_frame_state): Handle ABI_MARKER_OLD_LINUX_SIGTRAMP and
ABI_MARKRE_OLD_LINUX_INTERRUPT. Cast values of type unw_word_t
to (unsigned long) before printing them.
(Logical change 1.91)
(linux_scratch_loc): Add support for new pt_regs layout.
(access_nat): Check last_abi_marker instead of sigcontext_addr and
address-space ABI.
(Logical change 1.91)
(ABI_MARKER_OLD_LINUX_INTERRUPT): Rename from ABI_MARKER_LINUX_INTERRUPT.
(ABI_MARKER_LINUX_SIGTRAMP): Define with Linux ABI value (3).
(ABI_MARKER_LINUX_INTERRUPT): Ditto.
(Logical change 1.91)
into panda.mostang.com:/data/home/davidm/src/unwind/libunwind
2003/06/03 14:35:33-07:00 mostang.com!davidm
Fix bug reported by Brian Sumner:
Replace state_record_pool with reg_state_pool. This avoids allocating
more than the necessary amount of memory when pushing register states.
BKrev: 3edd14c3Z03JVOhew5snOIkekLUxfg
(update_frame_state): Handle ABI_MARKER_LINUX_INTERRUPT by calling linux_interrupt().
If c->abi_marker is non-zero, copy it to c->last_abi_marker.
(Logical change 1.89)
(access_reg) [HAVE_SYS_UC_ACCESS_H]: Sanitize and simplify this routine. Turns out
uc_access(3) works pretty much the way we need it, the only problem is that
the unwind info for getcontext() seems to be missing as of HP-UX 11.22.
(ia64_uc_access_reg): New function.
(ia64_uc_access_fpreg): Ditto.
(ia64_local_addr_space_init): Initialize "abi" member of local address space based
on the platform we're compiling on.
(Logical change 1.87)
nice backtrace, handling unwinding across signal handlers just fine. Main missing
piece right now is that unw_resume() doesn't work because uc_access(3) refuses to
write ar.bsp. Duh.
BKrev: 3ea84cd3PHuNw5JsGXBuCzkJLDGUcA
have an empty file here, as otherwise we won't get a valid program.
2003/04/24 12:58:16-07:00 mostang.com!davidm
Rename: src/ia64/Lmk_cursor_i-ia64.c -> src/ia64/mk_Lcursor_i-ia64.c
(Logical change 1.87)