Re: [DynInst_API:] Building Examples from parseAPI and dataflowAPI in Ubuntu 16.04


Date: Fri, 10 Feb 2017 12:45:39 -0500
From: Sazzadur Rahaman <sazzad14@xxxxxx>
Subject: Re: [DynInst_API:] Building Examples from parseAPI and dataflowAPI in Ubuntu 16.04
Hi Sasha,

Thank you very much! It works now!

Best Regards,
Sazzadur Rahaman

On Fri, Feb 10, 2017 at 12:41 PM, SASHA NICOLAS DA ROCHA PINHEIRO <darochapinhe@xxxxxxxx> wrote:

Hi Sazzadur,


the libraries you wish to use must be placed after the files that use it. So the problem you are having is the command line you set to compile.


Instead of doing:

g++ -g -O2 -std=c++11 -I/usr/local/include -L/usr/local/lib -lparseAPI -lsymtabAPI -lelf -ldynDwarf -ldwarf -lelf -ldynElf -lcommon CFG.cpp -o CFG


Do:

g++ -g -O2 -std=c++11 -I/usr/local/include -L/usr/local/lib CFG.cpp -o CFG -lparseAPI -lsymtabAPI -lelf -ldynDwarf -ldwarf -lelf -ldynElf -lcommon


I think that is what is happening in your others attempts.


Regards

Sasha


De: Dyninst-api <dyninst-api-bounces@xxxxxxxxedu> em nome de Sazzadur Rahaman <sazzad14@xxxxxx>
Enviado: sexta-feira, 10 de fevereiro de 2017 10:58:35
Para: Bill Williams
Cc: dyninst-api@xxxxxxxxxxx
Assunto: Re: [DynInst_API:] Building Examples from parseAPI and dataflowAPI in Ubuntu 16.04
Â
Hi Williams,

Thanks for your reply. Yes. I installed Dynist into my /usr/local/lib. Here is the snap of my /usr/local/lib directory:

BugpointPasses.soÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMAMDGPUAsmPrinter.aÂÂÂÂ libLLVMInstCombine.aÂÂÂÂÂÂ libLLVMPowerPCAsmParser.aÂÂÂÂ libLLVMX86Info.a
cmakeÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMAMDGPUCodeGen.aÂÂÂÂÂÂÂ libLLVMInstrumentation.aÂÂ libLLVMPowerPCAsmPrinter.aÂÂÂ libLLVMX86Utils.a
libcommon.soÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMAMDGPUDesc.aÂÂÂÂÂÂÂÂÂÂ libLLVMInterpreter.aÂÂÂÂÂÂ libLLVMPowerPCCodeGen.aÂÂÂÂÂÂ libLLVMXCoreAsmPrinter.a
libcommon.so.9.3ÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMAMDGPUInfo.aÂÂÂÂÂÂÂÂÂÂ libLLVMipo.aÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMPowerPCDesc.aÂÂÂÂÂÂÂÂÂ libLLVMXCoreCodeGen.a
libcommon.so.9.3.0 libLLVMAMDGPUUtils.a libLLVMIRReader.a libLLVMPowerPCDisassembler.a libLLVMXCoreDesc.a
libdwarf.soÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMAnalysis.aÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMLibDriver.aÂÂÂÂÂÂÂÂ libLLVMPowerPCInfo.aÂÂÂÂÂÂÂÂÂ libLLVMXCoreDisassembler.a
libdynC_API.soÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMARMAsmParser.aÂÂÂÂÂÂÂÂ libLLVMLineEditor.aÂÂÂÂÂÂÂ libLLVMProfileData.aÂÂÂÂÂÂÂÂÂ libLLVMXCoreInfo.a
libdynC_API.so.9.3ÂÂÂÂÂÂÂÂÂÂÂ libLLVMARMAsmPrinter.aÂÂÂÂÂÂÂ libLLVMLinker.aÂÂÂÂÂÂÂÂÂÂÂ libLLVMRuntimeDyld.aÂÂÂÂÂÂÂÂÂ libLTO.so
libdynC_API.so.9.3.0ÂÂÂÂÂÂÂÂÂ libLLVMARMCodeGen.aÂÂÂÂÂÂÂÂÂÂ libLLVMLTO.aÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMScalarOpts.aÂÂÂÂÂÂÂÂÂÂ libparseAPI.so
libdynDwarf.soÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMARMDesc.aÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMMC.aÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMSelectionDAG.aÂÂÂÂÂÂÂÂ libparseAPI.so.9.3
libdynDwarf.so.9.3ÂÂÂÂÂÂÂÂÂÂÂ libLLVMARMDisassembler.aÂÂÂÂÂ libLLVMMCDisassembler.aÂÂÂ libLLVMSparcAsmParser.aÂÂÂÂÂÂ libparseAPI.so.9.3.0
libdynDwarf.so.9.3.0ÂÂÂÂÂÂÂÂÂ libLLVMARMInfo.aÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMMCJIT.aÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMSparcAsmPrinter.aÂÂÂÂÂ libpatchAPI.so
libdynElf.soÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMAsmParser.aÂÂÂÂÂÂÂÂÂÂÂ libLLVMMCParser.aÂÂÂÂÂÂÂÂÂ libLLVMSparcCodeGen.aÂÂÂÂÂÂÂÂ libpatchAPI.so.9.3
libdynElf.so.9.3ÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMAsmPrinter.aÂÂÂÂÂÂÂÂÂÂ libLLVMMipsAsmParser.aÂÂÂÂ libLLVMSparcDesc.aÂÂÂÂÂÂÂÂÂÂÂ libpatchAPI.so.9.3.0
libdynElf.so.9.3.0ÂÂÂÂÂÂÂÂÂÂÂ libLLVMBitReader.aÂÂÂÂÂÂÂÂÂÂÂ libLLVMMipsAsmPrinter.aÂÂÂ libLLVMSparcDisassembler.aÂÂÂ libpcontrol.so
libdyninstAPI_RT.aÂÂÂÂÂÂÂÂÂÂÂ libLLVMBitWriter.aÂÂÂÂÂÂÂÂÂÂÂ libLLVMMipsCodeGen.aÂÂÂÂÂÂ libLLVMSparcInfo.aÂÂÂÂÂÂÂÂÂÂÂ libpcontrol.so.9.3
libdyninstAPI_RT.soÂÂÂÂÂÂÂÂÂÂ libLLVMBPFAsmPrinter.aÂÂÂÂÂÂÂ libLLVMMipsDesc.aÂÂÂÂÂÂÂÂÂ libLLVMSupport.aÂÂÂÂÂÂÂÂÂÂÂÂÂ libpcontrol.so.9.3.0
libdyninstAPI_RT.so.9.3 libLLVMBPFCodeGen.a libLLVMMipsDisassembler.a libLLVMSymbolize.a libstackwalk.so
libdyninstAPI_RT.so.9.3.0ÂÂÂÂ libLLVMBPFDesc.aÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMMipsInfo.aÂÂÂÂÂÂÂÂÂ libLLVMSystemZAsmParser.aÂÂÂÂ libstackwalk.so.9.3
libdyninstAPI.soÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMBPFInfo.aÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMMIRParser.aÂÂÂÂÂÂÂÂ libLLVMSystemZAsmPrinter.aÂÂÂ libstackwalk.so.9.3.0
libdyninstAPI.so.9.3 libLLVMCodeGen.a libLLVMMSP430AsmPrinter.a libLLVMSystemZCodeGen.a libstp.a
libdyninstAPI.so.9.3.0ÂÂÂÂÂÂÂ libLLVMCore.aÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libLLVMMSP430CodeGen.aÂÂÂÂ libLLVMSystemZDesc.aÂÂÂÂÂÂÂÂÂ libsymLite.so
libinstructionAPI.so libLLVMCppBackendCodeGen.a libLLVMMSP430Desc.a libLLVMSystemZDisassembler.a libsymLite.so.9.3
libinstructionAPI.so.9.3ÂÂÂÂÂ libLLVMCppBackendInfo.aÂÂÂÂÂÂ libLLVMMSP430Info.aÂÂÂÂÂÂÂ libLLVMSystemZInfo.aÂÂÂÂÂÂÂÂÂ libsymLite.so.9.3.0
libinstructionAPI.so.9.3.0ÂÂÂ libLLVMDebugInfoCodeView.aÂÂÂ libLLVMNVPTXAsmPrinter.aÂÂ libLLVMTableGen.aÂÂÂÂÂÂÂÂÂÂÂÂ libsymtabAPI.so
libLLVMAArch64AsmParser.aÂÂÂÂ libLLVMDebugInfoDWARF.aÂÂÂÂÂÂ libLLVMNVPTXCodeGen.aÂÂÂÂÂ libLLVMTarget.aÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libsymtabAPI.so.9.3
libLLVMAArch64AsmPrinter.aÂÂÂ libLLVMDebugInfoPDB.aÂÂÂÂÂÂÂÂ libLLVMNVPTXDesc.aÂÂÂÂÂÂÂÂ libLLVMTransformUtils.aÂÂÂÂÂÂ libsymtabAPI.so.9.3.0
libLLVMAArch64CodeGen.aÂÂÂÂÂÂ libLLVMExecutionEngine.aÂÂÂÂÂ libLLVMNVPTXInfo.aÂÂÂÂÂÂÂÂ libLLVMVectorize.aÂÂÂÂÂÂÂÂÂÂÂ LLVMHello.so
libLLVMAArch64Desc.aÂÂÂÂÂÂÂÂÂ libLLVMHexagonAsmParser.aÂÂÂÂ libLLVMObjCARCOpts.aÂÂÂÂÂÂ libLLVMX86AsmParser.aÂÂÂÂÂÂÂÂ ocaml
libLLVMAArch64Disassembler.a libLLVMHexagonCodeGen.a libLLVMObject.a libLLVMX86AsmPrinter.a python2.7
libLLVMAArch64Info.aÂÂÂÂÂÂÂÂÂ libLLVMHexagonDesc.aÂÂÂÂÂÂÂÂÂ libLLVMOption.aÂÂÂÂÂÂÂÂÂÂÂ libLLVMX86CodeGen.aÂÂÂÂÂÂÂÂÂÂ python3.5
libLLVMAArch64Utils.a libLLVMHexagonDisassembler.a libLLVMOrcJIT.a libLLVMX86Desc.a x86_64-linux-gnu
libLLVMAMDGPUAsmParser.aÂÂÂÂÂ libLLVMHexagonInfo.aÂÂÂÂÂÂÂÂÂ libLLVMPasses.aÂÂÂÂÂÂÂÂÂÂÂ libLLVMX86Disassembler.a

So You can see that, all these libraries are present in my /usr/local/lib directory.

Best Regards,
Sazzadur Rahaman

On Fri, Feb 10, 2017 at 11:53 AM, Bill Williams <bill@xxxxxxxxxxx> wrote:
Did Dyninst install into /usr/local/lib, or is it elsewhere on your system? All of those methods should be exported and visible (and if they weren't, Dyninst itself wouldn't build and link correctly), so the most likely problem is that the parseAPI library is not in your link path.

--bw

________________________________________
From: Dyninst-api <dyninst-api-bounces@xxxxxxxxxdu> on behalf of Sazzadur Rahaman <sazzad14@xxxxxx>
Sent: Friday, February 10, 2017 10:43 AM
To: dyninst-api@xxxxxxxxxxx
Subject: [DynInst_API:] Building Examples from parseAPI and dataflowAPI in   Ubuntu 16.04

Hi All,

I am also facing a similar problem as this (https://www-auth.cs.wisc.edu/lists/dyninst-api/2017/msg00055.shtml) while I try to build Examples from parseAPI and dataflowAPI. For example, when I run "make" to build the code from 3.2 Control flow graph traversal, I get the following error message:

g++ -g -O2 -std=c++11 -I/usr/local/include -L/usr/local/lib -lparseAPI -lsymtabAPI -lelf -ldynDwarf -ldwarf -lelf -ldynElf -lcommon CFG.cpp -o CFG
/tmp/ccf4Fy7w.o: In function `main':
/home/krishnokoli/dyninst-tools/binary-parsing/CFG.cpp:27: undefined reference to `Dyninst::ParseAPI::SymtabCodeSource::SymtabCodeSource(char*)'
/home/krishnokoli/dyninst-tools/binary-parsing/CFG.cpp:28: undefined reference to `Dyninst::ParseAPI::CodeObject::CodeObject(Dyninst::ParseAPI::CodeSource*, Dyninst::ParseAPI::CFGFactory*, Dyninst::ParseAPI::ParseCallback*, bool)'
/home/krishnokoli/dyninst-tools/binary-parsing/CFG.cpp:31: undefined reference to `Dyninst::ParseAPI::CodeObject::parse()'
/home/krishnokoli/dyninst-tools/binary-parsing/CFG.cpp:60: undefined reference to `Dyninst::ParseAPI::Function::blocks()'
/home/krishnokoli/dyninst-tools/binary-parsing/CFG.cpp:61: undefined reference to `Dyninst::ParseAPI::Function::blocks()'
collect2: error: ld returned 1 exit status
Makefile:7: recipe for target 'CFG' failed
make: *** [CFG] Error 1

Sidenote: Before installing Dyninst, I manually installed Boost library, elf library, iberty library but I left libdwarf to be installed by itself during Dyninst build process.

Any help on this issue will be lifesaving. Thank you very much for your help!

Best Regards,
Sazzadur Rahaman



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