CFGGrind: Dynamic Control Flow Graph Reconstruction

Fernando <pronesto@gmail.com>
Mon, 25 Nov 2019 09:14:20 -0800 (PST)

          From comp.compilers

Related articles
CFGGrind: Dynamic Control Flow Graph Reconstruction pronesto@gmail.com (Fernando) (2019-11-25)
| List of all articles for this month |
From: Fernando <pronesto@gmail.com>
Newsgroups: comp.compilers
Date: Mon, 25 Nov 2019 09:14:20 -0800 (PST)
Organization: Compilers Central
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="60771"; mail-complaints-to="abuse@iecc.com"
Keywords: tools
Posted-Date: 26 Nov 2019 13:22:56 EST

Hi all,


    We would like to present CFGGrind, a dynamic control flow graph
reconstructor that uses valgrind's infrastructure. The code is based on
callgrind and it is available at https://github.com/rimsa/CFGgrind. CFGGrind
reconstructs the CFG of the part of a program that has been executed. It's
like a dynamic disassembler. CFGs are reconstructed per function.


    Our control flow graph representation uses phantom nodes to model branches
not taken during the execution. We also have a special halt node to model
flows that terminates program execution. We support successive refinements of
the control flow graphs by using the outputs produced in a previous run into
the next, and we can reconstruct the CFGs of programs that run in parallel.


    We were able to run our reconstructor in the complete SPEC CPU2017 suite and
we compared with other valgrind tools, and with other CFG reconstructors. We
are, on average, 11% faster than callgrind and 4.5% slower than nulgrind.


    Everything is free software. We hope this tool is of interest to the
community. Let us know what you think, and if further details are required.
Feedback is mostly appreciated, and if anyone wants to contribute to the
project, we will be happy to take in patches.


Regards,


Fernando


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.