Adds support for linking fragments arbitrarily far away on AArch64. Uses indirect branch to a stored address, and changes the stored value between the fcache-return routine address and the linked fragment address.
The old linking strategy for intermediately far fragments (patching first stub instruction to a B) is retained for efficiency. Note that arbitrary patching of instructions is not safe on AArch64 -- that's i#1911.
Modifies the fragment prefix to restore both x0 and x1. Also stores both register values in respective slots in flows that use the fragment prefix.
Detailed design: https://github.com/DynamoRIO/dynamorio/wiki/Linking-Far-Fragments-on-AArch64. Option 4b is implemented here. It increases stub size by 12B, for the data-slot (extra 4B for alignment).
Enables ibl-stress test on AArch64. This test with some options helps trigger the far fragment linking path on AArch64. Unfortunately, with those options, the test is too big to enable in regular testing. So for the CI, we use a smaller version of the test, which doesn't help test the far fragment linking path, but is good to enable on AArch64 anyway. The longer version (which invokes the far fragment linking path) is marked with a _LONG suffix. Logic is added to skip such marked tests unless the existing TEST_LONG flag is enabled.
Fixes: #4273 (closed)