about summary refs log tree commit diff stats
path: root/miasm2/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/analysis')
-rw-r--r--miasm2/analysis/binary.py20
-rw-r--r--miasm2/analysis/depgraph.py10
-rw-r--r--miasm2/analysis/disasm_cb.py20
-rw-r--r--miasm2/analysis/dse.py14
4 files changed, 35 insertions, 29 deletions
diff --git a/miasm2/analysis/binary.py b/miasm2/analysis/binary.py
index 5d9374da..ae3b964e 100644
--- a/miasm2/analysis/binary.py
+++ b/miasm2/analysis/binary.py
@@ -1,8 +1,9 @@
 import logging
+import warnings
 
 from miasm2.core.bin_stream import bin_stream_str, bin_stream_elf, bin_stream_pe
 from miasm2.jitter.csts import PAGE_READ
-from miasm2.core.asmblock import AsmSymbolPool
+from miasm2.core.locationdb import LocationDB
 
 
 log = logging.getLogger("binary")
@@ -94,7 +95,7 @@ class Container(object):
         self._bin_stream = None
         self._entry_point = None
         self._arch = None
-        self._symbol_pool = AsmSymbolPool()
+        self._loc_db = LocationDB()
 
         # Launch parsing
         self.parse(*args, **kwargs)
@@ -120,10 +121,15 @@ class Container(object):
         return self._arch
 
     @property
-    def symbol_pool(self):
-        "AsmSymbolPool instance preloaded with container symbols (if any)"
-        return self._symbol_pool
+    def loc_db(self):
+        "LocationDB instance preloaded with container symbols (if any)"
+        return self._loc_db
 
+    @property
+    def symbol_pool(self):
+        "[DEPRECATED API]"
+        warnings.warn("Deprecated API: use 'loc_db'")
+        return self.loc_db
 
 ## Format dependent classes
 class ContainerPE(Container):
@@ -205,13 +211,13 @@ class ContainerELF(Container):
                 if not name:
                     continue
                 try:
-                    self._symbol_pool.add_location(name, offset)
+                    self._loc_db.add_location(name, offset)
                 except ValueError:
                     # Two symbols points on the same offset
                     log.warning("Same offset (%s) for %s and %s",
                                 (hex(offset),
                                  name,
-                                 self._symbol_pool.getby_offset(offset)))
+                                 self._loc_db.getby_offset(offset)))
                     continue
 
 
diff --git a/miasm2/analysis/depgraph.py b/miasm2/analysis/depgraph.py
index 0f4d168d..6532a3ef 100644
--- a/miasm2/analysis/depgraph.py
+++ b/miasm2/analysis/depgraph.py
@@ -2,7 +2,7 @@
 
 from miasm2.expression.expression import ExprInt, ExprLoc, ExprAff
 from miasm2.core.graph import DiGraph
-from miasm2.core.asmblock import AsmSymbolPool
+from miasm2.core.locationdb import LocationDB
 from miasm2.expression.simplifications import expr_simp
 from miasm2.ir.symbexec import SymbolicExecutionEngine
 from miasm2.ir.ir import IRBlock, AssignBlock
@@ -297,8 +297,8 @@ class DependencyResult(DependencyState):
                                              line_nb).assignblks
 
         # Eval the block
-        symbol_pool = AsmSymbolPool()
-        temp_loc = symbol_pool.getby_name_create("Temp")
+        loc_db = LocationDB()
+        temp_loc = loc_db.getby_name_create("Temp")
         symb_exec = SymbolicExecutionEngine(self._ira, ctx_init)
         symb_exec.eval_updt_irblock(IRBlock(temp_loc, assignblks), step=step)
 
@@ -322,10 +322,10 @@ class DependencyResultImplicit(DependencyResult):
         generated loc_keys
         """
         out = []
-        expected = self._ira.symbol_pool.canonize_to_exprloc(expected)
+        expected = self._ira.loc_db.canonize_to_exprloc(expected)
         expected_is_loc_key = expected.is_loc()
         for consval in possible_values(expr):
-            value = self._ira.symbol_pool.canonize_to_exprloc(consval.value)
+            value = self._ira.loc_db.canonize_to_exprloc(consval.value)
             if expected_is_loc_key and value != expected:
                 continue
             if not expected_is_loc_key and value.is_loc_key():
diff --git a/miasm2/analysis/disasm_cb.py b/miasm2/analysis/disasm_cb.py
index 0dc482ac..54832104 100644
--- a/miasm2/analysis/disasm_cb.py
+++ b/miasm2/analysis/disasm_cb.py
@@ -2,8 +2,8 @@
 
 from miasm2.expression.expression import ExprInt, ExprId, ExprMem, match_expr
 from miasm2.expression.simplifications import expr_simp
-from miasm2.core.asmblock \
-    import AsmSymbolPool, AsmConstraintNext, AsmConstraintTo
+from miasm2.core.asmblock import AsmConstraintNext, AsmConstraintTo
+from miasm2.core.locationdb import LocationDB
 from miasm2.core.utils import upck32
 
 
@@ -21,10 +21,10 @@ def get_ira(mnemo, attrib):
 
 
 def arm_guess_subcall(
-    mnemo, attrib, pool_bin, cur_bloc, offsets_to_dis, symbol_pool):
+    mnemo, attrib, pool_bin, cur_bloc, offsets_to_dis, loc_db):
     ira = get_ira(mnemo, attrib)
 
-    sp = AsmSymbolPool()
+    sp = LocationDB()
     ir_arch = ira(sp)
     print '###'
     print cur_bloc
@@ -49,7 +49,7 @@ def arm_guess_subcall(
         l = cur_bloc.lines[-1]
         if lr_val.arg != l.offset + l.l:
             continue
-        l = symbol_pool.getby_offset_create(int(lr_val))
+        l = loc_db.getby_offset_create(int(lr_val))
         c = AsmConstraintNext(l)
 
         to_add.add(c)
@@ -60,13 +60,13 @@ def arm_guess_subcall(
 
 
 def arm_guess_jump_table(
-    mnemo, attrib, pool_bin, cur_bloc, offsets_to_dis, symbol_pool):
+    mnemo, attrib, pool_bin, cur_bloc, offsets_to_dis, loc_db):
     ira = get_ira(mnemo, attrib)
 
     jra = ExprId('jra')
     jrb = ExprId('jrb')
 
-    sp = AsmSymbolPool()
+    sp = LocationDB()
     ir_arch = ira(sp)
     ir_arch.add_block(cur_bloc)
 
@@ -111,7 +111,7 @@ def arm_guess_jump_table(
 
         for ad in addrs:
             offsets_to_dis.add(ad)
-            l = symbol_pool.getby_offset_create(ad)
+            l = loc_db.getby_offset_create(ad)
             c = AsmConstraintTo(l)
             cur_bloc.addto(c)
 
@@ -119,6 +119,6 @@ guess_funcs = []
 
 
 def guess_multi_cb(
-    mnemo, attrib, pool_bin, cur_bloc, offsets_to_dis, symbol_pool):
+    mnemo, attrib, pool_bin, cur_bloc, offsets_to_dis, loc_db):
     for f in guess_funcs:
-        f(mnemo, attrib, pool_bin, cur_bloc, offsets_to_dis, symbol_pool)
+        f(mnemo, attrib, pool_bin, cur_bloc, offsets_to_dis, loc_db)
diff --git a/miasm2/analysis/dse.py b/miasm2/analysis/dse.py
index 1fd177bb..e2758d6c 100644
--- a/miasm2/analysis/dse.py
+++ b/miasm2/analysis/dse.py
@@ -159,14 +159,14 @@ class DSEEngine(object):
         self.symb_concrete = None # Concrete SymbExec for path desambiguisation
         self.mdis = None # DisasmEngine
 
-        self.symbol_pool = self.ir_arch.symbol_pool
+        self.loc_db = self.ir_arch.loc_db
 
     def prepare(self):
         """Prepare the environment for attachment with a jitter"""
         # Disassembler
         self.mdis = self.machine.dis_engine(bin_stream_vm(self.jitter.vm),
                                             lines_wd=1,
-                                            symbol_pool=self.symbol_pool)
+                                            loc_db=self.loc_db)
 
         # Symbexec engine
         ## Prepare symbexec engines
@@ -297,7 +297,7 @@ class DSEEngine(object):
         # Call callbacks associated to the current address
         cur_addr = self.jitter.pc
         if isinstance(cur_addr, LocKey):
-            lbl = self.ir_arch.symbol_pool.loc_key_to_label(cur_addr)
+            lbl = self.ir_arch.loc_db.loc_key_to_label(cur_addr)
             cur_addr = lbl.offset
 
         if cur_addr in self.handler:
@@ -348,7 +348,7 @@ class DSEEngine(object):
                 self.symb.run_block_at(cur_addr)
 
                 if not (isinstance(next_addr_concrete, ExprLoc) and
-                        self.ir_arch.symbol_pool.loc_key_to_offset(
+                        self.ir_arch.loc_db.loc_key_to_offset(
                             next_addr_concrete.loc_key
                         ) is None):
                     # Not a lbl_gen, exit
@@ -604,17 +604,17 @@ class DSEPathConstraint(DSEEngine):
             self.cur_solver.add(self.z3_trans.from_expr(cons))
 
     def handle(self, cur_addr):
-        cur_addr = self.ir_arch.symbol_pool.canonize_to_exprloc(cur_addr)
+        cur_addr = self.ir_arch.loc_db.canonize_to_exprloc(cur_addr)
         symb_pc = self.eval_expr(self.ir_arch.IRDst)
         possibilities = possible_values(symb_pc)
         cur_path_constraint = set() # path_constraint for the concrete path
         if len(possibilities) == 1:
             dst = next(iter(possibilities)).value
-            dst = self.ir_arch.symbol_pool.canonize_to_exprloc(dst)
+            dst = self.ir_arch.loc_db.canonize_to_exprloc(dst)
             assert dst == cur_addr
         else:
             for possibility in possibilities:
-                target_addr = self.ir_arch.symbol_pool.canonize_to_exprloc(
+                target_addr = self.ir_arch.loc_db.canonize_to_exprloc(
                     possibility.value
                 )
                 path_constraint = set() # Set of ExprAff for the possible path