PATH=/usr/bin:/bin:/data/fly2400/cpanfly-5.24/var/megalib/bin Start 2018-08-31T02:03:30 ActivePerl-2400 CPAN-2.10 Reading '/data/fly2400/cpanfly-5.24/var/cpan/Metadata' Database was generated on Thu, 30 Aug 2018 04:29:02 GMT Checksum for /data/fly2400/cpanfly-5.24/var/cpan/sources/authors/id/P/PL/PLICEASE/FFI-Platypus-0.55.tar.gz ok FFI-Platypus-0.55/ FFI-Platypus-0.55/author.yml FFI-Platypus-0.55/lib/ FFI-Platypus-0.55/lib/FFI/ FFI-Platypus-0.55/lib/FFI/Platypus.xs FFI-Platypus-0.55/lib/FFI/Platypus.pm FFI-Platypus-0.55/lib/FFI/Platypus/ FFI-Platypus-0.55/lib/FFI/Platypus/Lang/ FFI-Platypus-0.55/lib/FFI/Platypus/Lang/Win32.pm FFI-Platypus-0.55/lib/FFI/Platypus/Lang/C.pm FFI-Platypus-0.55/lib/FFI/Platypus/Lang/ASM.pm FFI-Platypus-0.55/lib/FFI/Platypus/DL.pm FFI-Platypus-0.55/lib/FFI/Platypus/Buffer.pm FFI-Platypus-0.55/lib/FFI/Platypus/API.pm FFI-Platypus-0.55/lib/FFI/Platypus/Memory.pm FFI-Platypus-0.55/lib/FFI/Platypus/Record/ FFI-Platypus-0.55/lib/FFI/Platypus/Record/TieArray.pm FFI-Platypus-0.55/lib/FFI/Platypus/Lang.pm FFI-Platypus-0.55/lib/FFI/Platypus/ShareConfig.pm FFI-Platypus-0.55/lib/FFI/Platypus/Declare.pm FFI-Platypus-0.55/lib/FFI/Platypus/Type/ FFI-Platypus-0.55/lib/FFI/Platypus/Type/PointerSizeBuffer.pm FFI-Platypus-0.55/lib/FFI/Platypus/Type/StringPointer.pm FFI-Platypus-0.55/lib/FFI/Platypus/Record.pm FFI-Platypus-0.55/lib/FFI/Platypus/Type.pod FFI-Platypus-0.55/META.json FFI-Platypus-0.55/dist.ini FFI-Platypus-0.55/Changes FFI-Platypus-0.55/LICENSE FFI-Platypus-0.55/examples/ FFI-Platypus-0.55/examples/get_uptime.pl FFI-Platypus-0.55/examples/zmq3.pl FFI-Platypus-0.55/examples/time.pl FFI-Platypus-0.55/examples/java/ FFI-Platypus-0.55/examples/java/example.pl FFI-Platypus-0.55/examples/java/Makefile FFI-Platypus-0.55/examples/java/between.cpp FFI-Platypus-0.55/examples/java/Example.java FFI-Platypus-0.55/examples/var_array.c FFI-Platypus-0.55/examples/integer.pl FFI-Platypus-0.55/examples/closure-opaque.pl FFI-Platypus-0.55/examples/getpid.pl FFI-Platypus-0.55/examples/notify.pl FFI-Platypus-0.55/examples/win32_getSystemTime.pl FFI-Platypus-0.55/examples/uuid.pl FFI-Platypus-0.55/examples/time_record.pl FFI-Platypus-0.55/examples/win32_beep.pl FFI-Platypus-0.55/examples/pipe.pl FFI-Platypus-0.55/examples/string.pl FFI-Platypus-0.55/examples/archive.pl FFI-Platypus-0.55/examples/var_array.pl FFI-Platypus-0.55/examples/closure.pl FFI-Platypus-0.55/examples/bzip2.pl FFI-Platypus-0.55/examples/time_oo.pl FFI-Platypus-0.55/examples/math.pl FFI-Platypus-0.55/examples/char.pl FFI-Platypus-0.55/examples/closure.c FFI-Platypus-0.55/examples/list_integer_types.pl FFI-Platypus-0.55/examples/malloc.pl FFI-Platypus-0.55/examples/attach_from_pointer.pl FFI-Platypus-0.55/share/ FFI-Platypus-0.55/share/README.txt FFI-Platypus-0.55/maint/ FFI-Platypus-0.55/maint/gen.pl FFI-Platypus-0.55/xs/ FFI-Platypus-0.55/xs/Function.xs FFI-Platypus-0.55/xs/dl.xs FFI-Platypus-0.55/xs/Declare.xs FFI-Platypus-0.55/xs/record_simple.c FFI-Platypus-0.55/xs/Record.xs FFI-Platypus-0.55/xs/ABI.xs FFI-Platypus-0.55/xs/windl.c FFI-Platypus-0.55/xs/record_opaque.c FFI-Platypus-0.55/xs/record_string.c FFI-Platypus-0.55/xs/complex.c FFI-Platypus-0.55/xs/meta.c FFI-Platypus-0.55/xs/custom.c FFI-Platypus-0.55/xs/perl_math_int64.c FFI-Platypus-0.55/xs/Closure.xs FFI-Platypus-0.55/xs/API.xs FFI-Platypus-0.55/xs/havepm.c FFI-Platypus-0.55/xs/closure.c FFI-Platypus-0.55/xs/names.c FFI-Platypus-0.55/xs/Type.xs FFI-Platypus-0.55/xs/ClosureData.xs FFI-Platypus-0.55/README FFI-Platypus-0.55/xt/ FFI-Platypus-0.55/xt/author/ FFI-Platypus-0.55/xt/author/version.t FFI-Platypus-0.55/xt/author/pod_coverage.t FFI-Platypus-0.55/xt/author/strict.t FFI-Platypus-0.55/xt/author/pod_spelling_system.t FFI-Platypus-0.55/xt/author/no_tabs.t FFI-Platypus-0.55/xt/author/pod_spelling_common.t FFI-Platypus-0.55/xt/author/pod.t FFI-Platypus-0.55/xt/author/eol.t FFI-Platypus-0.55/xt/release/ FFI-Platypus-0.55/xt/release/fixme.t FFI-Platypus-0.55/xt/release/changes.t FFI-Platypus-0.55/t/ FFI-Platypus-0.55/t/type_sint16.t FFI-Platypus-0.55/t/type_uint64.t FFI-Platypus-0.55/t/ffi_platypus.t FFI-Platypus-0.55/t/type_uint16.t FFI-Platypus-0.55/t/type_string.t FFI-Platypus-0.55/t/ffi_platypus_buffer.t FFI-Platypus-0.55/t/type_float.t FFI-Platypus-0.55/t/ffi_platypus_closure.t FFI-Platypus-0.55/t/type_opaque.t FFI-Platypus-0.55/t/ffi_platypus_declare.t FFI-Platypus-0.55/t/ffi_platypus_record.t FFI-Platypus-0.55/t/ffi_platypus_dl.t FFI-Platypus-0.55/t/ffi_platypus_memory.t FFI-Platypus-0.55/t/ffi_platypus_shareconfig.t FFI-Platypus-0.55/t/type_longdouble.t FFI-Platypus-0.55/t/type_sint8.t FFI-Platypus-0.55/t/ffi_platypus_lang.t FFI-Platypus-0.55/t/ffi_platypus_type_stringpointer.t FFI-Platypus-0.55/t/01_use.t FFI-Platypus-0.55/t/ffi_platypus_type_pointersizebuffer.t FFI-Platypus-0.55/t/type_complex_float.t FFI-Platypus-0.55/t/ffi_platypus_function.t FFI-Platypus-0.55/t/type_uint32.t FFI-Platypus-0.55/t/forks.t FFI-Platypus-0.55/t/type_record.t FFI-Platypus-0.55/t/ffi_platypus_api.t FFI-Platypus-0.55/t/ffi_platypus_record_tiearray.t FFI-Platypus-0.55/t/ffi_platypus_lang_asm.t FFI-Platypus-0.55/t/ffi/ FFI-Platypus-0.55/t/ffi/string.c FFI-Platypus-0.55/t/ffi/basic.c FFI-Platypus-0.55/t/ffi/color.c FFI-Platypus-0.55/t/ffi/sint8.c FFI-Platypus-0.55/t/ffi/memcmp4.c FFI-Platypus-0.55/t/ffi/uint64.c FFI-Platypus-0.55/t/ffi/uint32.c FFI-Platypus-0.55/t/ffi/float.c FFI-Platypus-0.55/t/ffi/longdouble.c FFI-Platypus-0.55/t/ffi/align_array.c FFI-Platypus-0.55/t/ffi/sint64.c FFI-Platypus-0.55/t/ffi/double.c FFI-Platypus-0.55/t/ffi/align.c FFI-Platypus-0.55/t/ffi/complex_double.c FFI-Platypus-0.55/t/ffi/sint32.c FFI-Platypus-0.55/t/ffi/complex_float.c FFI-Platypus-0.55/t/ffi/align_fixed.c FFI-Platypus-0.55/t/ffi/pointer.c FFI-Platypus-0.55/t/ffi/uint16.c FFI-Platypus-0.55/t/ffi/record.c FFI-Platypus-0.55/t/ffi/align_string.c FFI-Platypus-0.55/t/ffi/closure.c FFI-Platypus-0.55/t/ffi/sint16.c FFI-Platypus-0.55/t/ffi/uint8.c FFI-Platypus-0.55/t/ffi_platypus_lang_win32.t FFI-Platypus-0.55/t/type_complex_double.t FFI-Platypus-0.55/t/type_sint64.t FFI-Platypus-0.55/t/ffi_platypus_lang_c.t FFI-Platypus-0.55/t/threads.t FFI-Platypus-0.55/t/type_double.t FFI-Platypus-0.55/t/00_diag.t FFI-Platypus-0.55/t/type_uint8.t FFI-Platypus-0.55/t/type_sint32.t FFI-Platypus-0.55/Build.PL FFI-Platypus-0.55/META.yml FFI-Platypus-0.55/MANIFEST FFI-Platypus-0.55/include/ FFI-Platypus-0.55/include/ffi_platypus_call.h FFI-Platypus-0.55/include/ffi_platypus_guts.h FFI-Platypus-0.55/include/ffi_platypus.h FFI-Platypus-0.55/include/perl_math_int64.h FFI-Platypus-0.55/include/libtest.h FFI-Platypus-0.55/include/ppport.h FFI-Platypus-0.55/CONTRIBUTING FFI-Platypus-0.55/typemap FFI-Platypus-0.55/inc/ FFI-Platypus-0.55/inc/eg/ FFI-Platypus-0.55/inc/eg/small.c FFI-Platypus-0.55/inc/eg/complex.c FFI-Platypus-0.55/inc/run/ FFI-Platypus-0.55/inc/run/travis_cpan.pl FFI-Platypus-0.55/inc/run/test_examples.pl FFI-Platypus-0.55/inc/run/generate_record_accessor.pl FFI-Platypus-0.55/inc/run/readme.pl FFI-Platypus-0.55/inc/run/before_build.pl FFI-Platypus-0.55/inc/run/travis.pl FFI-Platypus-0.55/inc/run/after_build2.pl FFI-Platypus-0.55/inc/template/ FFI-Platypus-0.55/inc/template/accessor.tt FFI-Platypus-0.55/inc/template/accessor_wrapper.tt FFI-Platypus-0.55/inc/template/abi.c FFI-Platypus-0.55/inc/probe/ FFI-Platypus-0.55/inc/probe/bigendian.c FFI-Platypus-0.55/inc/probe/complex.c FFI-Platypus-0.55/inc/probe/longdouble.c FFI-Platypus-0.55/inc/probe/bigendian64.c FFI-Platypus-0.55/inc/probe/abi.c FFI-Platypus-0.55/inc/My/ FFI-Platypus-0.55/inc/My/MakeMaker.pm FFI-Platypus-0.55/inc/My/AutoConf.pm FFI-Platypus-0.55/inc/My/ShareConfig.pm FFI-Platypus-0.55/inc/My/LibTest.pm FFI-Platypus-0.55/inc/My/Dev.pm FFI-Platypus-0.55/inc/My/ModuleBuild.pm FFI-Platypus-0.55/inc/My/MakeMaker/ FFI-Platypus-0.55/inc/My/MakeMaker/Makefile.PL FFI-Platypus-0.55/inc/My/Probe.pm FFI-Platypus-0.55/SUPPORT FFI-Platypus-0.55/INSTALL Configuring P/PL/PLICEASE/FFI-Platypus-0.55.tar.gz with Build.PL >>> /data/fly2400/ap2400-300558/bin/perl-static Build.PL CONFIGURE + $args{extra_compiler_flags} = -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include + $args{extra_linker_flags} = -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi Adjusted lddlflags: - $Config{lddlflags} = -shared -O2 -fstack-protector + $Config{lddlflags} = -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -shared -O2 -fstack-protector Created MYMETA.yml and MYMETA.json Creating new 'Build' script for 'FFI-Platypus' version '0.55' PLICEASE/FFI-Platypus-0.55.tar.gz /data/fly2400/ap2400-300558/bin/perl-static Build.PL -- OK Running Build for P/PL/PLICEASE/FFI-Platypus-0.55.tar.gz >>> ./Build Checking for cc... gcc Checking for stdlib.h... yes Checking for stdint.h... yes Checking for sys/types.h... yes Checking for sys/stat.h... yes Checking for unistd.h... yes Checking for alloca.h... yes Checking for dlfcn.h... yes Checking for limits.h... yes Checking for stddef.h... yes Checking for wchar.h... yes Checking for signal.h... yes Checking for inttypes.h... yes Checking for windows.h... no Checking for sys/cygwin.h... no Checking for string.h... yes Checking for psapi.h... no Checking for stdio.h... yes Checking for stdbool.h... yes Checking for complex.h... yes Checking for stdlib.h... (cached) yes Checking for stdarg.h... yes Checking for string.h... (cached) yes Checking for float.h... yes Checking for assert.h... yes Checking for ctype.h... yes Checking for errno.h... yes Checking for limits.h... (cached) yes Checking for locale.h... yes Checking for math.h... yes Checking for setjmp.h... yes Checking for signal.h... (cached) yes Checking for stddef.h... (cached) yes Checking for stdio.h... (cached) yes Checking for time.h... yes Checking whether RTLD_LAZY is declared... yes Checking whether alloca is declared... yes Checking for dlopen in -lpthread... no Checking for dlopen in -lnsl... no Checking for dlopen in -ldl... yes Checking for size of char... yes Checking for compute result of (signed(char))... yes Checking for size of signed char... yes Checking for size of unsigned char... yes Checking for size of short... 2 Checking for compute result of (signed(short))... yes Checking for size of signed short... 2 Checking for size of unsigned short... 2 Checking for size of int... 4 Checking for compute result of (signed(int))... yes Checking for size of signed int... 4 Checking for size of unsigned int... 4 Checking for size of long... 8 Checking for compute result of (signed(long))... yes Checking for size of signed long... 8 Checking for size of unsigned long... 8 Checking for size of size_t... 8 Checking for compute result of (signed(size_t))... no Checking for size of float... 4 Checking for size of double... 8 Checking for size of bool... no Checking for size of _Bool... yes Checking for compute result of (signed(_Bool))... no Checking for size of long long... 8 Checking for compute result of (signed(long long))... yes Checking for size of signed long long... 8 Checking for size of unsigned long long... 8 Checking for size of dev_t... 8 Checking for compute result of (signed(dev_t))... no Checking for size of ino_t... 8 Checking for compute result of (signed(ino_t))... no Checking for size of mode_t... 4 Checking for compute result of (signed(mode_t))... no Checking for size of nlink_t... 8 Checking for compute result of (signed(nlink_t))... no Checking for size of uid_t... 4 Checking for compute result of (signed(uid_t))... no Checking for size of gid_t... 4 Checking for compute result of (signed(gid_t))... no Checking for size of off_t... 8 Checking for compute result of (signed(off_t))... no Checking for size of blksize_t... 8 Checking for compute result of (signed(blksize_t))... no Checking for size of blkcnt_t... 8 Checking for compute result of (signed(blkcnt_t))... no Checking for size of time_t... 8 Checking for compute result of (signed(time_t))... no Checking for size of int_least8_t... yes Checking for size of int_least16_t... 2 Checking for size of int_least32_t... 4 Checking for size of int_least64_t... 8 Checking for size of uint_least8_t... yes Checking for size of uint_least16_t... 2 Checking for size of uint_least32_t... 4 Checking for size of uint_least64_t... 8 Checking for size of ptrdiff_t... 8 Checking for compute result of (signed(ptrdiff_t))... no Checking for size of wchar_t... 4 Checking for compute result of (signed(wchar_t))... no Checking for size of wint_t... no Checking for stdlib.h... (cached) yes Checking for stdarg.h... (cached) yes Checking for string.h... (cached) yes Checking for float.h... (cached) yes Checking for assert.h... (cached) yes Checking for ctype.h... (cached) yes Checking for errno.h... (cached) yes Checking for limits.h... (cached) yes Checking for locale.h... (cached) yes Checking for math.h... (cached) yes Checking for setjmp.h... (cached) yes Checking for signal.h... (cached) yes Checking for stddef.h... (cached) yes Checking for stdio.h... (cached) yes Checking for time.h... (cached) yes Checking for sys/types.h... (cached) yes Checking for sys/stat.h... (cached) yes Checking for memory.h... yes Checking for strings.h... yes Checking for inttypes.h... (cached) yes Checking for stdint.h... (cached) yes Checking for unistd.h... (cached) yes Checking for align of void*... 8 Checking for align of float... 4 Checking for align of double... 8 Checking for align of long double... 16 Checking for align of float complex... no Checking for compute result of (__builtin_offsetof(struct align, bfloat_complex))... 4 Checking for align of double complex... no Checking for compute result of (__builtin_offsetof(struct align, bdouble_complex))... 8 Checking for align of int8_t... yes Checking for align of int16_t... 2 Checking for align of int32_t... 4 Checking for align of int64_t... 8 Checking for size of long double... 16 Checking for size of float complex... 8 Checking for size of double complex... 16 Checking for size of complex... 16 gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o inc/probe/abi.o inc/probe/abi.c gcc -fstack-protector -o inc/probe/abi inc/probe/abi.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi inc/probe/abi --test exit = 0 gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o inc/probe/bigendian.o inc/probe/bigendian.c gcc -fstack-protector -o inc/probe/bigendian inc/probe/bigendian.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi inc/probe/bigendian --test exit = 2 gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o inc/probe/bigendian64.o inc/probe/bigendian64.c gcc -fstack-protector -o inc/probe/bigendian64 inc/probe/bigendian64.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi inc/probe/bigendian64 --test exit = 2 gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o inc/probe/complex.o inc/probe/complex.c gcc -fstack-protector -o inc/probe/complex inc/probe/complex.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi inc/probe/complex --test exit = 2 gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o inc/probe/longdouble.o inc/probe/longdouble.c gcc -fstack-protector -o inc/probe/longdouble inc/probe/longdouble.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi inc/probe/longdouble --test exit = 0 probing for ABIs... gcc -E -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include .abi-probe-test/FSRc5u0vrh/ffitest.c gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -DTRY_FFI_ABI=FFI_DEFAULT_ABI -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o .abi-probe-test/FSRc5u0vrh/default_abi.o .abi-probe-test/FSRc5u0vrh/default_abi.c gcc -fstack-protector -o .abi-probe-test/FSRc5u0vrh/default_abi .abi-probe-test/FSRc5u0vrh/default_abi.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -DTRY_FFI_ABI=FFI_FASTCALL -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o .abi-probe-test/FSRc5u0vrh/fastcall.o .abi-probe-test/FSRc5u0vrh/fastcall.c gcc -fstack-protector -o .abi-probe-test/FSRc5u0vrh/fastcall .abi-probe-test/FSRc5u0vrh/fastcall.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -DTRY_FFI_ABI=FFI_PASCAL -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o .abi-probe-test/FSRc5u0vrh/pascal.o .abi-probe-test/FSRc5u0vrh/pascal.c gcc -fstack-protector -o .abi-probe-test/FSRc5u0vrh/pascal .abi-probe-test/FSRc5u0vrh/pascal.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -DTRY_FFI_ABI=FFI_REGISTER -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o .abi-probe-test/FSRc5u0vrh/register.o .abi-probe-test/FSRc5u0vrh/register.c gcc -fstack-protector -o .abi-probe-test/FSRc5u0vrh/register .abi-probe-test/FSRc5u0vrh/register.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -DTRY_FFI_ABI=FFI_STDCALL -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o .abi-probe-test/FSRc5u0vrh/stdcall.o .abi-probe-test/FSRc5u0vrh/stdcall.c gcc -fstack-protector -o .abi-probe-test/FSRc5u0vrh/stdcall .abi-probe-test/FSRc5u0vrh/stdcall.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -DTRY_FFI_ABI=FFI_SYSV -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o .abi-probe-test/FSRc5u0vrh/sysv.o .abi-probe-test/FSRc5u0vrh/sysv.c gcc -fstack-protector -o .abi-probe-test/FSRc5u0vrh/sysv .abi-probe-test/FSRc5u0vrh/sysv.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -DTRY_FFI_ABI=FFI_THISCALL -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o .abi-probe-test/FSRc5u0vrh/thiscall.o .abi-probe-test/FSRc5u0vrh/thiscall.c gcc -fstack-protector -o .abi-probe-test/FSRc5u0vrh/thiscall .abi-probe-test/FSRc5u0vrh/thiscall.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi gcc -Iinclude -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -DTRY_FFI_ABI=FFI_UNIX64 -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o .abi-probe-test/FSRc5u0vrh/unix64.o .abi-probe-test/FSRc5u0vrh/unix64.c gcc -fstack-protector -o .abi-probe-test/FSRc5u0vrh/unix64 .abi-probe-test/FSRc5u0vrh/unix64.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi found abi: default_abi = 2 found abi: fastcall = 4 found abi: pascal = 6 found abi: register = 7 found abi: stdcall = 5 found abi: sysv = 1 found abi: thiscall = 3 found abi: unix64 = 2 Building FFI-Platypus gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/closure.o xs/closure.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/complex.o xs/complex.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/custom.o xs/custom.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/havepm.o xs/havepm.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/meta.o xs/meta.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/names.o xs/names.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/perl_math_int64.o xs/perl_math_int64.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/record_opaque.o xs/record_opaque.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/record_simple.o xs/record_simple.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/record_string.o xs/record_string.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o xs/windl.o xs/windl.c gcc -Iinclude -Ixs -I/home/fly2400/ap2400-300558/lib/CORE -DVERSION="0.55" -DXS_VERSION="0.55" -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o lib/FFI/Platypus.o lib/FFI/Platypus.c ExtUtils::Mkbootstrap::Mkbootstrap('blib/arch/auto/FFI/Platypus/Platypus.bs') gcc -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -shared -O2 -fstack-protector -o blib/arch/auto/FFI/Platypus/Platypus.so lib/FFI/Platypus.o xs/closure.o xs/complex.o xs/custom.o xs/havepm.o xs/meta.o xs/names.o xs/perl_math_int64.o xs/record_opaque.o xs/record_simple.o xs/record_string.o xs/windl.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi PLICEASE/FFI-Platypus-0.55.tar.gz ./Build -- OK Running Build test >>> ./Build test verbose=1 gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/align.o t/ffi/align.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/align_array.o t/ffi/align_array.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/align_fixed.o t/ffi/align_fixed.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/align_string.o t/ffi/align_string.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/basic.o t/ffi/basic.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/closure.o t/ffi/closure.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/color.o t/ffi/color.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/complex_double.o t/ffi/complex_double.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/complex_float.o t/ffi/complex_float.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/double.o t/ffi/double.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/float.o t/ffi/float.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/longdouble.o t/ffi/longdouble.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/memcmp4.o t/ffi/memcmp4.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/pointer.o t/ffi/pointer.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/record.o t/ffi/record.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/sint16.o t/ffi/sint16.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/sint32.o t/ffi/sint32.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/sint64.o t/ffi/sint64.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/sint8.o t/ffi/sint8.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/string.o t/ffi/string.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/uint16.o t/ffi/uint16.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/uint32.o t/ffi/uint32.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/uint64.o t/ffi/uint64.c gcc -I/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/include -I/home/fly2400/ap2400-300558/lib/CORE -fPIC -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -c -D_REENTRANT -D_GNU_SOURCE -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-merge-constants -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -o t/ffi/uint8.o t/ffi/uint8.c gcc -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -shared -O2 -fstack-protector -o /data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/t/ffi/libtest.so t/ffi/align.o t/ffi/align_array.o t/ffi/align_fixed.o t/ffi/align_string.o t/ffi/basic.o t/ffi/closure.o t/ffi/color.o t/ffi/complex_double.o t/ffi/complex_float.o t/ffi/double.o t/ffi/float.o t/ffi/longdouble.o t/ffi/memcmp4.o t/ffi/pointer.o t/ffi/record.o t/ffi/sint16.o t/ffi/sint32.o t/ffi/sint64.o t/ffi/sint8.o t/ffi/string.o t/ffi/uint16.o t/ffi/uint32.o t/ffi/uint64.o t/ffi/uint8.o -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi # # # # ACTIVEPERL_CONFIG_DISABLE=1 # HARNESS_ACTIVE=1 # HARNESS_IS_VERBOSE=1 # HARNESS_VERSION=3.36 # LANG=en_US.UTF-8 # PERL5LIB=/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/blib/lib:/data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/blib/arch:inc:/data/fly2400/cpanfly-5.24/var/megalib:/data/fly2400/cpanfly-5.24/var/megalib # PERL5OPT= # PERL5_CPANPLUS_IS_RUNNING=28553 # PERL5_CPAN_IS_RUNNING=28553 # PERL5_CPAN_IS_RUNNING_IN_RECURSION=27037,28553 # PERL_DL_NONLAZY=1 # PERL_MM_USE_DEFAULT=1 # SHELL=/bin/sh # # # # PERL5LIB path # /data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/blib/lib # /data/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.55-s26dJr/blib/arch # inc # /data/fly2400/cpanfly-5.24/var/megalib # /data/fly2400/cpanfly-5.24/var/megalib # # # # perl 5.024000 # Alien::Base 0.042 # Alien::FFI 0.22 # Capture::Tiny 0.48 # Config::AutoConf 0.317 # ExtUtils::CBuilder 0.280225 # FFI::CheckLib 0.20 # File::ShareDir 1.116 # IPC::Cmd 1.02 # Module::Build 0.4224 # PkgConfig 0.21026 # Test::More 1.302140 # constant 1.33 # # # # Alien::FFI version = 0.22 # Alien::FFI->install_type = share # Alien::FFI->cflags = -I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include # Alien::FFI->libs = -L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi # Alien::FFI->dist_dir = /data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI # Alien::FFI->version = 3.2.1 # my_configure = %{configure} --disable-shared --enable-static --disable-builddir # # # # mb.args.extra_compiler_flags=-I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include # mb.args.extra_linker_flags=-L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi # config.lddlflags=-L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -shared -O2 -fstack-protector # ffi.platypus.memory.strdup_impl=c # # # # Types: # complex_double : complex, double complex # complex_float : float complex # longdouble : long double # sint16 : int16_t, int_least16_t, short, signed short # sint32 : int, int32_t, int_least32_t, signed int # sint64 : int64_t, int_least64_t, long, long long, signed long, signed long long # sint8 : char, int8_t, int_least8_t, signed char # uint16 : uint16_t, uint_least16_t, unsigned short, ushort # uint32 : gid_t, mode_t, uid_t, uint, uint32_t, uint_least32_t, unsigned int, wchar_t # uint64 : blkcnt_t, blksize_t, dev_t, ino_t, nlink_t, off_t, ptrdiff_t, size_t, time_t, uint64_t, uint_least64_t, ulong, unsigned long, unsigned long long # uint8 : bool, uchar, uint8_t, uint_least8_t, unsigned char # # # # ABIs: # default_abi 2 # fastcall 4 # pascal 6 # register 7 # stdcall 5 # sysv 1 # thiscall 3 # unix64 2 # # # # Probes: # longdouble 1 # abi 1 # # # # CPU Info: # model name : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz # flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc up rep_good nopl xtopology nonstop_tsc pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx lahf_lm # address sizes : 46 bits physical, 48 bits virtual # # # # No LSB modules are available. # Distributor ID: Ubuntu # Description: Ubuntu 12.04 LTS # Release: 12.04 # Codename: precise # # # t/00_diag.t .............................. 1..1 ok 1 - okay ok t/01_use.t ............................... ok 1 - require FFI::Platypus; ok 2 - require FFI::Platypus::API; ok 3 - require FFI::Platypus::Buffer; ok 4 - require FFI::Platypus::DL; ok 5 - require FFI::Platypus::Declare; ok 6 - require FFI::Platypus::Lang; ok 7 - require FFI::Platypus::Lang::ASM; ok 8 - require FFI::Platypus::Lang::C; ok 9 - require FFI::Platypus::Lang::Win32; ok 10 - require FFI::Platypus::Memory; ok 11 - require FFI::Platypus::Record; ok 12 - require FFI::Platypus::Record::TieArray; ok 13 - require FFI::Platypus::ShareConfig; ok 14 - require FFI::Platypus::Type::PointerSizeBuffer; ok 15 - require FFI::Platypus::Type::StringPointer; ok 16 - test for FFI::Platypus ok 17 - test for FFI::Platypus::API ok 18 - test for FFI::Platypus::Buffer ok 19 - test for FFI::Platypus::DL ok 20 - test for FFI::Platypus::Declare ok 21 - test for FFI::Platypus::Lang ok 22 - test for FFI::Platypus::Lang::ASM ok 23 - test for FFI::Platypus::Lang::C ok 24 - test for FFI::Platypus::Lang::Win32 ok 25 - test for FFI::Platypus::Memory ok 26 - test for FFI::Platypus::Record ok 27 - test for FFI::Platypus::Record::TieArray ok 28 - test for FFI::Platypus::ShareConfig ok 29 - test for FFI::Platypus::Type::PointerSizeBuffer ok 30 - test for FFI::Platypus::Type::StringPointer 1..30 ok t/ffi_platypus.t ......................... # Subtest: constructor # Subtest: basic ok 1 - An object of class 'FFI::Platypus' isa 'FFI::Platypus' 1..1 ok 1 - basic # Subtest: no arguments ok 1 - 'FFI::Platypus.new' isa 'FFI::Platypus' ok 2 - ffi.lib 1..2 ok 2 - no arguments # Subtest: with single lib ok 1 - 'FFI::Platypus.new' isa 'FFI::Platypus' ok 2 - ffi.lib 1..2 ok 3 - with single lib # Subtest: with multiple lib ok 1 - 'FFI::Platypus.new' isa 'FFI::Platypus' ok 2 - ffi.lib 1..2 ok 4 - with multiple lib 1..4 ok 1 - constructor # Subtest: abi ok 1 - has a default ABI # Subtest: pascal ok 1 - string ok 2 - integer 1..2 ok 2 - pascal # Subtest: thiscall ok 1 - string ok 2 - integer 1..2 ok 3 - thiscall # Subtest: default_abi ok 1 - string ok 2 - integer 1..2 ok 4 - default_abi # Subtest: register ok 1 - string ok 2 - integer 1..2 ok 5 - register # Subtest: fastcall ok 1 - string ok 2 - integer 1..2 ok 6 - fastcall # Subtest: sysv ok 1 - string ok 2 - integer 1..2 ok 7 - sysv # Subtest: stdcall ok 1 - string ok 2 - integer 1..2 ok 8 - stdcall # Subtest: unix64 ok 1 - string ok 2 - integer 1..2 ok 9 - unix64 # Subtest: bogus ok 1 - string ok 2 - integer 1..2 ok 10 - bogus 1..10 ok 2 - abi # Subtest: alignof # Subtest: ffi types ok 1 - alignof sint8 = 1 ok 2 - alignof sint8 [2] = 1 ok 3 - alignof sint8 * = 8 ok 4 - alignof custom_sint8 = 1 ok 5 - alignof uint8 = 1 ok 6 - alignof uint8 [2] = 1 ok 7 - alignof uint8 * = 8 ok 8 - alignof custom_uint8 = 1 ok 9 - alignof sint16 = 2 ok 10 - alignof sint16 [2] = 2 ok 11 - alignof sint16 * = 8 ok 12 - alignof custom_sint16 = 2 ok 13 - alignof uint16 = 2 ok 14 - alignof uint16 [2] = 2 ok 15 - alignof uint16 * = 8 ok 16 - alignof custom_uint16 = 2 ok 17 - alignof sint32 = 4 ok 18 - alignof sint32 [2] = 4 ok 19 - alignof sint32 * = 8 ok 20 - alignof custom_sint32 = 4 ok 21 - alignof uint32 = 4 ok 22 - alignof uint32 [2] = 4 ok 23 - alignof uint32 * = 8 ok 24 - alignof custom_uint32 = 4 ok 25 - alignof sint64 = 8 ok 26 - alignof sint64 [2] = 8 ok 27 - alignof sint64 * = 8 ok 28 - alignof custom_sint64 = 8 ok 29 - alignof uint64 = 8 ok 30 - alignof uint64 [2] = 8 ok 31 - alignof uint64 * = 8 ok 32 - alignof custom_uint64 = 8 ok 33 - alignof float = 4 ok 34 - alignof float [2] = 4 ok 35 - alignof float * = 8 ok 36 - alignof custom_float = 4 ok 37 - alignof double = 8 ok 38 - alignof double [2] = 8 ok 39 - alignof double * = 8 ok 40 - alignof custom_double = 8 ok 41 - alignof opaque = 8 ok 42 - alignof opaque [2] = 8 ok 43 - alignof opaque * = 8 ok 44 - alignof custom_opaque = 8 ok 45 - alignof string = 8 1..45 ok 1 - ffi types # Subtest: aliases ok 1 - alignof ushort = 2 ok 2 - alignof foo = 2 1..2 ok 2 - aliases # Subtest: closure ok 1 - sizeof closure_t = 8 1..1 ok 3 - closure # Subtest: record ok 1 - generic record alignment not supported # cannot determine alignment of record at t/ffi_platypus.t line 123. 1..1 ok 4 - record 1..4 ok 3 - alignof # Subtest: custom type # Subtest: float ok 1 - ffi.custom_type 1 # {'float_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'float_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl'}} 1..6 ok 1 - float # Subtest: double ok 1 - ffi.custom_type 1 # {'double_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'double_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl'}} 1..6 ok 2 - double # Subtest: opaque ok 1 - ffi.custom_type 1 # {'opaque_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'opaque_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl'}} 1..6 ok 3 - opaque # Subtest: uint8 ok 1 - ffi.custom_type 1 # {'uint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'uint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl'}} 1..6 ok 4 - uint8 # Subtest: sint8 ok 1 - ffi.custom_type 1 # {'sint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'sint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl'}} 1..6 ok 5 - sint8 # Subtest: uint16 ok 1 - ffi.custom_type 1 # {'uint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'uint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl'}} 1..6 ok 6 - uint16 # Subtest: sint16 ok 1 - ffi.custom_type 1 # {'sint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'sint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl'}} 1..6 ok 7 - sint16 # Subtest: uint32 ok 1 - ffi.custom_type 1 # {'uint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'uint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl'}} 1..6 ok 8 - uint32 # Subtest: sint32 ok 1 - ffi.custom_type 1 # {'sint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'sint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl'}} 1..6 ok 9 - sint32 # Subtest: uint64 ok 1 - ffi.custom_type 1 # {'uint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'uint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl'}} 1..6 ok 10 - uint64 # Subtest: sint64 ok 1 - ffi.custom_type 1 # {'sint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl'}} ok 2 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl'}} ok 3 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl'}} ok 4 - ffi.custom_type 1 # {'sint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl'}} ok 5 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl'}} ok 6 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl'}} 1..6 ok 11 - sint64 1..11 ok 4 - custom type # Subtest: find lib # Subtest: find_lib ok 1 - found f0 = 139728362928576 1..1 ok 1 - find_lib # Subtest: external ok 1 - ffi.find_symbol(f0) = 139728362928576 ok 2 - ffi.find_symbol(bogus) = undef 1..2 ok 2 - external # Subtest: internal ok 1 - ffi.find_symbol(printf) = 139728389998096 ok 2 - ffi.find_symbol(bogus) = undef 1..2 ok 3 - internal 1..3 ok 5 - find lib # Subtest: find symbol # Subtest: external ok 1 - ffi.find_symbol(f0) = 139728362928576 ok 2 - ffi.find_symbol(bogus) = undef 1..2 ok 1 - external # Subtest: internal ok 1 - ffi.find_symbol(printf) = 139728389998096 ok 2 - ffi.find_symbol(bogus) = undef 1..2 ok 2 - internal 1..2 ok 6 - find symbol # Subtest: lib # Subtest: basic ok 1 - exists t/ffi/libtest.so ok 2 - ffi.lib (set) ok 3 - ffi.lib (get) 1..3 ok 1 - basic # Subtest: undef # Subtest: baseline ok 1 1..1 ok 1 - baseline # Subtest: lib => [undef] ok 1 1..1 ok 2 - lib => [undef] # Subtest: lib => undef ok 1 1..1 ok 3 - lib => undef 1..3 ok 2 - undef 1..2 ok 7 - lib # Subtest: sizeof # Subtest: integers ok 1 - sizeof uint8 = 1 ok 2 - sizeof uint16 = 2 ok 3 - sizeof uint32 = 4 ok 4 - sizeof uint64 = 8 ok 5 - sizeof sint8 = 1 ok 6 - sizeof sint16 = 2 ok 7 - sizeof sint32 = 4 ok 8 - sizeof sint64 = 8 1..8 ok 1 - integers # Subtest: floats ok 1 - sizeof float = 4 ok 2 - sizeof double = 8 1..2 ok 2 - floats # Subtest: pointers ok 1 - sizeof opaque = 8 ok 2 - sizeof uint8* = 8 ok 3 - sizeof uint16* = 8 ok 4 - sizeof uint32* = 8 ok 5 - sizeof uint64* = 8 ok 6 - sizeof sint8* = 8 ok 7 - sizeof sint16* = 8 ok 8 - sizeof sint32* = 8 ok 9 - sizeof sint64* = 8 ok 10 - sizeof float* = 8 ok 11 - sizeof double* = 8 ok 12 - sizeof opaque* = 8 ok 13 - sizeof string = 8 ok 14 - sizeof (int)->int = 8 1..14 ok 3 - pointers # Subtest: arrays ok 1 - sizeof uint8 [32] = 1 ok 2 - sizeof uint8 [32] = 2 ok 3 - sizeof uint8 [32] = 3 ok 4 - sizeof uint8 [32] = 4 ok 5 - sizeof uint8 [32] = 5 ok 6 - sizeof uint8 [32] = 6 ok 7 - sizeof uint8 [32] = 7 ok 8 - sizeof uint8 [32] = 8 ok 9 - sizeof uint8 [32] = 9 ok 10 - sizeof uint8 [32] = 10 ok 11 - sizeof uint16 [32] = 2 ok 12 - sizeof uint16 [32] = 4 ok 13 - sizeof uint16 [32] = 6 ok 14 - sizeof uint16 [32] = 8 ok 15 - sizeof uint16 [32] = 10 ok 16 - sizeof uint16 [32] = 12 ok 17 - sizeof uint16 [32] = 14 ok 18 - sizeof uint16 [32] = 16 ok 19 - sizeof uint16 [32] = 18 ok 20 - sizeof uint16 [32] = 20 ok 21 - sizeof uint32 [32] = 4 ok 22 - sizeof uint32 [32] = 8 ok 23 - sizeof uint32 [32] = 12 ok 24 - sizeof uint32 [32] = 16 ok 25 - sizeof uint32 [32] = 20 ok 26 - sizeof uint32 [32] = 24 ok 27 - sizeof uint32 [32] = 28 ok 28 - sizeof uint32 [32] = 32 ok 29 - sizeof uint32 [32] = 36 ok 30 - sizeof uint32 [32] = 40 ok 31 - sizeof uint64 [32] = 8 ok 32 - sizeof uint64 [32] = 16 ok 33 - sizeof uint64 [32] = 24 ok 34 - sizeof uint64 [32] = 32 ok 35 - sizeof uint64 [32] = 40 ok 36 - sizeof uint64 [32] = 48 ok 37 - sizeof uint64 [32] = 56 ok 38 - sizeof uint64 [32] = 64 ok 39 - sizeof uint64 [32] = 72 ok 40 - sizeof uint64 [32] = 80 ok 41 - sizeof sint8 [32] = 1 ok 42 - sizeof sint8 [32] = 2 ok 43 - sizeof sint8 [32] = 3 ok 44 - sizeof sint8 [32] = 4 ok 45 - sizeof sint8 [32] = 5 ok 46 - sizeof sint8 [32] = 6 ok 47 - sizeof sint8 [32] = 7 ok 48 - sizeof sint8 [32] = 8 ok 49 - sizeof sint8 [32] = 9 ok 50 - sizeof sint8 [32] = 10 ok 51 - sizeof sint16 [32] = 2 ok 52 - sizeof sint16 [32] = 4 ok 53 - sizeof sint16 [32] = 6 ok 54 - sizeof sint16 [32] = 8 ok 55 - sizeof sint16 [32] = 10 ok 56 - sizeof sint16 [32] = 12 ok 57 - sizeof sint16 [32] = 14 ok 58 - sizeof sint16 [32] = 16 ok 59 - sizeof sint16 [32] = 18 ok 60 - sizeof sint16 [32] = 20 ok 61 - sizeof sint32 [32] = 4 ok 62 - sizeof sint32 [32] = 8 ok 63 - sizeof sint32 [32] = 12 ok 64 - sizeof sint32 [32] = 16 ok 65 - sizeof sint32 [32] = 20 ok 66 - sizeof sint32 [32] = 24 ok 67 - sizeof sint32 [32] = 28 ok 68 - sizeof sint32 [32] = 32 ok 69 - sizeof sint32 [32] = 36 ok 70 - sizeof sint32 [32] = 40 ok 71 - sizeof sint64 [32] = 8 ok 72 - sizeof sint64 [32] = 16 ok 73 - sizeof sint64 [32] = 24 ok 74 - sizeof sint64 [32] = 32 ok 75 - sizeof sint64 [32] = 40 ok 76 - sizeof sint64 [32] = 48 ok 77 - sizeof sint64 [32] = 56 ok 78 - sizeof sint64 [32] = 64 ok 79 - sizeof sint64 [32] = 72 ok 80 - sizeof sint64 [32] = 80 ok 81 - sizeof float [32] = 4 ok 82 - sizeof float [32] = 8 ok 83 - sizeof float [32] = 12 ok 84 - sizeof float [32] = 16 ok 85 - sizeof float [32] = 20 ok 86 - sizeof float [32] = 24 ok 87 - sizeof float [32] = 28 ok 88 - sizeof float [32] = 32 ok 89 - sizeof float [32] = 36 ok 90 - sizeof float [32] = 40 ok 91 - sizeof double [32] = 8 ok 92 - sizeof double [32] = 16 ok 93 - sizeof double [32] = 24 ok 94 - sizeof double [32] = 32 ok 95 - sizeof double [32] = 40 ok 96 - sizeof double [32] = 48 ok 97 - sizeof double [32] = 56 ok 98 - sizeof double [32] = 64 ok 99 - sizeof double [32] = 72 ok 100 - sizeof double [32] = 80 ok 101 - sizeof opaque [32] = 8 ok 102 - sizeof opaque [32] = 16 ok 103 - sizeof opaque [32] = 24 ok 104 - sizeof opaque [32] = 32 ok 105 - sizeof opaque [32] = 40 ok 106 - sizeof opaque [32] = 48 ok 107 - sizeof opaque [32] = 56 ok 108 - sizeof opaque [32] = 64 ok 109 - sizeof opaque [32] = 72 ok 110 - sizeof opaque [32] = 80 1..110 ok 4 - arrays # Subtest: custom_type ok 1 - sizeof my_uint8 = 1 ok 2 - sizeof my_uint16 = 2 ok 3 - sizeof my_uint32 = 4 ok 4 - sizeof my_uint64 = 8 ok 5 - sizeof my_sint8 = 1 ok 6 - sizeof my_sint16 = 2 ok 7 - sizeof my_sint32 = 4 ok 8 - sizeof my_sint64 = 8 ok 9 - sizeof my_float = 4 ok 10 - sizeof my_double = 8 ok 11 - sizeof my_opaque = 8 1..11 ok 5 - custom_type 1..5 ok 8 - sizeof # Subtest: type # Subtest: simple type ok 1 - ffi.type(sint8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' 1..2 ok 1 - simple type # Subtest: aliased type ok 1 - ffi.type(sint8 => my_integer_8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 4 - ffi.types returns my_integer_8 1..4 ok 2 - aliased type # Subtest: ffi basic types # Subtest: sint8 ok 1 - ffi.type(sint8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'scalar'} # 0 ok 3 - size = 1 1..3 ok 1 - sint8 # Subtest: uint8 ok 1 - ffi.type(uint8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'scalar'} # 0 ok 3 - size = 1 1..3 ok 2 - uint8 # Subtest: sint16 ok 1 - ffi.type(sint16) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'scalar'} # 0 ok 3 - size = 2 1..3 ok 3 - sint16 # Subtest: uint16 ok 1 - ffi.type(uint16) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'scalar'} # 0 ok 3 - size = 2 1..3 ok 4 - uint16 # Subtest: sint32 ok 1 - ffi.type(sint32) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar'} # 0 ok 3 - size = 4 1..3 ok 5 - sint32 # Subtest: uint32 ok 1 - ffi.type(uint32) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'scalar'} # 0 ok 3 - size = 4 1..3 ok 6 - uint32 # Subtest: sint64 ok 1 - ffi.type(sint64) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'scalar'} # 0 ok 3 - size = 8 1..3 ok 7 - sint64 # Subtest: uint64 ok 1 - ffi.type(uint64) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'scalar'} # 0 ok 3 - size = 8 1..3 ok 8 - uint64 # Subtest: float ok 1 - ffi.type(float) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'scalar'} # 0 ok 3 - size = 4 1..3 ok 9 - float # Subtest: double ok 1 - ffi.type(double) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'scalar'} # 0 ok 3 - size = 8 1..3 ok 10 - double # Subtest: opaque ok 1 - ffi.type(opaque) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'scalar'} # 0 ok 3 - size = 8 1..3 ok 11 - opaque # Subtest: string ok 1 - ffi.type(string) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'access' => 'ro','element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','fixed_size' => 0,'size' => 8,'type' => 'string'} # 0 ok 3 - size = 8 1..3 ok 12 - string # Subtest: longdouble ok 1 - ffi.type(longdouble) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 16,'element_type' => 'float','exotic' => 1,'ffi_type' => 'longdouble','size' => 16,'type' => 'scalar'} # 0 ok 3 - size = 16 1..3 ok 13 - longdouble 1..13 ok 3 - ffi basic types # Subtest: ffi pointer types # Subtest: sint8 * ok 1 - ffi.type(sint8 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 1 - sint8 * # Subtest: uint8 * ok 1 - ffi.type(uint8 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 2 - uint8 * # Subtest: sint16 * ok 1 - ffi.type(sint16 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 3 - sint16 * # Subtest: uint16 * ok 1 - ffi.type(uint16 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 4 - uint16 * # Subtest: sint32 * ok 1 - ffi.type(sint32 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 5 - sint32 * # Subtest: uint32 * ok 1 - ffi.type(uint32 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 6 - uint32 * # Subtest: sint64 * ok 1 - ffi.type(sint64 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 7 - sint64 * # Subtest: uint64 * ok 1 - ffi.type(uint64 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 8 - uint64 * # Subtest: float * ok 1 - ffi.type(float *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 9 - float * # Subtest: double * ok 1 - ffi.type(double *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 10 - double * # Subtest: opaque * ok 1 - ffi.type(opaque *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 11 - opaque * # Subtest: string * 1..0 # SKIP ME GRIMLOCK SAY STRING CAN NO BE POINTER ok 12 # skip ME GRIMLOCK SAY STRING CAN NO BE POINTER # Subtest: longdouble * ok 1 - ffi.type(longdouble *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 8,'type' => 'pointer'} # 0 ok 3 - size = 8 1..3 ok 13 - longdouble * 1..13 ok 4 - ffi pointer types # Subtest: ffi array types # Subtest: sint8 [5] ok 1 - ffi.type(sint8 [5]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 5,'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 5,'type' => 'array'} # 0 ok 3 - size = 5 ok 4 - size = 5 1..4 ok 1 - sint8 [5] # Subtest: uint8 [7] ok 1 - ffi.type(uint8 [7]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 7,'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 7,'type' => 'array'} # 0 ok 3 - size = 7 ok 4 - size = 7 1..4 ok 2 - uint8 [7] # Subtest: sint16 [9] ok 1 - ffi.type(sint16 [9]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 9,'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 18,'type' => 'array'} # 0 ok 3 - size = 18 ok 4 - size = 9 1..4 ok 3 - sint16 [9] # Subtest: uint16 [11] ok 1 - ffi.type(uint16 [11]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 11,'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 22,'type' => 'array'} # 0 ok 3 - size = 22 ok 4 - size = 11 1..4 ok 4 - uint16 [11] # Subtest: sint32 [13] ok 1 - ffi.type(sint32 [13]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 13,'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 52,'type' => 'array'} # 0 ok 3 - size = 52 ok 4 - size = 13 1..4 ok 5 - sint32 [13] # Subtest: uint32 [15] ok 1 - ffi.type(uint32 [15]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 15,'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 60,'type' => 'array'} # 0 ok 3 - size = 60 ok 4 - size = 15 1..4 ok 6 - uint32 [15] # Subtest: sint64 [17] ok 1 - ffi.type(sint64 [17]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 17,'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 136,'type' => 'array'} # 0 ok 3 - size = 136 ok 4 - size = 17 1..4 ok 7 - sint64 [17] # Subtest: uint64 [19] ok 1 - ffi.type(uint64 [19]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 19,'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 152,'type' => 'array'} # 0 ok 3 - size = 152 ok 4 - size = 19 1..4 ok 8 - uint64 [19] # Subtest: float [21] ok 1 - ffi.type(float [21]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 21,'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 84,'type' => 'array'} # 0 ok 3 - size = 84 ok 4 - size = 21 1..4 ok 9 - float [21] # Subtest: double [23] ok 1 - ffi.type(double [23]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 23,'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 184,'type' => 'array'} # 0 ok 3 - size = 184 ok 4 - size = 23 1..4 ok 10 - double [23] # Subtest: opaque [25] ok 1 - ffi.type(opaque [25]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 25,'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 200,'type' => 'array'} # 0 ok 3 - size = 200 ok 4 - size = 25 1..4 ok 11 - opaque [25] # Subtest: string [27] 1..0 # SKIP ME GRIMLOCK SAY STRING CAN NO BE ARRAY ok 12 # skip ME GRIMLOCK SAY STRING CAN NO BE ARRAY # Subtest: longdouble [29] ok 1 - ffi.type(longdouble [29]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 29,'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 464,'type' => 'array'} # 0 ok 3 - size = 464 ok 4 - size = 29 1..4 ok 13 - longdouble [29] 1..13 ok 5 - ffi array types # Subtest: closure types ok 1 - (int)->int is a legal closure type # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','signature' => [[{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar'}],{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar'}],'size' => 8,'type' => 'closure'} # 0 ok 2 # skip arrays not currently supported as closure argument types ok 3 - inline closure illegal ok 4 - argument type closure illegal ok 5 - return type closure illegal ok 6 - a more complicated closure # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','signature' => [[{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar'},{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar'},{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar'},{'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'scalar'},{'access' => 'ro','element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','fixed_size' => 0,'size' => 8,'type' => 'string'},{'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'scalar'}],{'element_size' => 1,'element_type' => 'void','ffi_type' => 'void','size' => 1,'type' => 'scalar'}],'size' => 8,'type' => 'closure'} # 0 1..6 ok 6 - closure types # Subtest: record # {'element_type' => 'opaque','ffi_type' => 'pointer','ref' => 0,'size' => 1,'type' => 'record'} # 0 # {'element_type' => 'opaque','ffi_type' => 'pointer','ref' => 0,'size' => 32,'type' => 'record'} # 0 ok 1 - sizeof my_record_1 = 1 ok 2 - sizeof my_record_32 = 32 # {'element_type' => 'opaque','ffi_type' => 'pointer','ref' => 1,'size' => 22,'type' => 'record'} # 0 # {'element_type' => 'opaque','ffi_type' => 'pointer','ref' => 1,'size' => 44,'type' => 'record'} # 0 ok 3 - sizeof my_record_22 = 22 ok 4 - sizeof my_record_44 = 44 1..4 ok 7 - record # Subtest: string # Subtest: string ok 1 - sizeof string = 8 ok 2 - not fixed size ok 3 - access = ro # {'access' => 'ro','element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','fixed_size' => 0,'size' => 8,'type' => 'string'} # 0 1..3 ok 1 - string # Subtest: string_rw ok 1 - sizeof string_rw = 8 ok 2 - not fixed size ok 3 - access = rw # {'access' => 'rw','element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','fixed_size' => 0,'size' => 8,'type' => 'string'} # 0 1..3 ok 2 - string_rw # Subtest: string_ro ok 1 - sizeof string_ro = 8 ok 2 - not fixed size ok 3 - access = ro # {'access' => 'ro','element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','fixed_size' => 0,'size' => 8,'type' => 'string'} # 0 1..3 ok 3 - string_ro # Subtest: string rw ok 1 - sizeof string rw = 8 ok 2 - not fixed size ok 3 - access = rw # {'access' => 'rw','element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','fixed_size' => 0,'size' => 8,'type' => 'string'} # 0 1..3 ok 4 - string rw # Subtest: string ro ok 1 - sizeof string ro = 8 ok 2 - not fixed size ok 3 - access = ro # {'access' => 'ro','element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','fixed_size' => 0,'size' => 8,'type' => 'string'} # 0 1..3 ok 5 - string ro # Subtest: string (10) ok 1 - sizeof string (10) = 10 ok 2 - fixed size ok 3 - access = rw # {'access' => 'rw','element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','fixed_size' => 1,'size' => 10,'type' => 'string'} # 0 1..3 ok 6 - string (10) # Subtest: string(10) ok 1 - sizeof string(10) = 10 ok 2 - fixed size ok 3 - access = rw # {'access' => 'rw','element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','fixed_size' => 1,'size' => 10,'type' => 'string'} # 0 1..3 ok 7 - string(10) 1..7 ok 8 - string # Subtest: private # Subtest: void ok 1 - type = FFI::Platypus::Type->new(void) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = void 1..3 ok 1 - void # Subtest: uint8 ok 1 - type = FFI::Platypus::Type->new(uint8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = uint8 1..3 ok 2 - uint8 # Subtest: sint8 ok 1 - type = FFI::Platypus::Type->new(sint8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = sint8 1..3 ok 3 - sint8 # Subtest: uint16 ok 1 - type = FFI::Platypus::Type->new(uint16) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = uint16 1..3 ok 4 - uint16 # Subtest: sint16 ok 1 - type = FFI::Platypus::Type->new(sint16) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = sint16 1..3 ok 5 - sint16 # Subtest: uint32 ok 1 - type = FFI::Platypus::Type->new(uint32) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = uint32 1..3 ok 6 - uint32 # Subtest: sint32 ok 1 - type = FFI::Platypus::Type->new(sint32) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = sint32 1..3 ok 7 - sint32 # Subtest: uint64 ok 1 - type = FFI::Platypus::Type->new(uint64) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = uint64 1..3 ok 8 - uint64 # Subtest: sint64 ok 1 - type = FFI::Platypus::Type->new(sint64) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = sint64 1..3 ok 9 - sint64 # Subtest: float ok 1 - type = FFI::Platypus::Type->new(float) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = float 1..3 ok 10 - float # Subtest: double ok 1 - type = FFI::Platypus::Type->new(double) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = double 1..3 ok 11 - double # Subtest: longdouble ok 1 - type = FFI::Platypus::Type->new(longdouble) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = longdouble 1..3 ok 12 - longdouble # Subtest: opaque ok 1 - type = FFI::Platypus::Type->new(opaque) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = pointer 1..3 ok 13 - opaque # Subtest: pointer ok 1 - type = FFI::Platypus::Type->new(pointer) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = pointer 1..3 ok 14 - pointer # Subtest: string ok 1 - type = FFI::Platypus::Type->new(string) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = pointer 1..3 ok 15 - string 1..15 ok 9 - private 1..9 ok 9 - type # Subtest: class or instance method ok 1 - class and instance methods are identical # type: blkcnt_t # type: blksize_t # type: bool # type: char # type: dev_t # type: double # type: float # type: gid_t # type: ino_t # type: int # type: int16_t # type: int32_t # type: int64_t # type: int8_t # type: int_least16_t # type: int_least32_t # type: int_least64_t # type: int_least8_t # type: long # type: long double # type: long long # type: longdouble # type: mode_t # type: nlink_t # type: off_t # type: opaque # type: pointer # type: ptrdiff_t # type: short # type: signed char # type: signed int # type: signed long # type: signed long long # type: signed short # type: sint16 # type: sint32 # type: sint64 # type: sint8 # type: size_t # type: string # type: time_t # type: uchar # type: uid_t # type: uint # type: uint16 # type: uint16_t # type: uint32 # type: uint32_t # type: uint64 # type: uint64_t # type: uint8 # type: uint8_t # type: uint_least16_t # type: uint_least32_t # type: uint_least64_t # type: uint_least8_t # type: ulong # type: unsigned char # type: unsigned int # type: unsigned long # type: unsigned long long # type: unsigned short # type: ushort # type: void # type: wchar_t 1..1 ok 10 - class or instance method # Subtest: cast # Subtest: cast from string to pointer ok 1 - dynamic ok 2 - static 1..2 ok 1 - cast from string to pointer # Subtest: cast from pointer to string ok 1 - dynamic ok 2 - static 1..2 ok 2 - cast from pointer to string # Subtest: cast closure to opaque ok 1 - dynamic ok 2 - dynamic ok 3 - static ok 4 - static 1..4 ok 3 - cast closure to opaque 1..3 ok 11 - cast # Subtest: ignore_not_found # Subtest: ignore_not_found=undef ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 611. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 615. 1..4 ok 1 - ignore_not_found=undef # Subtest: ignore_not_found=0 ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 631. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 635. 1..4 ok 2 - ignore_not_found=0 # Subtest: ignore_not_found=0 (constructor) ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 649. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 653. 1..4 ok 3 - ignore_not_found=0 (constructor) # Subtest: ignore_not_found=1 ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function ok 3 - function no exception ok 4 - f2 is undefined ok 5 - attach no exception 1..5 ok 4 - ignore_not_found=1 # Subtest: ignore_not_found=1 (constructor) ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function ok 3 - function no exception ok 4 - f2 is undefined ok 5 - attach no exception 1..5 ok 5 - ignore_not_found=1 (constructor) # Subtest: ignore_not_found bool context ok 1 - f1 exists and resolved to boolean true ok 2 - f2 does not exist and resolved to boolean false 1..2 ok 6 - ignore_not_found bool context 1..6 ok 12 - ignore_not_found # Subtest: attach basic ok 1 - f0(22) = 22 ok 2 - f1(22) = 22 ok 3 - Roger::f1(22) = 22 ok 4 - f0_wrap(22) = 25 ok 5 - f0_wrap(22) = 25 1..5 ok 13 - attach basic # Subtest: attach void ok 1 - $i_ptr = 43 after f2(\$i_ptr) ok 2 - $i_ptr = 44 after f2_implicit(\$i_ptr) 1..2 ok 14 - attach void 1..14 ok t/ffi_platypus_api.t ..................... skipped: TODO t/ffi_platypus_buffer.t .................. # Subtest: simple ok 1 - ptr = 15876528 ok 2 - size = 16 ok 3 - scalar = me grimlock king 1..3 ok 1 - simple # Subtest: unicode ok 1 - ptr = 15636560 ok 2 - size = 12 ok 3 - scalar = привет 1..3 ok 2 - unicode 1..2 ok t/ffi_platypus_closure.t ................. # Subtest: basic ok 1 - An object of class 'FFI::Platypus::Closure' isa 'FFI::Platypus::Closure' ok 2 - closure.(1) = 2 ok 3 - An object of class 'FFI::Platypus::Closure' isa 'FFI::Platypus::Closure' ok 4 - closure.(1) = 3 ok 5 - An object of class 'FFI::Platypus::Closure' isa 'FFI::Platypus::Closure' ok 6 - closure.(1) = 3 ok 7 - able to call sticky 1..7 ok 1 - basic # Subtest: private ok 1 - An object of class 'FFI::Platypus::Closure' isa 'FFI::Platypus::Closure' ok 2 - closure.(1) = 2 1..2 ok 2 - private # Subtest: space ok 1 - good without space ok 2 - good with space 1..2 ok 3 - space # Subtest: die ok 1 ok 2 - does not exit # warning = 'omg i don't want to die! at t/ffi_platypus_closure.t line 50. # ' 1..2 ok 4 - die # Subtest: reuse ok 1 ok 2 1..2 ok 5 - reuse 1..5 ok t/ffi_platypus_declare.t ................. # Subtest: normal ok 1 - f0(22) = 22 ok 2 - f1(22) = 22 ok 3 - f0_wrap(22) = 25 ok 4 - f0_wrap2(22) = 25 1..4 ok 1 - normal # Subtest: with type aliases ok 1 - atoi("42") = 42 1..1 ok 2 - with type aliases # Subtest: simple closure test ok 1 - An object of class 'FFI::Platypus::Closure' isa 'FFI::Platypus::Closure' ok 2 - closure.(1) = 2 1..2 ok 3 - simple closure test # Subtest: abis ok 1 - has a default ABI # Subtest: thiscall ok 1 - string ok 2 - integer 1..2 ok 2 - thiscall # Subtest: stdcall ok 1 - string ok 2 - integer 1..2 ok 3 - stdcall # Subtest: default_abi ok 1 - string ok 2 - integer 1..2 ok 4 - default_abi # Subtest: sysv ok 1 - string ok 2 - integer 1..2 ok 5 - sysv # Subtest: fastcall ok 1 - string ok 2 - integer 1..2 ok 6 - fastcall # Subtest: pascal ok 1 - string ok 2 - integer 1..2 ok 7 - pascal # Subtest: unix64 ok 1 - string ok 2 - integer 1..2 ok 8 - unix64 # Subtest: register ok 1 - string ok 2 - integer 1..2 ok 9 - register # Subtest: bogus ok 1 - string ok 2 - integer 1..2 ok 10 - bogus 1..10 ok 4 - abis # Subtest: lang # Subtest: C ok 1 - int is an okay type ok 2 - foo_t is not an okay type # unknown type: foo_t at t/ffi_platypus_declare.t line 100. ok 3 - sint16 is an okay type 1..3 ok 1 - C # Subtest: Foo constructor ok 1 - int is not an okay type # unknown type: int at t/ffi_platypus_declare.t line 129. ok 2 - foo_t is an okay type ok 3 - sint16 is an okay type ok 4 - sizeof foo_t = 2 ok 5 - sizeof foo_t = 4 1..5 ok 2 - Foo constructor 1..2 ok 5 - lang # Subtest: sizeof ok 1 - sizeof uint32 = 4 ok 2 - sizeof uint32[2] = 8 1..2 ok 6 - sizeof # Subtest: sticky ok 1 - call_closure(2) = 4 1..1 ok 7 - sticky # Subtest: cast # Subtest: cast from string to pointer ok 1 - dynamic ok 2 - static 1..2 ok 1 - cast from string to pointer # Subtest: cast from pointer to string ok 1 - dynamic ok 2 - static 1..2 ok 2 - cast from pointer to string # Subtest: cast closure to opaque ok 1 - dynamic ok 2 - static 1..2 ok 3 - cast closure to opaque 1..3 ok 8 - cast 1..8 ok t/ffi_platypus_dl.t ...................... # Subtest: flags ok 1 - RTLD_PLATYPUS_DEFAULT is defined # RTLD_LOCAL 0000 0 # RTLD_PLATYPUS_DEFAULT 0001 1 # RTLD_LAZY 0001 1 # RTLD_NOW 0002 2 # RTLD_NOLOAD 0004 4 # RTLD_DEEPBIND 0008 8 # RTLD_GLOBAL 0100 256 # RTLD_NODELETE 1000 4096 1..1 ok 1 - flags # Subtest: dlopen # Subtest: bad library ok 1 - Returns undef on fail # dlerror = t/ffi/libbogus.so: cannot open shared object file: No such file or directory 1..1 ok 1 - bad library # Subtest: good library ok 1 - Returns handle on good # h = 30158208 1..1 ok 2 - good library 1..2 ok 2 - dlopen # Subtest: dlsym # Subtest: good symbol ok 1 - returns an address # address = 140397363104192 1..1 ok 1 - good symbol # Subtest: bad symbol ok 1 - bad symbol returns undef # dlerror = t/ffi/libtest.so: undefined symbol: bogus 1..1 ok 2 - bad symbol 1..2 ok 3 - dlsym 1..3 ok t/ffi_platypus_function.t ................ # Subtest: built in type ok 1 - ffi.function(f0, [uint8] => uint8) ok 2 - An object of class 'FFI::Platypus::Function' isa 'FFI::Platypus::Function' ok 3 - function.call(22) = 22 ok 4 - function.(22) = 22 1..4 ok 1 - built in type # Subtest: custom type ok 1 - ffi.function(f0, [my_int_8] => my_int_8) ok 2 - An object of class 'FFI::Platypus::Function' isa 'FFI::Platypus::Function' ok 3 - function.call(22) = 22 ok 4 - function.(22) = 22 1..4 ok 2 - custom type # Subtest: private ok 1 - FFI::Platypus::Function->new ok 2 - An object of class 'FFI::Platypus::Function' isa 'FFI::Platypus::Function' ok 3 - function.call(22) = 22 ok 4 - fooble(22) = 22 1..4 ok 3 - private 1..3 ok t/ffi_platypus_lang.t .................... # Subtest: Foo constructor ok 1 - int is not an okay type # unknown type: int at t/ffi_platypus_lang.t line 14. ok 2 - foo_t is an okay type ok 3 - sint16 is an okay type ok 4 - sizeof foo_t = 2 ok 5 - sizeof foo_t = 4 ok 6 1..6 ok 1 - Foo constructor # Subtest: Foo attribute ok 1 - int is not an okay type # unknown type: int at t/ffi_platypus_lang.t line 34. ok 2 - foo_t is an okay type ok 3 - sint16 is an okay type ok 4 - sizeof foo_t = 2 ok 5 - sizeof foo_t = 4 ok 6 1..6 ok 2 - Foo attribute # Subtest: MyLang::Roger ok 1 - int is not an okay type # unknown type: int at t/ffi_platypus_lang.t line 53. ok 2 - sizeof foo_t = 4 1..2 ok 3 - MyLang::Roger 1..3 ok t/ffi_platypus_lang_asm.t ................ # Subtest: ASM ok 1 - int is not an okay type # unknown type: int at t/ffi_platypus_lang_asm.t line 13. ok 2 - foo_t is not an okay type # unknown type: foo_t at t/ffi_platypus_lang_asm.t line 16. ok 3 - sint16 is an okay type ok 4 - unable to find unmangled name 1..4 ok 1 - ASM 1..1 ok t/ffi_platypus_lang_c.t .................. # Subtest: C ok 1 - int is an okay type ok 2 - foo_t is not an okay type # unknown type: foo_t at t/ffi_platypus_lang_c.t line 15. ok 3 - sint16 is an okay type ok 4 - unable to find unmangled name 1..4 ok 1 - C 1..1 ok t/ffi_platypus_lang_win32.t .............. # BOOL sint32 # BOOLEAN uint8 # BYTE uint8 # CCHAR sint8 # CHAR sint8 # COLORREF uint32 # DWORD uint32 # DWORD32 uint32 # DWORD64 uint64 # DWORDLONG uint64 # DWORD_PTR uint16 # FLOAT float # HACCEL opaque # HALF_PTR sint16 # HANDLE opaque # HBITMAP opaque # HBRUSH opaque # HCOLORSPACE opaque # HCONV opaque # HCONVLIST opaque # HCURSOR opaque # HDC opaque # HDDEDATA opaque # HDESK opaque # HDROP opaque # HDWP opaque # HENHMETAFILE opaque # HFILE sint32 # HFONT opaque # HGDIOBJ opaque # HGLOBAL opaque # HHOOK opaque # HICON opaque # HINSTANCE opaque # HKEY opaque # HKL opaque # HLOCAL opaque # HMENU opaque # HMETAFILE opaque # HMODULE opaque # HMONITOR opaque # HPALETTE opaque # HPEN opaque # HRESULT sint32 # HRGN opaque # HRSRC opaque # HSZ opaque # HWINSTA opaque # HWND opaque # INT sint32 # INT16 sint16 # INT32 sint32 # INT64 sint64 # INT8 sint8 # INT_PTR sint32 # LANGID uint16 # LCID uint32 # LCTYPE uint32 # LGRPID uint32 # LONG sint32 # LONG32 sint32 # LONG64 sint64 # LONGLONG sint64 # LONG_PTR sint16 # LPCSTR string # LPCVOID opaque # LPVOID opaque # LRESULT sint16 # PSTR string # PVOID opaque # QWORD uint64 # SC_HANDLE opaque # SC_LOCK opaque # SERVICE_STATUS_HANDLE opaque # SHORT sint16 # SIZE_T uint16 # SSIZE_T sint16 # UCHAR uint8 # UHALF_PTR uint16 # UINT16 uint16 # UINT32 uint32 # UINT64 uint64 # UINT8 uint8 # UINT_PTR uint32 # ULONG uint32 # ULONG32 uint32 # ULONG64 uint64 # ULONGLONG uint64 # ULONG_PTR uint16 # USHORT uint16 # USN sint64 # VOID void # WORD uint16 # WPARAM uint32 # blkcnt_t uint64 # blksize_t uint64 # bool uint8 # char sint8 # complex complex_double # dev_t uint64 # double complex complex_double # float complex complex_float # gid_t uint32 # ino_t uint64 # int sint32 # int16_t sint16 # int32_t sint32 # int64_t sint64 # int8_t sint8 # int_least16_t sint16 # int_least32_t sint32 # int_least64_t sint64 # int_least8_t sint8 # long sint64 # long double longdouble # long long sint64 # mode_t uint32 # nlink_t uint64 # off_t uint64 # ptrdiff_t uint64 # short sint16 # signed char sint8 # signed int sint32 # signed long sint64 # signed long long sint64 # signed short sint16 # size_t uint64 # time_t uint64 # uchar uint8 # uid_t uint32 # uint uint32 # uint16_t uint16 # uint32_t uint32 # uint64_t uint64 # uint8_t uint8 # uint_least16_t uint16 # uint_least32_t uint32 # uint_least64_t uint64 # uint_least8_t uint8 # ulong uint64 # unsigned char uint8 # unsigned int uint32 # unsigned long uint64 # unsigned long long uint64 # unsigned short uint16 # ushort uint16 # wchar_t uint32 ok 1 - good 1..1 ok t/ffi_platypus_memory.t .................. # Subtest: malloc calloc memset free ok 1 - malloc returns 23185728 ok 2 - calloc returns 25451392 ok 3 - string = yyyyxxxx ok 4 - free $ptr1 ok 5 - free $ptr2 1..5 ok 1 - malloc calloc memset free # Subtest: memcpy ok 1 - initial data copied ok 2 - copy of copy ok 3 - memcpy returns a pointer ok 4 - free $ptr1 ok 5 - free $ptr2 1..5 ok 2 - memcpy # Subtest: realloc ok 1 - realloc call ptr = 25479216 ok 2 - initial data copied ok 3 - realloc call ptr = 25497568 (2) ok 4 - after realloc data there ok 5 - final free 1..5 ok 3 - realloc # Subtest: strdup # strdup implementation = c ok 1 - string = this and ok 2 - free $ptr1 1..2 ok 4 - strdup 1..4 ok t/ffi_platypus_record.t .................. # Subtest: integer accessor ok 1 - An object of class 'Foo1' isa 'Foo1' ok 2 - foo._record_size = 8 ok 3 - foo.first = 1 ok 4 - foo.second = 2 ok 5 - foo.first = 22 ok 6 - foo.second = 42 ok 7 - foo.first = 3 ok 8 - foo.second = 4 1..8 ok 1 - integer accessor # Subtest: values match in C ok 1 - An object of class 'Color' isa 'Color' ok 2 - color.get_red = 50 ok 3 - color.get_green = 100 ok 4 - color.get_blue = 150 1..4 ok 2 - values match in C # Subtest: complex alignment ok 1 - An object of class 'Foo2' isa 'Foo2' ok 2 - uint64 = 512 ok 3 - sint64 = -512 ok 4 - uint32 = 1024 ok 5 - sint32 = -1024 ok 6 - uint16 = 2048 ok 7 - sint16 = -2048 ok 8 - uint8 = 48 ok 9 - sint8 = -48 ok 10 - float = 1.5 ok 11 - double = -1.5 ok 12 - get_opaque = 52491632 ok 13 - opaque = 52491632 ok 14 - get_opaque = undef ok 15 - opaque = undef 1..15 ok 3 - complex alignment # Subtest: same name ok 1 - two members of the same name not allowed # accessor/method foo already exists at t/ffi_platypus_record.t line 174. 1..1 ok 4 - same name # Subtest: array alignment ok 1 - An object of class 'Foo4' isa 'Foo4' # Subtest: unsigned 8 integer ok 1 - uint8 = 1,2,3 ok 2 - get_uint8 = 1,2,3 ok 3 - uint8(1) = 2 ok 4 - uint8 = 1,20,3 1..4 ok 2 - unsigned 8 integer # Subtest: signed 8 integer ok 1 - sint8 = -1,2,-3 ok 2 - get_sint8 = -1,2,-3 ok 3 - sint8(2) = -3 ok 4 - sint8 = -1,-20,-3 1..4 ok 3 - signed 8 integer # Subtest: unsigned 16 integer ok 1 - uint16 = 1,2,3 ok 2 - get_uint16 = 1,2,3 ok 3 - uint16(1) = 2 ok 4 - uint16 = 1,20,3 1..4 ok 4 - unsigned 16 integer # Subtest: signed 16 integer ok 1 - sint16 = -1,2,-3 ok 2 - get_sint16 = -1,2,-3 ok 3 - sint16(2) = -3 ok 4 - sint16 = -1,-20,-3 1..4 ok 5 - signed 16 integer # Subtest: unsigned 32 integer ok 1 - uint32 = 1,2,3 ok 2 - get_uint32 = 1,2,3 ok 3 - uint32(1) = 2 ok 4 - uint32 = 1,20,3 1..4 ok 6 - unsigned 32 integer # Subtest: signed 32 integer ok 1 - sint32 = -1,2,-3 ok 2 - get_sint32 = -1,2,-3 ok 3 - sint32(2) = -3 ok 4 - sint32 = -1,-20,-3 1..4 ok 7 - signed 32 integer # Subtest: unsigned 64 integer ok 1 - uint64 = 1,2,3 ok 2 - get_uint64 = 1,2,3 ok 3 - uint64(1) = 2 ok 4 - uint64 = 1,20,3 1..4 ok 8 - unsigned 64 integer # Subtest: signed 64 integer ok 1 - sint64 = -1,2,-3 ok 2 - get_sint64 = -1,2,-3 ok 3 - sint64(2) = -3 ok 4 - sint64 = -1,-20,-3 1..4 ok 9 - signed 64 integer # Subtest: float ok 1 - float = 1.5,0,-1.5 ok 2 ok 3 ok 4 ok 5 - float = 1.5,20,-1.5 1..5 ok 10 - float # Subtest: double ok 1 - double = 1.5,0,-1.5 ok 2 ok 3 ok 4 ok 5 - double = 1.5,20,-1.5 1..5 ok 11 - double # Subtest: opaque ok 1 - opaque = 52733920,undef,52720544 ok 2 - opaque = 52733920,52733920,52720544 ok 3 - opaque = undef,52733920,52720544 ok 4 ok 5 ok 6 1..6 ok 12 - opaque ok 13 - align = 8 ok 14 - align is positive 1..14 ok 5 - array alignment # Subtest: string ro ok 1 - An object of class 'Foo5' isa 'Foo5' ok 2 - foo.value = undef ok 3 - foo.get_value = undef ok 4 - foo.value = my value ok 5 - foo.get_value = my value ok 6 - value is ro # member is read only at t/ffi_platypus_record.t line 328. ok 7 - foo.value = undef ok 8 - foo.get_value = undef 1..8 ok 6 - string ro # Subtest: fixed string ok 1 - An object of class 'Foo6' isa 'Foo6' ok 2 - foo.value = "\0\0\0\0\0\0\0\0\0\0" ok 3 - foo.get_value = "" ok 4 - foo.value = "one two th" ok 5 - foo.value = 123456789\0 ok 6 - foo.get_value = 123456789 1..6 ok 7 - fixed string # Subtest: string rw ok 1 - An object of class 'Foo7' isa 'Foo7' ok 2 - foo.value = hi there ok 3 - foo.get_value = hi there ok 4 - foo.value = undef ok 5 - foo.get_value = undef ok 6 - foo.value = starscream!!! ok 7 - foo.get_value = starscream!!! 1..7 ok 8 - string rw 1..8 ok t/ffi_platypus_record_tiearray.t ......... ok 1 - An object of class 'Foo' isa 'Foo' ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 ok 33 ok 34 ok 35 ok 36 ok 37 ok 38 ok 39 ok 40 ok 41 ok 42 ok 43 ok 44 ok 45 1..45 ok t/ffi_platypus_shareconfig.t ............. # { # 'abi' => { # 'default_abi' => 2, # 'fastcall' => 4, # 'pascal' => 6, # 'register' => 7, # 'stdcall' => 5, # 'sysv' => 1, # 'thiscall' => 3, # 'unix64' => 2 # }, # 'align' => { # 'double' => 8, # 'double complex' => 8, # 'float' => 4, # 'float complex' => 4, # 'long double' => 16, # 'pointer' => 8, # 'sint16' => 2, # 'sint32' => 4, # 'sint64' => 8, # 'sint8' => 1, # 'uint16' => 2, # 'uint32' => 4, # 'uint64' => 8, # 'uint8' => 1 # }, # 'config_dlext' => [ # 'so' # ], # 'diag' => { # 'args' => { # 'extra_compiler_flags' => '-I/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include', # 'extra_linker_flags' => '-L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -lffi' # }, # 'config' => { # 'lddlflags' => '-L/data/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/../lib -shared -O2 -fstack-protector' # } # }, # 'probe' => { # 'abi' => 1, # 'longdouble' => 1 # }, # 'test-key' => 'test-value', # 'type_map' => { # 'blkcnt_t' => 'uint64', # 'blksize_t' => 'uint64', # 'bool' => 'uint8', # 'char' => 'sint8', # 'complex' => 'complex_double', # 'dev_t' => 'uint64', # 'double complex' => 'complex_double', # 'float complex' => 'complex_float', # 'gid_t' => 'uint32', # 'ino_t' => 'uint64', # 'int' => 'sint32', # 'int16_t' => 'sint16', # 'int32_t' => 'sint32', # 'int64_t' => 'sint64', # 'int8_t' => 'sint8', # 'int_least16_t' => 'sint16', # 'int_least32_t' => 'sint32', # 'int_least64_t' => 'sint64', # 'int_least8_t' => 'sint8', # 'long' => 'sint64', # 'long double' => 'longdouble', # 'long long' => 'sint64', # 'mode_t' => 'uint32', # 'nlink_t' => 'uint64', # 'off_t' => 'uint64', # 'ptrdiff_t' => 'uint64', # 'short' => 'sint16', # 'signed char' => 'sint8', # 'signed int' => 'sint32', # 'signed long' => 'sint64', # 'signed long long' => 'sint64', # 'signed short' => 'sint16', # 'size_t' => 'uint64', # 'time_t' => 'uint64', # 'uchar' => 'uint8', # 'uid_t' => 'uint32', # 'uint' => 'uint32', # 'uint16_t' => 'uint16', # 'uint32_t' => 'uint32', # 'uint64_t' => 'uint64', # 'uint8_t' => 'uint8', # 'uint_least16_t' => 'uint16', # 'uint_least32_t' => 'uint32', # 'uint_least64_t' => 'uint64', # 'uint_least8_t' => 'uint8', # 'ulong' => 'uint64', # 'unsigned char' => 'uint8', # 'unsigned int' => 'uint32', # 'unsigned long' => 'uint64', # 'unsigned long long' => 'uint64', # 'unsigned short' => 'uint16', # 'ushort' => 'uint16', # 'wchar_t' => 'uint32' # } # } # 0 ok 1 ok 2 1..2 ok t/ffi_platypus_type_pointersizebuffer.t .. ok 1 ok 2 ok 3 ok 4 ok 5 1..5 ok t/ffi_platypus_type_stringpointer.t ...... # Subtest: arg pass in ok 1 - not null ok 2 - \undef is null ok 3 - undef is null 1..3 ok 1 - arg pass in # Subtest: arg pass out ok 1 - not null string = hi there ok 2 - not null string = and another 1..2 ok 2 - arg pass out # Subtest: return value ok 1 - not null string = once more onto ok 2 - \null ok 3 - null 1..3 ok 3 - return value 1..3 ok Can't locate object method "tid" via package "threads" at /data/fly2400/cpanfly-5.24/var/megalib/Test2/Util.pm line 142. BEGIN failed--compilation aborted at t/forks.t line 4. Undefined subroutine &threads::_END called at (eval 7) line 1. END failed--call queue aborted at t/forks.t line 4. Can't locate object method "tid" via package "threads" at /data/fly2400/cpanfly-5.24/var/megalib/Test2/Util.pm line 142. END failed--call queue aborted at t/forks.t line 4. (in cleanup) Can't locate object method "tid" via package "threads" at /data/fly2400/cpanfly-5.24/var/megalib/Test2/Util.pm line 142 during global destruction. t/forks.t ................................ Dubious, test returned 22 (wstat 5632, 0x1600) No subtests run t/threads.t .............................. ok 1 - works in a thread ok 2 - works in main thread 1..2 ok t/type_complex_double.t .................. skipped: Test requires support for double complex t/type_complex_float.t ................... skipped: Test requires support for float complex t/type_double.t .......................... ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 # Subtest: custom type input ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_float.t ........................... ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 # Subtest: custom type input ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_longdouble.t ...................... # Subtest: with Math::LongDouble # Subtest: scalar ok 1 - An object of class 'Math::LongDouble' isa 'Math::LongDouble' ok 2 - add(1.5,2.5) = 4.0 1..2 ok 1 - scalar # Subtest: pointer ok 1 ok 2 ok 3 ok 4 ok 5 - An object of class 'Math::LongDouble' isa 'Math::LongDouble' ok 6 1..6 ok 2 - pointer # Subtest: array fixed ok 1 # [1.0e+00,2.0e+00,3.0e+00] ok 2 ok 3 ok 4 1..4 ok 3 - array fixed # Subtest: array var ok 1 # [1.0e+00,2.0e+00,3.0e+00] ok 2 ok 3 ok 4 1..4 ok 4 - array var # Subtest: array return # [1.0e+00,2.0e+00,3.0e+00] ok 1 ok 2 ok 3 1..3 ok 5 - array return 1..5 ok 1 - with Math::LongDouble # Subtest: without Math::LongDouble # You have Math::LongDouble, but for this test we are going to turn it off # Subtest: scalar ok 1 - add(1.5,2.5) = 4 1..1 ok 1 - scalar # Subtest: pointer ok 1 ok 2 ok 3 ok 4 ok 5 1..5 ok 2 - pointer # Subtest: array fixed ok 1 # [1,2,3] ok 2 ok 3 ok 4 1..4 ok 3 - array fixed # Subtest: array var ok 1 # [1,2,3] ok 2 ok 3 ok 4 1..4 ok 4 - array var # Subtest: array return # [1,2,3] ok 1 ok 2 ok 3 1..3 ok 5 - array return 1..5 ok 2 - without Math::LongDouble 1..2 ok t/type_opaque.t .......................... ok 1 - null = undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(44440768); getp() = 44440768 ok 6 - get($tmp); tmp = 44440768 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_null_in([undef,undef,undef]) ok 10 - aa_out() ok 11 - aa_null_out() ok 12 - ra_out() ok 13 - ra_null_out ok 14 - pp2p(\undef) = undef ok 15 - pp2p(\44489072) = 44489072 ok 16 - p2pp(undef) = \undef ok 17 - pp2p(44489072) = \44489072 ok 18 - call_closure(undef) = undef ok 19 - save = undef ok 20 - call_closure(\42958336) = 42958336 ok 21 - save = 42958336 # Subtest: custom type input ok 1 ok 2 1..2 ok 22 - custom type input # Subtest: custom type output ok 1 ok 2 1..2 ok 23 - custom type output 1..23 ok t/type_record.t .......................... # record size = 20 # Subtest: not a reference # Subtest: in # packed size = 20 ok 1 - get_value($packed) = 42 ok 2 - get_name($packed) = hi there ok 3 - is_null(undef) 1..3 ok 1 - in # Subtest: out # packed size = 20 ok 1 - get_value($packed) = 47 ok 2 - get_value($packed) = platypus ok 3 - null() = undef 1..3 ok 2 - out 1..2 ok 1 - not a reference # Subtest: is a reference # Subtest: in # packed size = 20 ok 1 - get_value(\$packed) = 42 ok 2 - get_name(\$packed) = hi there ok 3 - is_null(\undef) 1..3 ok 1 - in # Subtest: out # packed size = 31 ok 1 - An object of class 'My::FooRecord' isa 'My::FooRecord' ok 2 - packed.my_method = starscream ok 3 - get_value($packed) = 47 ok 4 - get_value($packed) = platypus ok 5 - null() = \undef 1..5 ok 2 - out 1..2 ok 2 - is a reference # Subtest: closure ok 1 - allow record type as arg ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 # error = record is read-only at t/type_record.t line 126. ok 8 ok 9 ok 10 ok 11 # error = record is read-only at t/type_record.t line 135. ok 12 ok 13 # error = record is read-only at t/type_record.t line 142. ok 14 ok 15 ok 16 # error = record is read-only at t/type_record.t line 151. ok 17 ok 18 ok 19 # error = record is read-only at t/type_record.t line 160. ok 20 ok 21 # error = record is read-only at t/type_record.t line 167. ok 22 ok 23 # error = record is read-only at t/type_record.t line 175. ok 24 ok 25 ok 26 # error = record is read-only at t/type_record.t line 184. ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 1..32 ok 3 - closure 1..3 ok t/type_sint16.t .......................... ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 # Subtest: custom type input ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_sint32.t .......................... ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 # Subtest: custom type input ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_sint64.t .......................... ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 # Subtest: custom type input ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_sint8.t ........................... ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 # Subtest: custom type input ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_string.t .......................... ok 1 - string_matches_foobarbaz(foobarbaz) = true ok 2 - string_matches_foobarbaz(foobarbaz) = false ok 3 - string_return_foobarbaz() = foobarbaz ok 4 - null() = undef ok 5 - is_null(undef) = 1 ok 6 - is_null() = 1 ok 7 - is_null("foo") = 0 ok 8 - $save = hey there ok 9 - $save = undef ok 10 - fixed_input_test(foobarbaz\0) ok 11 - fixed_input_is_null(undef) ok 12 - string_fixed_text(0) = zero ok 13 - string_fixed_text(1) = one ok 14 - string_fixed_text(2) = two ok 15 - string_fixed_text(3) = three ok 16 - fixed_output_null() ok 17 - save=zero 1..17 ok t/type_uint16.t .......................... ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 # Subtest: custom type input ok 1 ok 2 - custom_add(2,1) = 5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 4 1..2 ok 18 - custom type output # Subtest: custom type post ok 1 ok 2 - custom_add3(1,2) = 3 1..2 ok 19 - custom type post ok 20 - closure_pointer_is_null() = 1 1..20 ok t/type_uint32.t .......................... ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 # Subtest: custom type input ok 1 ok 2 - custom_add(2,1) = 5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 4 1..2 ok 18 - custom type output # Subtest: custom type post ok 1 ok 2 - custom_add3(1,2) = 3 1..2 ok 19 - custom type post ok 20 - closure_pointer_is_null() = 1 1..20 ok t/type_uint64.t .......................... ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 # Subtest: custom type input ok 1 ok 2 - custom_add(2,1) = 5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 4 1..2 ok 18 - custom type output # Subtest: custom type post ok 1 ok 2 - custom_add3(1,2) = 3 1..2 ok 19 - custom type post ok 20 - closure_pointer_is_null() = 1 1..20 ok t/type_uint8.t ........................... ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 # Subtest: custom type input ok 1 ok 2 - custom_add(2,1) = 5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 4 1..2 ok 18 - custom type output # Subtest: custom type post ok 1 ok 2 - custom_add3(1,2) = 3 1..2 ok 19 - custom type post ok 20 - closure_pointer_is_null() = 1 1..20 ok Test Summary Report ------------------- t/forks.t (Wstat: 5632 Tests: 0 Failed: 0) Non-zero exit status: 22 Parse errors: No plan found in TAP output Files=37, Tests=380, 10 wallclock secs ( 0.21 usr 0.12 sys + 7.12 cusr 1.88 csys = 9.33 CPU) Result: FAIL Failed 1/37 test programs. 0/380 subtests failed. PLICEASE/FFI-Platypus-0.55.tar.gz ./Build test verbose=1 -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports PLICEASE/FFI-Platypus-0.55.tar.gz VmSize: 352860 kB Finished 2018-08-31T02:04:19