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
  • Issues
  • #4937
Closed
Open
Issue created Jun 02, 2021 by Derek Bruening@derekbrueningContributor

Translation storing interface fails to notify all parties

Today, if any client or library requests DR_EMIT_STORE_TRANSLATIONS, DR will not use recreation to translate and will instead rely on persisted data from block creation time. However, all the other clients and libraries may not be aware that one of them requested to store translations, and will be relying on recreation. It seems that the store-translations approach is broken in the presence of multiple components.

Probably the simplest solution is to add a new callback that DR invokes after the basic block callback when someone requested to store translations. Then all components can treat the new callback kind of like a recreation, but they would persist storage of data for translation.

We should also try to provide a way to associate persisted data with a callback by a user_data pointer or something: though we'll have to handle each component having its own pointer. This avoids each party having to keep its own hashtable and worry about lifetime issues with deletion happening independently of a new block at the same tag (xref various issues with that in the past).

Assignee
Assign to
Time tracking