self.cpu = p.cpu.__name__ def build(self): f = self.format(self.filename) p = self.cls(f) p.cpu = importlib.import_module(self.cpu) return p #------------------------------------------------------------------------------ try: import transaction from ZODB import DB, FileStorage from persistent import Persistent except ImportError,e: logger.warning(e.message) # declare void Session class: class Session(object): _is_active = False def __init__(self,filename=None): logger.info('this session is not active') def add(self,key,obj): pass def commit(self): pass else: # Session database class: class Session(object): _is_active = True
try: import sqlalchemy as sql from sqlalchemy import orm from sqlalchemy.ext.declarative import declarative_base has_sql = True Session = orm.scoped_session(orm.sessionmaker()) Base = declarative_base() logflag = conf.getboolean('db', 'log') if logflag: for l in ('sqlalchemy.engine', 'sqlalchemy.orm'): alog = logging.getLogger(l) for h in logger.handlers: alog.addHandler(h) alog.setLevel(logger.level) except ImportError: logger.warning(u"package sqlalchemy not found.") has_sql = False def create(filename=None): """creates the database engine and bind it to the scoped Session class. The database URL (see :mod:`config.py`) is opened and the schema is created if necessary. The default URL uses *sqlite* dialect and opens a temporary file for storage. """ import tempfile url = conf.get('db', 'url') if not url.endswith('.db'): if conf.has_option('log', 'file'): case = conf.get('log', 'file').rpartition('.')[0] else:
if self.cpu is None: logger.error('no cpu imported') raise ValueError maxlen = self.cpu.disassemble.maxlen try: istr = self.mmap.read(vaddr,maxlen) except MemoryError,e: logger.verbose("vaddr %s is not mapped"%vaddr) raise MemoryError(e) else: if len(istr)<=0 or not isinstance(istr[0],str): logger.verbose("failed to read instruction at %s"%vaddr) return None i = self.cpu.disassemble(istr[0],**kargs) if i is None: logger.warning("disassemble failed at vaddr %s"%vaddr) return None else: i.address = vaddr return i # optional codehelper method allows platform-specific analysis of # either a (raw) list of instruction, a block/func object (see amoco.code) # the default helper is a no-op: def codehelper(self,seq=None,block=None,func=None): if seq is not None: return seq if block is not None: return block if func is not None: return func #------------------------------------------------------------------------------
self.cpu = p.cpu.__name__ def build(self): f = self.format(self.filename) p = self.cls(f) p.cpu = importlib.import_module(self.cpu) return p #------------------------------------------------------------------------------ try: import transaction from ZODB import DB, FileStorage from persistent import Persistent except ImportError, e: logger.warning(e.message) # declare void Session class: class Session(object): _is_active = False def __init__(self, filename=None): logger.info('this session is not active') def add(self, key, obj): pass def commit(self): pass else:
if self.cpu is None: logger.error('no cpu imported') raise ValueError maxlen = self.cpu.disassemble.maxlen try: istr = self.mmap.read(vaddr, maxlen) except MemoryError, e: logger.verbose("vaddr %s is not mapped" % vaddr) raise MemoryError(e) else: if len(istr) <= 0 or not isinstance(istr[0], str): logger.verbose("failed to read instruction at %s" % vaddr) return None i = self.cpu.disassemble(istr[0], **kargs) if i is None: logger.warning("disassemble failed at vaddr %s" % vaddr) return None else: i.address = vaddr return i # optional codehelper method allows platform-specific analysis of # either a (raw) list of instruction, a block/func object (see amoco.code) # the default helper is a no-op: def codehelper(self, seq=None, block=None, func=None): if seq is not None: return seq if block is not None: return block if func is not None: return func #------------------------------------------------------------------------------