Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • D dynamorio
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1,467
    • Issues 1,467
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 44
    • Merge requests 44
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • DynamoRIO
  • dynamorio
  • Merge requests
  • !4638

i#4273: Implement far fragment linking on AArch64.

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Abhinav Anil Sharma requested to merge i4273-aarch64-link-far-frag into master Dec 29, 2020
  • Overview 98
  • Commits 18
  • Pipelines 0
  • Changes 9

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)

Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: i4273-aarch64-link-far-frag