When an indirect branch lookup table (IBT) is resized, the old table is filled with "target deleted" markers. Another thread that hits in the table is redirected to a cache exit due to the deleted marker. However, previously that thread would not update its thread-local pointer to the table on such an exit; it would only update on an actual miss in the table. This can lead to repeated cache exits on hits until a miss is reached.
The problem is solved here with an explicit update of all tables on a target-deleted exit.
Tested on "bin32/drrun -disable_traces -shared_bb_ibt_tables -shared_ibt_table_bb_init 2 -- suite/tests/bin/linux.signest" on ARM.
Fixes #4704 (closed)