Re: [DynInst_API:] Creating ParseAPI graphs to CFGs for external representations; adding line map information from external sources


Date: Thu, 31 May 2018 08:55:46 -0500
From: Xiaozhu Meng <mxz297@xxxxxxxxx>
Subject: Re: [DynInst_API:] Creating ParseAPI graphs to CFGs for external representations; adding line map information from external sources
Hi John,

I can answer the part about ParseAPI. You can definitely use the CFGFactory to construct your ParseAPI CFG, which should contains a bunch of ParseAPI::Function, ParseAPI::Block, and ParseAPI::Edge objects. Then, you can invoke loop analysis through Function objects. You won't have the SymtabCodeSource or CodeObject, but they are not needed for loop analysis.

Thanks,

--XiaozhuÂ

On Tue, May 29, 2018 at 2:53 PM, John Mellor-Crummey <johnmc@xxxxxxxx> wrote:
We are interested in building ParseAPI CFGs for a GPU binary given a representation of the CFG for a GPU binary in as a graph in dot format. We are currently parsing the GPU CFG for each function out of dot, understand its blocks, edges, and calls. From scanning through the documentation in ParseAPI, it is not clear whether it would be feasible to simply use the CFG factory interface to supply graph elements to Dyninst to construct a CFG. If we did so, would it then be possible to use the Loop Analyzer to analyze this CFG? (At present, we have a copy of the LoopAnalyzer code that analyzes our lightweight internal representation of the dot graph, but it would be better for HPCToolkitâs hpcstruct to just work with one representation Â- Dyninst CFGs for binaries.)

Also, can I push line map information into dyninst from the outside? Line maps for optimized GPU binaries canât be read from libdw. If I write my own reader, can I push information associating address ranges with source file and line? There is no information about compilation units, which is what makes NVIDIAâs cubin line maps unreadable with libdw. If I were to push information in from the outside about source lines and files, would I have to fake a compilation unit, or could I just put it in the default module?

We would appreciate any advice. If is easier to have a conversation than sending a long email, let me know.
--
John Mellor-Crummey Professor
Dept of Computer Science Rice University
email: johnmc@xxxxxxxx phone: 713-348-5179


_______________________________________________
Dyninst-api mailing list
Dyninst-api@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

[← Prev in Thread] Current Thread [Next in Thread→]