Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add mediator for combining and coordinating multiple instrumentation passes #402

Closed
derekbruening opened this issue Nov 28, 2014 · 1 comment

Comments

@derekbruening
Copy link
Contributor

From [email protected] on February 27, 2011 13:23:16

the plan is to add a series of extensions that implement a framework for creating large tools composed of modules.

one key component is "drmgr", the DynamoRIO Multi-Instrumentation Manager Extension: a mediator for combining and coordinating multiple instrumentation passes

current design:

The \p drmgr DynamoRIO Extension provides a mediator for combining and
coordinating multiple instrumentation passes. It replaces certain
DynamoRIO events and API routines with its own versions that mediate among
multiple components, typically several libraries and one client. It
facilitates developing instrumentation frameworks and libraries that can be
composed and combined.

\p drmgr divides instrumentation into four separate stages:

-# Application-to-application transformations
-# Application code analysis
-# Instrumentation insertion, one instruction at a time
-# Instrumentation-to-instrumentation transformations: typically,
optimizations applied to the full set of inserted instrumentation

Each component that registers with \p drmgr can register for some or all of
the four stages. In each stage, each registered compoment's callback is
invoked. This groups the different types of changes together and allows
them to assume that no later change will invalidate their analysis or
actions. The instrumentation insertion is performed in one forward pass:
for each instruction, each registered component is invoked. This simplifies
register allocation (register allocation is provided by a separate
Extension \p drreg).

\p drmgr also coordinates sharing of the thread-local-storage field among
multiple components and provides automated support for callback-private
fields on Windows. It replaces the single #dr_get_tls_field() pointer with
two separate arrays of pointers: one for callback-shared fields, and one
for callback-private fields. When a field is requested, an integer index
is returned to the caller for use in retrieving the appropriate pointer.

Original issue: http://code.google.com/p/dynamorio/issues/detail?id=402

@derekbruening
Copy link
Contributor Author

From [email protected] on March 22, 2011 20:10:13

This issue was closed by revision r668 .

Status: Fixed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant