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

i#2062 trace non-mod: handle traced VDSO code #2706

Merged
merged 2 commits into from
Nov 17, 2017
Merged

Conversation

derekbruening
Copy link
Contributor

Adds offline trace handling of VDSO code by dumping the actual contents of
the VDSO pages into drmodtrack custom data and using it to decode
instructions during post-processing.

Updates drmodtrack to handle binary data in custom fields.

Refactors how 3rd-party custom module fields are handled for drcachesim as
they now must be multiplexed with the new VDSO data. The 3rd party must
now build a custom post-processor by linking with the raw2trace library.

Since the module list file is no longer completely human-readable and
contains hidden custom fields, a new interface
raw2trace_t::do_module_parsing() is added to support building 3rd-party
module file parsing code for use after a trace is gathered.

Adds drmemtrace_get_output_path() for dynamically locating offline trace
files.

Updates the burst_replace test to use the new methods.

Includes support for reading legacy trace module files that do not contain
VDSO data (in such a case we revert to the prior behavior of skipping the
ifetch entries). This is accomplished by using a version field in the
module data. If it's missing, and if either the user parser is happy or
the next field looks like a path, we assume everything's fine and we're
just missing the vdso data. This legacy support was tested manually.

Adds offline trace handling of VDSO code by dumping the actual contents of
the VDSO pages into drmodtrack custom data and using it to decode
instructions during post-processing.

Updates drmodtrack to handle binary data in custom fields.

Refactors how 3rd-party custom module fields are handled for drcachesim as
they now must be multiplexed with the new VDSO data.  The 3rd party must
now build a custom post-processor by linking with the raw2trace library.

Since the module list file is no longer completely human-readable and
contains hidden custom fields, a new interface
raw2trace_t::do_module_parsing() is added to support building 3rd-party
module file parsing code for use after a trace is gathered.

Adds drmemtrace_get_output_path() for dynamically locating offline trace
files.

Updates the burst_replace test to use the new methods.

Includes support for reading legacy trace module files that do not contain
VDSO data (in such a case we revert to the prior behavior of skipping the
ifetch entries).  This is accomplished by using a version field in the
module data.  If it's missing, and if either the user parser is happy or
the next field looks like a path, we assume everything's fine and we're
just missing the vdso data.  This legacy support was tested manually.
@derekbruening derekbruening merged commit fd63caa into master Nov 17, 2017
@derekbruening derekbruening deleted the i2062-vdso branch November 17, 2017 04:27
fhahn pushed a commit that referenced this pull request Dec 4, 2017
Adds offline trace handling of VDSO code by dumping the actual contents of
the VDSO pages into drmodtrack custom data and using it to decode
instructions during post-processing.

Updates drmodtrack to handle binary data in custom fields.

Refactors how 3rd-party custom module fields are handled for drcachesim as
they now must be multiplexed with the new VDSO data.  The 3rd party must
now build a custom post-processor by linking with the raw2trace library.

Since the module list file is no longer completely human-readable and
contains hidden custom fields, a new interface
raw2trace_t::do_module_parsing() is added to support building 3rd-party
module file parsing code for use after a trace is gathered.

Adds drmemtrace_get_output_path() for dynamically locating offline trace
files.

Updates the burst_replace test to use the new methods.

Includes support for reading legacy trace module files that do not contain
VDSO data (in such a case we revert to the prior behavior of skipping the
ifetch entries).  This is accomplished by using a version field in the
module data.  If it's missing, and if either the user parser is happy or
the next field looks like a path, we assume everything's fine and we're
just missing the vdso data.  This legacy support was tested manually.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant