static PyObject *Triton_convertRegToSymVar(PyObject *self, PyObject *args)
{
  PyObject *regId, *symVarSize, *varComment = nullptr;
  uint64 vs, ri;
  std::string vc;

  /* Extract arguments */
  PyArg_ParseTuple(args, "O|O|O", &regId, &symVarSize, &varComment);

  if (varComment == nullptr)
    varComment = PyString_FromString("");

  if (!PyLong_Check(regId) && !PyInt_Check(regId))
    return PyErr_Format(PyExc_TypeError, "convertRegToSymVar(): expected a IDREF.REG as first argument");

  if (!PyLong_Check(symVarSize) && !PyInt_Check(symVarSize))
    return PyErr_Format(PyExc_TypeError, "convertRegToSymVar(): expected a size as second argument");

  if (!PyString_Check(varComment))
      return PyErr_Format(PyExc_TypeError, "convertRegToSymVar(): expected a comment (string) as third argument");

  ri = PyLong_AsLong(regId);
  vs = PyLong_AsLong(symVarSize);
  vc = PyString_AsString(varComment);

  return PySymbolicVariable(ap.convertRegToSymVar(ri, vs, vc));
}
static PyObject *Triton_convertMemToSymVar(PyObject *self, PyObject *args)
{
  PyObject *memAddr, *symVarSize, *varComment = nullptr;
  uint64 vs, ma;
  std::string vc;

  /* Extract arguments */
  PyArg_ParseTuple(args, "O|O|O", &memAddr, &symVarSize, &varComment);

  if (varComment == nullptr)
    varComment = PyString_FromString("");

  if (!PyLong_Check(memAddr) && !PyInt_Check(memAddr))
    return PyErr_Format(PyExc_TypeError, "convertMemToSymVar(): expected a memory address as first argument");

  if (!PyLong_Check(symVarSize) && !PyInt_Check(symVarSize))
    return PyErr_Format(PyExc_TypeError, "convertMemToSymVar(): expected a size as second argument");

  if (!PyString_Check(varComment))
      return PyErr_Format(PyExc_TypeError, "convertMemToSymVar(): expected a comment (string) as third argument");

  ma = PyLong_AsLong(memAddr);
  vs = PyLong_AsLong(symVarSize);
  vc = PyString_AsString(varComment);

  return PySymbolicVariable(ap.convertMemToSymVar(ma, vs, vc));
}
Beispiel #3
0
static PyObject *Triton_convertExprToSymVar(PyObject *self, PyObject *args) {
  PyObject *exprId = nullptr;
  PyObject *symVarSize = nullptr;
  PyObject *varComment = nullptr;
  uint64 vs, ei;
  std::string vc;

  /* Extract arguments */
  PyArg_ParseTuple(args, "|OOO", &exprId, &symVarSize, &varComment);

  if (varComment == nullptr)
    varComment = PyString_FromString("");

  if (exprId == nullptr || (!PyLong_Check(exprId) && !PyInt_Check(exprId)))
    return PyErr_Format(PyExc_TypeError, "convertExprToSymVar(): expected an integer as first argument");

  if (symVarSize == nullptr || (!PyLong_Check(symVarSize) && !PyInt_Check(symVarSize)))
    return PyErr_Format(PyExc_TypeError, "convertExprToSymVar(): expected an integer as second argument");

  if (!PyString_Check(varComment))
      return PyErr_Format(PyExc_TypeError, "convertExprToSymVar(): expected a comment (string) as third argument");

  ei = PyLong_AsLongLong(exprId);
  vs = PyLong_AsLongLong(symVarSize);
  vc = PyString_AsString(varComment);

  return PySymbolicVariable(ap.convertExprToSymVar(ei, vs, vc));
}
Beispiel #4
0
static PyObject *Triton_getSymVars(PyObject *self, PyObject *noArg) {
  std::vector<SymbolicVariable *> symVars;
  std::vector<SymbolicVariable *>::iterator it;
  PyObject *symVarsList;

  symVars = ap.getSymVars();
  symVarsList = xPyList_New(symVars.size());

  Py_ssize_t index = 0;
  for (it = symVars.begin(); it != symVars.end(); it++){
    PyList_SetItem(symVarsList, index, PySymbolicVariable(*it));
    index += 1;
  }

  return symVarsList;
}
Beispiel #5
0
static PyObject *Triton_getSymVar(PyObject *self, PyObject *symVarPy) {
  SymbolicVariable *symVar;

  if (!PyLong_Check(symVarPy) && !PyInt_Check(symVarPy) && !PyString_Check(symVarPy))
    return PyErr_Format(PyExc_TypeError, "getSymVar(): expected a symbolic variable ID or a symbolic variable name");

  if (PyLong_Check(symVarPy) || PyInt_Check(symVarPy))
    symVar = ap.getSymVar(PyLong_AsLong(symVarPy));
  else
    symVar = ap.getSymVar(PyString_AsString(symVarPy));

  if (symVar == nullptr)
    return PyErr_Format(PyExc_TypeError, "getSymVar(): Invalid symbolic variable ID");

  return PySymbolicVariable(symVar);
}