(self, addr, blockaddr_to_function, known_functions)
return f
Convert an address to a Function object, and store the mapping in a dict. If the block is known to be part of a
        function, just return that function.

        :param int addr: Address to convert
        :param dict blockaddr_to_function: A mapping between block addresses to Function instances.
        :param angr.knowledge_plugins.FunctionManager known_functions: Recovered functions.
        :return: a Function object
        :rtype: angr.knowledge.Function
Convert an address to a Function object, and store the mapping in a dict. If the block is known to be part of a
        function, just return that function.
Convert an address to a Function object and store the mapping in a dict . If the block is known to be part of a function just return that function .
def _addr_to_function(self, addr, blockaddr_to_function, known_functions):
        """
        Convert an address to a Function object, and store the mapping in a dict. If the block is known to be part of a
        function, just return that function.

        :param int addr: Address to convert
        :param dict blockaddr_to_function: A mapping between block addresses to Function instances.
        :param angr.knowledge_plugins.FunctionManager known_functions: Recovered functions.
        :return: a Function object
        :rtype: angr.knowledge.Function
        """

        if addr in blockaddr_to_function:
            f = blockaddr_to_function[addr]
        else:
            is_syscall = self.project.simos.is_syscall_addr(addr)

            n = self.model.get_any_node(addr, is_syscall=is_syscall)
            if n is None:
                node = addr
            else: node = self._to_snippet(n)

            if isinstance(addr, SootAddressDescriptor):
                addr = addr.method

            self.kb.functions._add_node(addr, node, syscall=is_syscall)
            f = self.kb.functions.function(addr=addr)

            blockaddr_to_function[addr] = f

            function_is_returning = False
            if addr in known_functions:
                if known_functions.function(addr).returning:
                    f.returning = True
                    function_is_returning = True

            if not function_is_returning:
                # We will rerun function feature analysis on this function later. Add it to
                # self._updated_nonreturning_functions so it can be picked up by function feature analysis later.
                if self._updated_nonreturning_functions is not None:
                    self._updated_nonreturning_functions.add(addr)

        return f
def _addr_to_function ( self , addr , blockaddr_to_function , known_functions ) : if addr in blockaddr_to_function : f = blockaddr_to_function [ addr ] else : is_syscall = self . project . simos . is_syscall_addr ( addr ) n = self . model . get_any_node ( addr , is_syscall = is_syscall ) if n is None : node = addr else : node = self . _to_snippet ( n ) if isinstance ( addr , SootAddressDescriptor ) : addr = addr . method self . kb . functions . _add_node ( addr , node , syscall = is_syscall ) f = self . kb . functions . function ( addr = addr ) blockaddr_to_function [ addr ] = f function_is_returning = False if addr in known_functions : if known_functions . function ( addr ) . returning : f . returning = True function_is_returning = True if not function_is_returning : # We will rerun function feature analysis on this function later. Add it to # self._updated_nonreturning_functions so it can be picked up by function feature analysis later. if self . _updated_nonreturning_functions is not None : self . _updated_nonreturning_functions . add ( addr ) return f