*retval_type = value_type; return funaddr + FUNCTION_START_OFFSET;
if (retval_type != NULL) *retval_type = value_type; return funaddr + DEPRECATED_FUNCTION_START_OFFSET;
find_function_addr (struct value *function, struct type **retval_type){  struct type *ftype = check_typedef (VALUE_TYPE (function));  enum type_code code = TYPE_CODE (ftype);  struct type *value_type;  CORE_ADDR funaddr;  /* If it's a member function, just look at the function     part of it.  */  /* Determine address to call.  */  if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)    {      funaddr = VALUE_ADDRESS (function);      value_type = TYPE_TARGET_TYPE (ftype);    }  else if (code == TYPE_CODE_PTR)    {      funaddr = value_as_address (function);      ftype = check_typedef (TYPE_TARGET_TYPE (ftype));      if (TYPE_CODE (ftype) == TYPE_CODE_FUNC	  || TYPE_CODE (ftype) == TYPE_CODE_METHOD)	{	  funaddr = gdbarch_convert_from_func_ptr_addr (current_gdbarch,							funaddr,							&current_target);	  value_type = TYPE_TARGET_TYPE (ftype);	}      else	value_type = builtin_type_int;    }  else if (code == TYPE_CODE_INT)    {      /* Handle the case of functions lacking debugging info.         Their values are characters since their addresses are char */      if (TYPE_LENGTH (ftype) == 1)	funaddr = value_as_address (value_addr (function));      else	/* Handle integer used as address of a function.  */	funaddr = (CORE_ADDR) value_as_long (function);      value_type = builtin_type_int;    }  else    error ("Invalid data type for function to be called.");  *retval_type = value_type;  return funaddr + FUNCTION_START_OFFSET;}