Re: [DynInst_API:] instructionAPI fails on ARM 64


Date: Tue, 13 Sep 2016 14:30:21 -0500
From: "Mark W. Krentel" <krentel@xxxxxxxx>
Subject: Re: [DynInst_API:] instructionAPI fails on ARM 64
Sunny,

Well, some partial success, but not really.  Running parse on itself
works without throwing exceptions.  But on the hpcstruct-bin binary,
it still throws an assert.

I think everything for hpcstruct-bin should be compiled locally with
gcc.  On x86, we use XED libraries from Intel, but that doesn't apply
here.

And someday, we need a discussion of alternatives to throwing asserts
from inside libraries.  This makes me do things like wrap every call
to a parseapi function with siglongjmp() to protect my main program.

--Mark


Anyway, this is how it fails on hpcstruct-bin.

$ ./parse hpcstruct-bin
Instruction processing threw exception for instruction: stp X27, X28, [SP], a << 3 Instruction processing threw exception for instruction: stp X25, X26, [SP], 8 << 3 Instruction processing threw exception for instruction: stp X23, X24, [SP], 6 << 3 Instruction processing threw exception for instruction: stp X21, X22, [SP], 4 << 3 Instruction processing threw exception for instruction: stp X19, X20, [SP], 2 << 3 parse: /home/krentel/newarch/externals/symtabAPI/dyninst/common/src/dyn_regs.C:836:
void Dyninst::MachRegister::getROSERegister(int&, int&, int&):
Assertion `!"unknown register type!"' failed.
Aborted (core dumped)

#0  0x000003ff77c62d38 in raise () from /lib64/libc.so.6
#1  0x000003ff77c64aa8 in abort () from /lib64/libc.so.6
#2  0x000003ff77c5c4c4 in __assert_fail_base () from /lib64/libc.so.6
#3  0x000003ff77c5c57c in __assert_fail () from /lib64/libc.so.6

#4 0x000003ff780dbb10 in Dyninst::MachRegister::getROSERegister (this=this@entry=0x3ffefd911c8, c=@0x3ffefd911d4: 0, n=@0x3ffefd911d8: -270984048, p=@0x3ffefd911dc: 0) at /home/krentel/newarch/externals/symtabAPI/dyninst/common/src/dyn_regs.C:836

#5 0x000003ff7856d928 in Dyninst::DataflowAPI::ExpressionConversionVisitor::archSpecificRegisterProc (this=this@entry=0x3ffefd91268, regast=0x1b3997f0, addr=<optimized out>, size=<optimized out>) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/ExpressionConversionVisitor.C:296

#6 0x000003ff7856db00 in Dyninst::DataflowAPI::ExpressionConversionVisitor::visit (this=0x3ffefd91268, regast=<optimized out>) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/ExpressionConversionVisitor.C:153

#7 0x000003ff78350a10 in Dyninst::InstructionAPI::RegisterAST::apply (this=<optimized out>, v=<optimized out>) at /home/krentel/newarch/externals/symtabAPI/dyninst/instructionAPI/src/Register.C:182

#8 0x000003ff786074b8 in Dyninst::DataflowAPI::RoseInsnFactory::convertOperand (this=this@entry=0x3ffefd91450, expression=..., addr=addr@entry=5663248, insnSize=4) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/RoseInsnFactory.C:105

#9 0x000003ff78607c68 in Dyninst::DataflowAPI::RoseInsnFactory::convert (this=0x3ffefd91450, this@entry=0x3ffefd914b0, insn=..., addr=addr@entry=5663248) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/RoseInsnFactory.C:96

#10 0x000003ff786e11dc in Dyninst::DataflowAPI::SymEval::expandInsn (insn=..., addr=5663248, res=std::map with 1 elements = {...}) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/SymEval.C:494

#11 0x000003ff786e22b0 in Dyninst::DataflowAPI::SymEval::expand (res=std::map with 1 elements = {...}, failedInsns=std::set with 0 elements, applyVisitors=applyVisitors@entry=false) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/SymEval.C:94

#12 0x000003ff786e2560 in Dyninst::DataflowAPI::SymEval::expand (assignment=..., applyVisitors=applyVisitors@entry=false) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/SymEval.C:75

#13 0x000003ff7852bcc8 in JumpTablePred::ExpandAssignment (this=this@entry=0x3ffefd94b58, assign=...) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/JumpTablePred.C:401

#14 0x000003ff7852f800 in JumpTablePred::addNodeCallback (this=0x3ffefd94b58, ap=..., visitedEdges=std::set with 9 elements = {...}) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/JumpTablePred.C:192

#15 0x000003ff78617fa8 in Dyninst::Slicer::updateAndLink (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, cand=..., cache=..., p=...) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:398

#16 0x000003ff78618da8 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:231

#17 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#18 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#19 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#20 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#21 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#22 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#23 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements)

#24 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#25 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#26 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#27 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#28 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#29 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#30 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#31 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#32 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#33 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#34 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#35 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#36 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#37 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#38 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#39 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#40 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements)

#41 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#42 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#43 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#44 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#45 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#46 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#47 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#48 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#49 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#50 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#51 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#52 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=false, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#53 0x000003ff78619434 in Dyninst::Slicer::sliceInternalAux (this=this@entry=0x3ffefd94d50, g=..., dir=dir@entry=Dyninst::Slicer::backward, p=..., cand=..., skip=skip@entry=true, visited=std::map with 37 elements = {...}, singleCache=std::map with 38 elements = {...}, cache=std::map with 0 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:307

#54 0x000003ff78619ba8 in Dyninst::Slicer::sliceInternal (this=this@entry=0x3ffefd94d50, dir=dir@entry=Dyninst::Slicer::backward, p=...) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:195

#55 0x000003ff78619fe4 in Dyninst::Slicer::backwardSlice (this=this@entry=0x3ffefd94d50, predicates=...) at /home/krentel/newarch/externals/symtabAPI/dyninst/dataflowAPI/src/slicing.C:1394

#56 0x000003ff7854bb1c in IndirectControlFlowAnalyzer::NewJumpTableAnalysis (this=this@entry=0x3ffefd95030, outEdges=std::vector of length 0, capacity 0) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/IndirectAnalyzer.C:45

#57 0x000003ff785250cc in Dyninst::InsnAdapter::IA_aarch64Details::parseJumpTable (this=<optimized out>, currFunc=<optimized out>, currBlk=0x1b360ed0, outEdges=std::vector of length 0, capacity 0) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/IA_aarch64Details.C:172

#58 0x000003ff7850b6f0 in Dyninst::InsnAdapter::IA_IAPI::parseJumpTable (this=this@entry=0x1b360f50, currFunc=currFunc@entry=0x1af82550, currBlk=0x1b21fc90, currBlk@entry=0x1b360ed0, outEdges=std::vector of length -274735447302, capacity -274735447302 = {...}) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/IA_IAPI.C:958

#59 0x000003ff78511018 in Dyninst::InsnAdapter::IA_IAPI::getNewEdges (this=0x1b360f50, outEdges=std::vector of length 0, capacity 0, context=0x1af82550, Python Exception <type 'exceptions.ValueError'> Cannot find type const std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >::_Rep_type: currBlk=0x1b360ed0, num_insns=56, plt_entries=<optimized out>, knownTargets=std::set with 11 elements) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/IA_IAPI.C:681

#60 0x000003ff784de40c in Dyninst::ParseAPI::Parser::ProcessCFInsn (this=this@entry=0x19c864f0, frame=..., cur=cur@entry=0x1b360ed0, ah=...) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/ParserDetails.C:425

#61 0x000003ff784e4d00 in Dyninst::ParseAPI::Parser::parse_frame (this=this@entry=0x19c864f0, frame=..., recursive=recursive@entry=true) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/Parser.C:1122

#62 0x000003ff784e74ec in Dyninst::ParseAPI::Parser::parse_frames (this=this@entry=0x19c864f0, work=std::vector of length 3491, capacity 4096 = {...}, recursive=recursive@entry=true) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/Parser.C:409

#63 0x000003ff784e8c38 in Dyninst::ParseAPI::Parser::parse_vanilla (this=this@entry=0x19c864f0) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/Parser.C:282

#64 0x000003ff784e8e00 in Dyninst::ParseAPI::Parser::parse (this=0x19c864f0) at /home/krentel/newarch/externals/symtabAPI/dyninst/parseAPI/src/Parser.C:160

#65 0x0000000000401e48 in main (argc=<optimized out>, argv=<optimized out>) at parse.cpp:149




On 09/12/16 19:33, Sunny Shah wrote:
Hi Mark,

This message couldn't have come at a better time.

The "Instruction processing threw exception for instruction" messages
are thrown when Dyninst cannot find the semantics for said instruction.
The master branch does not contain semantics for load/store
instructions; in fact, I just added them last Friday and are available
on the arm64/feature/semantics branch.

The abort you're seeing with the hpcstruct-bin is because we added new
binary functions in Dyninst over the last year, but ROSE (which we use
for semantics) doesn't support them. I made and committed the necessary
changes a few hours ago. Again, they are on the arm64/feature/semantics
branch.

Using that branch should make these errors go away. However, I should
add that ARM semantics are a work-in-progress: I'm continuing to work on
adding support for more instructions and fixing whatever bugs I find. Do
let me know about other asserts and errors you see!

Thanks,
Sunny


On 9/12/2016 5:59 PM, Mark W. Krentel wrote:
I think instructionAPI (or maybe parseAPI) is broken in master branch
on ARM (aarch64).  I'm seeing two problems.  The small one is a spew
of error messages, "Instruction processing threw exception for
instruction: ldr X17, [X16 + 3c0]".  The bigger one is raising an
abort.

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