Source code for angr.analyses.cfg_slice_to_sink.transitions
"""Some utilitary functions to manage our representation of transitions: A dictionary, indexed by int (source addresses), which values are list of ints (target addresses)."""
[docs]defmerge_transitions(transitions,existing_transitions):""" Merge two dictionaries of transitions together. :param Dict[int,List[int]] transitions: Some transitions. :param Dict[int,List[int]] existing_transitions: Other transitions. :return Dict[int,List[int]]: The merge of the two parameters. """def_add_to_existing(address,values):ifaddressinexisting_transitions.keys():values+=existing_transitions[address]values=list(set(values))existing_transitions.update({address:values})list(map(lambdax:_add_to_existing(x[0],x[1]),transitions.items()))returnexisting_transitions