def test_add_dependencies_for_concrete_pointers_of_does_nothing_if_pointer_is_not_concrete( self): arch = self.ArchMock() cfg = self.CFGMock({}) loader = self.LoaderMock(self.MainObjectMock(self.SectionMock(True))) register_definition = Definition( Register(0, 4), CodeLocation(0x42, 0), ) dependency_graph = DepGraph() dependency_graph.add_node(register_definition) nodes_before_call = dependency_graph.nodes() dependency_graph.add_dependencies_for_concrete_pointers_of( [claripy.BVS("TOP", arch.bits)], register_definition, cfg, loader, ) self.assertEqual(nodes_before_call, dependency_graph.nodes())
def test_add_dependencies_for_concrete_pointers_of_create_memory_location_with_undefined_data_if_data_pointed_to_by_definition_is_not_known( self): arch = self.ArchMock() loader = self.LoaderMock(self.MainObjectMock(self.SectionMock(True))) datum_content = None datum_size = 0x4242 memory_datum = self.MemoryDataMock(self.memory_address, datum_content, datum_size, 'unknown') cfg = self.CFGMock({self.memory_address: memory_datum}) memory_definition = Definition( MemoryLocation(self.memory_address, datum_size), ExternalCodeLocation(), ) register_definition = Definition( Register(0, 4), CodeLocation(0x42, 0), ) dependency_graph = DepGraph() dependency_graph.add_node(register_definition) dependency_graph.add_dependencies_for_concrete_pointers_of( [claripy.BVV(self.memory_address, arch.bits)], register_definition, cfg, loader, ) nodes = list(dependency_graph.nodes()) predecessors = list( dependency_graph.graph.predecessors(register_definition)) self.assertEqual(nodes, [register_definition, memory_definition]) self.assertListEqual(predecessors, [memory_definition])