Dr. Memory |

Updating the DynamoRIO Submodule

# DynamoRIO Inside Dr. Memory

DynamoRIO is included inside the Dr. Memory source tree as a git submodule. We support both building that embedded DR along with pointing to an already-built separate DR export tree.

# Submodule Rollback

Be careful with submodules when pulling upstream changes. If a submodule was modified upstream and only a `git pull` is run without a subsequent `git submodule update`, that upstream change will be reverted upon the next `git push`. Please use the `pullall` alias to avoid accidentally clobbering submodule changes.

We do have a pre-commit hook in place that will warn you if you try to roll back the dynamorio submodule while checking in at least one other file:

% git commit -a
Error: the dynamorio submodule is being rolled back.
This is likely a mistake: did you pull but not run git submodule update?
Aborting commit.

# Updating the DynamoRIO Version

Run `git checkout <hash>` to update DynamoRIO to that hash:

cd dynamorio
git pull
git checkout 0c81acfc9aaea949e6f6ecfe0b4157c06a014dda

If Dr. Memory's sources are being changed to require this new version of DR, apply the Dr. Memory changes such that they will be included in the same commit that updates the submodule version. Also add to the commit message something like "Relies on DR <hash>. Updates DR to <hash>.".

If Dr. Memory won't build, or shouldn't be built, with any older version of DR, also update the set of the "DynamoRIO_VERSION_REQUIRED" variable in trunk/CMakeLists.txt (use the patchlevel printed by `cmake .`).

Now run the Dr. Memory test suite with an embedded DR, not with an already-built DR to ensure it's happy with the updated DR.

In your commit log message state to which version you're updating DR, and why (typically to pull in a certain bug fix or new feature).