本文整理汇总了C++中PatchObject::co方法的典型用法代码示例。如果您正苦于以下问题:C++ PatchObject::co方法的具体用法?C++ PatchObject::co怎么用?C++ PatchObject::co使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PatchObject
的用法示例。
在下文中一共展示了PatchObject::co方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: check
virtual bool check(SpPoint* pt) {
PatchFunction* f = sp::Callee(pt);
if (!f) return false;
sp_print("StackArrayChecker");
// getAllVariables
PatchObject* obj = pt->obj();
using namespace Dyninst::ParseAPI;
using namespace Dyninst::SymtabAPI;
SymtabCodeSource* cs = static_cast<SymtabCodeSource*>(obj->co()->cs());
Symtab* sym = cs->getSymtabObject();
std::vector<Symbol*> symbols;
std::vector<SymtabAPI::Function*> funcs;
sym->getAllFunctions(funcs);
for (unsigned i = 0; i < funcs.size(); i ++) {
if (funcs[i]->getOffset() == f->addr()) {
std::vector<localVar*> vars;
funcs[i]->getLocalVariables(vars);
for (unsigned j = 0; j < vars.size(); j ++) {
typeArray* t = vars[j]->getType()->getArrayType();
if (!t) continue;
sp_print("%s: [%lx, %lx]", vars[j]->getName().c_str(), t->getLow(), t->getHigh());
}
}
}
return true;
}