コード例 #1
0
    def pc_writes_info(self, pc):
        fields = ['pc', 'thumb', 'reg0', 'reg1', 'reg2',
                  'reg3', 'reg4', 'writesize', 'halt']

        return {f: r[f] for f in fields
                for r in
                pytable_utils.query(self._sdb.db.writestable, "pc == 0x%x" % pc)}
コード例 #2
0
    def disasm_and_src_from_pc(self, pc):
        r = pytable_utils.query(
            self._sdb.db.srcstable, "(addrlo == 0x%x) & (addrhi == 0x%x)" %
            (utils.addr_lo(long(pc)), utils.addr_hi(long(pc))))

        r = next(r)
        return (r["disasm"], r["src"])
コード例 #3
0
 def pc_write_size(self, pc):
     res = pytable_utils.query(self._sdb.db.writestable, "pc == 0x%x" % pc)
     try:
         r = next(res)
         return r['writesize']
     except:
         return 0
コード例 #4
0
 def stepper_write_info(self, pc):
     fields = self._sdb.db.writestable.colnames
     query = "(pclo == 0x%x) & (pchi == 0x%x)" % \
         (utils.addr_lo(pc),
          utils.addr_hi(pc))
     for r in pytable_utils.query(self._sdb.db.writestable, query):
         yield {f: r[f] for f in fields}
コード例 #5
0
 def index_to_trace_write(self, start, end=None):
     if end is None:
         end = start + 1
     fields = self._tdb.db.writestable.colnames
     for r in pytable_utils.query(
             self._tdb.db.writestable,
             "(index >= %d) & (index < %d)" % (start, end)):
         yield {f: r[f] for f in fields}
コード例 #6
0
    def skip_info(self, pc):
        query = "(pclo == 0x%x) & (pchi == 0x%x)" % \
            (utils.addr_lo(pc),
             utils.addr_hi(pc))

        return [{
            "resumepc": r["resumepc"],
            "thumb": r["thumb"]
        } for r in pytable_utils.query(self._sdb.db.skipstable, query)]
コード例 #7
0
 def pc_write_size(self, pc):
     res = pytable_utils.query(
         self._sdb.db.writestable, "(pclo == 0x%x) & (pchi == 0x%x)" %
         (utils.addr_lo(pc), utils.addr_hi(pc)))
     try:
         r = next(res)
         return r['writesize']
     except:
         return 0
コード例 #8
0
    def get_substage_writes(self, substage):
        fields = self._tdb.db.writestable.colnames

        def writes_dict(r):
            d = {}
            for f in fields:
                d[f] = r[f]
            return d
        query = "substage == %s" % substage
        return [writes_dict(r) for r in pytable_utils.query(self._tdb.db.writestable, query)]
コード例 #9
0
    def src_write_info(self, pc):
        fields = self._sdb.db.srcstable.colnames
        def srcss_dict(r):
            d = {}
            for f in fields:
                d[f] = r[f]
            return d

        query = "addr == 0x%x" % pc
        return [srcs_dict(r) for r in pytable_utils.query(self._sdb.db.srcstable, query)]
コード例 #10
0
    def stepper_write_info(self, pc):
        fields = self._sdb.db.writestable.colnames

        def writes_dict(r):
            d = {}
            for f in fields:
                d[f] = r[f]
            return d
        query = "pc == 0x%x" % pc
        return [writes_dict(r) for r in pytable_utils.query(self._sdb.db.writestable, query)]
コード例 #11
0
    def pc_writes_info(self, pc):
        fields = [
            'pc', 'pclo', 'pchi', 'thumb', 'reg0', 'reg1', 'reg2', 'reg3',
            'reg4', 'writesize', 'halt'
        ]

        return {
            f: r[f]
            for f in fields for r in pytable_utils.query(
                self._sdb.db.writestable, "(pclo == 0x%x) & (pchi == 0x%x)" %
                (utils.addr_lo(pc), utils.addr_hi(pc)))
        }
コード例 #12
0
 def skip_info(self, pc):
     query = "pc == 0x%x" % (pc)
     return [{"resumepc": r["resumepc"],
              "thumb": r["thumb"]}
             for r in pytable_utils.query(self._sdb.db.skipstable, query)]
コード例 #13
0
 def reloc_names_in_substage(self, substagenum):
     return [r['name'] for r in pytable_utils.query(self._pdb.db.substage_reloc_info_table,
                                                    'substagenum == %s' % substagenum)]
コード例 #14
0
 def get_substage_writes(self, substage):
     fields = self._tdb.db.writestable.colnames
     query = "substage == %s" % substage
     for r in pytable_utils.query(self._tdb.db.writestable, query):
         yield {f: r[f] for f in fields}
コード例 #15
0
 def callindex_to_fnname(self, idx):
     rs = pytable_utils.query(self._tdb.db.writestable,
                              "callindex == %d" % idx)
     write = next(rs)
     return self.addr2functionname(write['relocatedpc'])
コード例 #16
0
 def func_at_addr(self, pc):
     for r in pytable_utils.query(self._sdb.db.funcstable,
                                  "(startaddr <= 0x%x) & (0x%x < endaddr)" % (pc, pc)):
         yield r['fname']
コード例 #17
0
 def disasm_and_src_from_pc(self, pc):
     r = pytable_utils.query(self._sdb.db.srcstable, "addr == 0x%x" % pc)
     r = next(r)
     return (r["disasm"], r["src"])
コード例 #18
0
 def symbol_names_with(self, substr):
     return [r['name'] for r in
             pytable_utils.query(self._pdb.db.var_table,
                                 "contains(name, \"%s\")" % substr)]