entry/exit path. Without this fix, unw_resume() failed to restore
most scratch register and caused test-setjmp to fail.
BKrev: 3f7278420gm7LAAf21d-L_Iuu7Zu_g
caused by the recent bug fix for the problem where a get_proc_info()
failure would cause a script to be created but not fully initialized.
BKrev: 3f72131a0z5c6mgTJsyoxCkNwHfgAA
(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)