Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-24 Thread Buddhika Chamith Kahawitage Don
I see. I was checking if there is a convenient catch all header which we can use per each API rather than including multitude of includes according to usage. Looks like there is not? Thanks for the catch. On Thu, Jan 24, 2019 at 10:53 PM Xiaozhu Meng wrote: > It looks like you will need to

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-24 Thread Xiaozhu Meng
It looks like you will need to do: #include "BPatch_object.h" On Thu, Jan 24, 2019 at 10:23 AM Buddhika Chamith Kahawitage Don < budka...@iu.edu> wrote: > By the way function PopulateUsedRegisters in the error I sent earlier > accepts a Dyninst::ParseAPI::CodeObject* as the first parameter. > >

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-24 Thread Xiaozhu Meng
On Thu, Jan 24, 2019 at 10:05 AM Buddhika Chamith Kahawitage Don < budka...@iu.edu> wrote: > Hi Xiaozhu, > > I did the following. I think I am missing something below. Can you please > check and let me know.. > > BPatch* bpatch = new BPatch; > > // open binary and dependencies >

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-24 Thread Buddhika Chamith Kahawitage Don
Aah yes. That was a typo. My bad. However the code I tried have it correct which still fails :(. I think the failure happens at convert function call before the assignment. On Thu, Jan 24, 2019 at 9:47 PM Xiaozhu Meng wrote: > On Thu, Jan 24, 2019 at 10:05 AM Buddhika Chamith Kahawitage Don < >

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-24 Thread Buddhika Chamith Kahawitage Don
By the way function PopulateUsedRegisters in the error I sent earlier accepts a Dyninst::ParseAPI::CodeObject* as the first parameter. On Thu, Jan 24, 2019 at 9:51 PM Buddhika Chamith Kahawitage Don < budka...@iu.edu> wrote: > Aah yes. That was a typo. My bad. However the code I tried have it

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-24 Thread Buddhika Chamith Kahawitage Don
Hi Xiaozhu, I did the following. I think I am missing something below. Can you please check and let me know.. BPatch* bpatch = new BPatch; // open binary and dependencies BPatch_addressSpace* app = bpatch->openBinary(binary.c_str(), true); BPatch_image* image = app->getImage();

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-24 Thread Buddhika Chamith Kahawitage Don
Hi Andreas, Thanks for the input. You are exactly right! :). I was looking for an output similar to what ldd provides. My use case is to get register usage patterns in a given binary and its linked shared libraries. On Thu, Jan 24, 2019 at 7:24 PM Xiaozhu Meng wrote: > Another approach is to

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-24 Thread Xiaozhu Meng
Another approach is to use BPatch_binaryEdit to open the binary, which has an option parameter to specify whether also opening its dependencies. Then you can convert BPatch_object to ParseAPI::CodeObject by doing: ParseAPI::CodeObject *ParseAPI::convert(BPatch_object *); On Thu, Jan 24, 2019 at

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-23 Thread Andreas Ziegler
Hi, jumping into the conversation as I'm also doing research on shared libraries and (in a broader sense) instrumentation as part of my PhD at the University Erlangen-Nürnberg. :) On 1/24/19 4:18 AM, Buddhika Chamith Kahawitage Don wrote: It doesn't seem to provide the full path to the

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-23 Thread Buddhika Chamith Kahawitage Don
It doesn't seem to provide the full path to the linked library, just the library name. So when I use the return value to construct a SymtabCodeSource it fails. Any idea how to get the full path of the linked library? On Wed, Jan 23, 2019 at 10:20 PM Buddhika Chamith Kahawitage Don <

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-23 Thread Buddhika Chamith Kahawitage Don
Great! I will check this out. Cheers Buddhika On Wed, Jan 23, 2019 at 10:01 PM Xiaozhu Meng wrote: > Hi, > > If I am going to do it, I will try Symtab::getDependencies(), which should > return a vector of paths of the dependencies: > >

Re: [DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-23 Thread Xiaozhu Meng
Hi, If I am going to do it, I will try Symtab::getDependencies(), which should return a vector of paths of the dependencies: https://github.com/dyninst/dyninst/blob/master/symtabAPI/h/Symtab.h#L366 Then, you can iterate over the vector to parse each of them. Thanks, --Xiaozhu On Wed, Jan 23,

[DynInst_API:] Enumerating linked shared libraries with SymtabAPI/ ParseAPI

2019-01-23 Thread Buddhika Chamith Kahawitage Don
Hi All, I need to enumerate and parse linked shared libraries of a binary using Symtab API and Parse API. How can I do that? I am currently using below code sequence to parse the binary. Dyninst::SymtabAPI::Symtab* symtab; bool isParsable = Dyninst::SymtabAPI::Symtab::openFile(symtab,