You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Valgrind frontend (sigrind) uses a heavily modded Callgrind implementation, which was chosen for its built-in function tracking functionality. For very heavyweight analysis/characterization, like generating SynchroTraces, this is okay because the workload analysis covers up the slow event generation. For simpler prism tools, the sigrind event generation is excessively slow.
A lighter-weight Valgrind frontend (gengrind) has been in progress, with its function-tracking logic also based on Callgrind's. Right now gengrind is not implemented because a dead-end was hit inserting conditional VEX IR for turning instrumentation "on" and "off" without having to flush the instrumented basic blocks.
This is easily done in DynamoRIO by adding branches to labels. However, the support in mainline Valgrind for this is poor. The two options are conditional dirty calls and insert VEX Exit statements.
Conditional dirty calls would require saving each BB's events in separate buffers, increasing overall memory usage and hurting cache performance
VEX Exit statements can only target addresses in the original binary, and they appear to generate extra basic blocks, obfuscating the workload.
The 'jit-hacks-2' branch of Valgrind has some dedicated support of IfThenElse VEX IR statements, and should be investigated further.
The text was updated successfully, but these errors were encountered:
The Valgrind frontend (sigrind) uses a heavily modded Callgrind implementation, which was chosen for its built-in function tracking functionality. For very heavyweight analysis/characterization, like generating SynchroTraces, this is okay because the workload analysis covers up the slow event generation. For simpler prism tools, the sigrind event generation is excessively slow.
A lighter-weight Valgrind frontend (gengrind) has been in progress, with its function-tracking logic also based on Callgrind's. Right now gengrind is not implemented because a dead-end was hit inserting conditional VEX IR for turning instrumentation "on" and "off" without having to flush the instrumented basic blocks.
This is easily done in DynamoRIO by adding branches to labels. However, the support in mainline Valgrind for this is poor. The two options are conditional dirty calls and insert VEX Exit statements.
The 'jit-hacks-2' branch of Valgrind has some dedicated support of IfThenElse VEX IR statements, and should be investigated further.
The text was updated successfully, but these errors were encountered: