#else
# include "php_config.h"
#endif
-#include "php_psi.h"
-#include <dlfcn.h>
#include <fnmatch.h>
-
#include <Zend/zend_smart_str.h>
+#include "php_psi.h"
#include "data.h"
+#include "dl.h"
#define PSI_FUNC_REDIRS
#include "php_psi_predef.h"
if (d->redir) {
zend_string_release(d->redir);
}
- free(d);
+ pefree(d, 1);
}
}
psi_decl_abi_dump(dump, decl->abi);
}
PSI_DUMP(dump, " ");
- /* FIXME: functions returning arrays */
- psi_decl_arg_dump(dump, decl->func, 0);
+
+ psi_decl_type_dump(dump, decl->func->type, 0);
+ PSI_DUMP(dump, " ");
+ PSI_DUMP(dump, "%s%s",
+ psi_t_indirection(decl->func->var->pointer_level - !!decl->func->var->array_size),
+ decl->func->var->name->val);
+
PSI_DUMP(dump, "(");
if (decl->args) {
size_t i;
}
if (decl->func->var->array_size) {
PSI_DUMP(dump, ")[%u]", decl->func->var->array_size);
+ } else {
+ PSI_DUMP(dump, ")");
}
if (decl->redir) {
- PSI_DUMP(dump, ") __asm__ (\"%s\");", decl->redir->val);
+ PSI_DUMP(dump, " __asm__ (\"%s\");", decl->redir->val);
} else {
- PSI_DUMP(dump, ");");
+ PSI_DUMP(dump, ";");
}
}
"Failed to locate symbol '%s(%s)': %s",
func->var->name->val,
decl->redir ? decl->redir->val : "",
- dlerror() ?: "not found");
+ psi_dlerror() ?: "not found");
return false;
}
return true;