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 <xm...@cs.wisc.edu> wrote: > 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 *); > > @ Xiaozhu. I will check this out as well. Thanks! > On Thu, Jan 24, 2019 at 1:36 AM Andreas Ziegler <zieg...@cs.fau.de> wrote: > >> 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 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? >> > >> >> That depends on your current system and the execution environment. If >> you're looking at the executable or shared library using 'readelf' (for >> example with the -e parameter), you see that the file itself will only >> specify the (file-)name of the library it requires. The actual >> resolution to an absolute path is done in the linker and will take >> default library search paths as well as the LD_LIBRARY_PATH and >> LD_PRELOAD environment variables into account. >> >> If you're on the system you want to analyze and want to see which >> libraries a given binary loads, try running 'ldd' on the binary in >> question, this will run the linker up to the point right before >> execution is handed over to the binary itself and print all imported >> libraries as well as their paths. >> >> I'm quite interested in what you're working on, if you'd like you can >> drop me a private mail. >> >> Regards, >> >> Andreas >> >> >> > On Wed, Jan 23, 2019 at 10:20 PM Buddhika Chamith Kahawitage Don >> > <budka...@iu.edu <mailto:budka...@iu.edu>> wrote: >> > >> > Great! I will check this out. >> > >> > Cheers >> > Buddhika >> > >> > On Wed, Jan 23, 2019 at 10:01 PM Xiaozhu Meng <xm...@cs.wisc.edu >> > <mailto:xm...@cs.wisc.edu>> wrote: >> > >> > 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, 2019 at 10:20 AM Buddhika Chamith Kahawitage Don >> > <budka...@iu.edu <mailto:budka...@iu.edu>> wrote: >> > >> > 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, binary); >> > if (isParsable == false) { >> > const char* error = "error: file can not be parsed"; >> > std::cout << error; >> > return; >> > } >> > >> > // Create a new binary code object from the filename >> argument >> > Dyninst::ParseAPI::SymtabCodeSource* sts = >> > new >> Dyninst::ParseAPI::SymtabCodeSource(binary.c_str()); >> > Dyninst::ParseAPI::CodeObject* co = new >> > Dyninst::ParseAPI::CodeObject(sts); >> > co->parse(); >> > >> > auto fit = co->funcs().begin(); >> > for (; fit != co->funcs().end(); ++fit) { >> > Dyninst::ParseAPI::Function* f = *fit; >> > .... >> > } >> > >> > Regards >> > Buddhika >> > _______________________________________________ >> > Dyninst-api mailing list >> > Dyninst-api@cs.wisc.edu <mailto:Dyninst-api@cs.wisc.edu> >> > https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api >> > >> > >> > _______________________________________________ >> > Dyninst-api mailing list >> > Dyninst-api@cs.wisc.edu >> > https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api >> > >> >
_______________________________________________ Dyninst-api mailing list Dyninst-api@cs.wisc.edu https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api