On 10/01/2012 06:36 PM, Josh Stone wrote:
As a fallback, I'm considering passing all of those register values as individual parameters, but I'm hoping there's a better way.
I tried to do this, but got an assertion failure. I can reproduce it with the simple attached mutator, processMainRegs.cc, like:
$ ./processMainRegs /bin/true Error: tried to allocate register 9 and failed! processMainRegs: ../../dyninstAPI/src/emit-x86.C:1758: virtual Register EmitterAMD64::emitCall(opCode, codeGen&, const std::vector<boost::shared_ptr<AstNode> >&, bool, func_instance*): Assertion `0' failed. Aborted
Yes, you would have. We haven't implemented that many arguments to a function. It's not hard, just ... tricky. I'll add it to the list.
To mitigate... not really. It shouldn't be that hard a fix though.
Drew I also ran it with env DYNINST_DEBUG_REGALLOC=1 and got a big log that I've also attached. The last additional info that gives is: [UI]: Error: register currently in use!
This seems to be not really related to the fact that I'm using all of the BPatch_registerExpr, just that there are so many arguments. Even replacing that part with all BPatch_constExpr((unsigned long)i) still triggers this assertion failure.
Is there anything I can do to mitigate this?
Josh <processMainRegs.cc><processMainRegs.log.bz2>_______________________________________________ Dyninst-api mailing list Dyninst-api@xxxxxxxxxxx https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api
-- Andrew Bernat Paradyn Project
|
|