travis: update
[m6w6/ext-psi] / src / types / decl.c
index 42eeb43928abe3a964d39f028457673a0a9e981c..250aa509bd87412c2c3d292b3a321ca63d00a755 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
-#include "php_psi.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
-#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_posix.h"
+#include "php_psi_predef.h"
 
 struct psi_decl *psi_decl_init(struct psi_decl_arg *func, struct psi_plist *args)
 {
@@ -61,7 +64,7 @@ void psi_decl_free(struct psi_decl **d_ptr)
                if (d->redir) {
                        zend_string_release(d->redir);
                }
-               free(d);
+               pefree(d, 1);
        }
 }
 
@@ -71,8 +74,13 @@ void psi_decl_dump(struct psi_dump *dump, struct psi_decl *decl)
                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;
@@ -90,11 +98,13 @@ void psi_decl_dump(struct psi_dump *dump, struct psi_decl *decl)
        }
        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, ";");
        }
 }
 
@@ -123,7 +133,7 @@ static inline bool psi_decl_validate_func(struct psi_data *data,
                                "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;