ffi 1.16.3 → 1.17.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +42 -0
- data/Gemfile +9 -2
- data/README.md +1 -1
- data/Rakefile +17 -5
- data/lib/ffi/autopointer.rb +1 -9
- data/lib/ffi/dynamic_library.rb +34 -5
- data/lib/ffi/enum.rb +0 -1
- data/lib/ffi/function.rb +1 -1
- data/lib/ffi/io.rb +2 -2
- data/lib/ffi/library.rb +23 -23
- data/lib/ffi/platform/aarch64-linux/types.conf +74 -3
- data/lib/ffi/pointer.rb +6 -6
- data/lib/ffi/struct.rb +4 -4
- data/lib/ffi/struct_layout.rb +2 -2
- data/lib/ffi/struct_layout_builder.rb +8 -8
- data/lib/ffi/types.rb +51 -49
- data/lib/ffi/version.rb +1 -1
- data/sig/ffi/abstract_memory.rbs +165 -0
- data/sig/ffi/auto_pointer.rbs +27 -0
- data/sig/ffi/buffer.rbs +18 -0
- data/sig/ffi/data_converter.rbs +10 -0
- data/sig/ffi/dynamic_library.rbs +9 -0
- data/sig/ffi/enum.rbs +38 -0
- data/sig/ffi/function.rbs +39 -0
- data/sig/ffi/library.rbs +42 -0
- data/sig/ffi/native_type.rbs +86 -0
- data/sig/ffi/pointer.rbs +42 -0
- data/sig/ffi/struct.rbs +76 -0
- data/sig/ffi/struct_by_reference.rbs +11 -0
- data/sig/ffi/struct_by_value.rbs +7 -0
- data/sig/ffi/struct_layout.rbs +9 -0
- data/sig/ffi/struct_layout_builder.rbs +5 -0
- data/sig/ffi/type.rbs +39 -0
- data/sig/ffi.rbs +26 -0
- data.tar.gz.sig +0 -0
- metadata +34 -532
- metadata.gz.sig +0 -0
- data/ext/ffi_c/AbstractMemory.c +0 -1128
- data/ext/ffi_c/AbstractMemory.h +0 -176
- data/ext/ffi_c/ArrayType.c +0 -198
- data/ext/ffi_c/ArrayType.h +0 -60
- data/ext/ffi_c/Buffer.c +0 -417
- data/ext/ffi_c/Call.c +0 -498
- data/ext/ffi_c/Call.h +0 -107
- data/ext/ffi_c/ClosurePool.c +0 -333
- data/ext/ffi_c/ClosurePool.h +0 -59
- data/ext/ffi_c/DynamicLibrary.c +0 -397
- data/ext/ffi_c/DynamicLibrary.h +0 -98
- data/ext/ffi_c/Function.c +0 -1063
- data/ext/ffi_c/Function.h +0 -84
- data/ext/ffi_c/FunctionInfo.c +0 -322
- data/ext/ffi_c/LastError.c +0 -243
- data/ext/ffi_c/LastError.h +0 -47
- data/ext/ffi_c/LongDouble.c +0 -65
- data/ext/ffi_c/LongDouble.h +0 -47
- data/ext/ffi_c/MappedType.c +0 -211
- data/ext/ffi_c/MappedType.h +0 -57
- data/ext/ffi_c/MemoryPointer.c +0 -219
- data/ext/ffi_c/MemoryPointer.h +0 -49
- data/ext/ffi_c/MethodHandle.c +0 -350
- data/ext/ffi_c/MethodHandle.h +0 -56
- data/ext/ffi_c/Platform.c +0 -78
- data/ext/ffi_c/Platform.h +0 -45
- data/ext/ffi_c/Pointer.c +0 -546
- data/ext/ffi_c/Pointer.h +0 -60
- data/ext/ffi_c/Struct.c +0 -897
- data/ext/ffi_c/Struct.h +0 -115
- data/ext/ffi_c/StructByValue.c +0 -177
- data/ext/ffi_c/StructByValue.h +0 -55
- data/ext/ffi_c/StructLayout.c +0 -769
- data/ext/ffi_c/Thread.c +0 -129
- data/ext/ffi_c/Thread.h +0 -76
- data/ext/ffi_c/Type.c +0 -447
- data/ext/ffi_c/Type.h +0 -63
- data/ext/ffi_c/Types.c +0 -138
- data/ext/ffi_c/Types.h +0 -88
- data/ext/ffi_c/Variadic.c +0 -345
- data/ext/ffi_c/compat.h +0 -82
- data/ext/ffi_c/extconf.rb +0 -115
- data/ext/ffi_c/ffi.c +0 -97
- data/ext/ffi_c/libffi/.appveyor/site.exp +0 -16
- data/ext/ffi_c/libffi/.appveyor/unix-noexec.exp +0 -7
- data/ext/ffi_c/libffi/.appveyor.yml +0 -84
- data/ext/ffi_c/libffi/.ci/ar-lib +0 -270
- data/ext/ffi_c/libffi/.ci/bfin-sim.exp +0 -58
- data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +0 -18
- data/ext/ffi_c/libffi/.ci/build-in-container.sh +0 -10
- data/ext/ffi_c/libffi/.ci/build.sh +0 -124
- data/ext/ffi_c/libffi/.ci/compile +0 -351
- data/ext/ffi_c/libffi/.ci/install.sh +0 -78
- data/ext/ffi_c/libffi/.ci/m32r-sim.exp +0 -58
- data/ext/ffi_c/libffi/.ci/moxie-sim.exp +0 -60
- data/ext/ffi_c/libffi/.ci/msvs-detect +0 -1103
- data/ext/ffi_c/libffi/.ci/or1k-sim.exp +0 -58
- data/ext/ffi_c/libffi/.ci/powerpc-eabisim.exp +0 -58
- data/ext/ffi_c/libffi/.ci/site.exp +0 -29
- data/ext/ffi_c/libffi/.ci/wine-sim.exp +0 -55
- data/ext/ffi_c/libffi/.circleci/config.yml +0 -156
- data/ext/ffi_c/libffi/.gitattributes +0 -4
- data/ext/ffi_c/libffi/.github/issue_template.md +0 -10
- data/ext/ffi_c/libffi/.github/workflows/build.yml +0 -460
- data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +0 -171
- data/ext/ffi_c/libffi/.gitignore +0 -46
- data/ext/ffi_c/libffi/ChangeLog.old +0 -7407
- data/ext/ffi_c/libffi/LICENSE +0 -21
- data/ext/ffi_c/libffi/LICENSE-BUILDTOOLS +0 -353
- data/ext/ffi_c/libffi/Makefile.am +0 -157
- data/ext/ffi_c/libffi/Makefile.in +0 -2127
- data/ext/ffi_c/libffi/README.md +0 -526
- data/ext/ffi_c/libffi/acinclude.m4 +0 -377
- data/ext/ffi_c/libffi/autogen.sh +0 -2
- data/ext/ffi_c/libffi/compile +0 -348
- data/ext/ffi_c/libffi/config.guess +0 -1754
- data/ext/ffi_c/libffi/config.sub +0 -1892
- data/ext/ffi_c/libffi/configure +0 -22791
- data/ext/ffi_c/libffi/configure.ac +0 -451
- data/ext/ffi_c/libffi/configure.host +0 -337
- data/ext/ffi_c/libffi/doc/Makefile.am +0 -3
- data/ext/ffi_c/libffi/doc/Makefile.in +0 -818
- data/ext/ffi_c/libffi/doc/libffi.texi +0 -1046
- data/ext/ffi_c/libffi/doc/version.texi +0 -4
- data/ext/ffi_c/libffi/fficonfig.h.in +0 -188
- data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +0 -312
- data/ext/ffi_c/libffi/include/Makefile.am +0 -9
- data/ext/ffi_c/libffi/include/Makefile.in +0 -609
- data/ext/ffi_c/libffi/include/ffi.h.in +0 -527
- data/ext/ffi_c/libffi/include/ffi_cfi.h +0 -76
- data/ext/ffi_c/libffi/include/ffi_common.h +0 -182
- data/ext/ffi_c/libffi/include/tramp.h +0 -45
- data/ext/ffi_c/libffi/install-sh +0 -541
- data/ext/ffi_c/libffi/libffi.map.in +0 -76
- data/ext/ffi_c/libffi/libffi.pc.in +0 -11
- data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +0 -997
- data/ext/ffi_c/libffi/libtool-ldflags +0 -106
- data/ext/ffi_c/libffi/libtool-version +0 -29
- data/ext/ffi_c/libffi/ltmain.sh +0 -11448
- data/ext/ffi_c/libffi/m4/asmcfi.m4 +0 -13
- data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +0 -50
- data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +0 -198
- data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +0 -158
- data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +0 -53
- data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +0 -119
- data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +0 -49
- data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +0 -302
- data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +0 -267
- data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +0 -89
- data/ext/ffi_c/libffi/m4/ax_prepend_flag.m4 +0 -51
- data/ext/ffi_c/libffi/m4/ax_require_defined.m4 +0 -37
- data/ext/ffi_c/libffi/make_sunver.pl +0 -333
- data/ext/ffi_c/libffi/man/Makefile.am +0 -8
- data/ext/ffi_c/libffi/man/Makefile.in +0 -565
- data/ext/ffi_c/libffi/man/ffi.3 +0 -41
- data/ext/ffi_c/libffi/man/ffi_call.3 +0 -103
- data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +0 -68
- data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +0 -73
- data/ext/ffi_c/libffi/missing +0 -215
- data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.sln +0 -33
- data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj +0 -130
- data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.filters +0 -57
- data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.user +0 -4
- data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +0 -511
- data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/fficonfig.h +0 -219
- data/ext/ffi_c/libffi/msvcc.sh +0 -353
- data/ext/ffi_c/libffi/src/aarch64/ffi.c +0 -1129
- data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +0 -97
- data/ext/ffi_c/libffi/src/aarch64/internal.h +0 -100
- data/ext/ffi_c/libffi/src/aarch64/sysv.S +0 -543
- data/ext/ffi_c/libffi/src/aarch64/win64_armasm.S +0 -506
- data/ext/ffi_c/libffi/src/alpha/ffi.c +0 -521
- data/ext/ffi_c/libffi/src/alpha/ffitarget.h +0 -57
- data/ext/ffi_c/libffi/src/alpha/internal.h +0 -23
- data/ext/ffi_c/libffi/src/alpha/osf.S +0 -282
- data/ext/ffi_c/libffi/src/arc/arcompact.S +0 -210
- data/ext/ffi_c/libffi/src/arc/ffi.c +0 -443
- data/ext/ffi_c/libffi/src/arc/ffitarget.h +0 -67
- data/ext/ffi_c/libffi/src/arm/ffi.c +0 -921
- data/ext/ffi_c/libffi/src/arm/ffitarget.h +0 -89
- data/ext/ffi_c/libffi/src/arm/internal.h +0 -17
- data/ext/ffi_c/libffi/src/arm/sysv.S +0 -456
- data/ext/ffi_c/libffi/src/arm/sysv_msvc_arm32.S +0 -311
- data/ext/ffi_c/libffi/src/avr32/ffi.c +0 -423
- data/ext/ffi_c/libffi/src/avr32/ffitarget.h +0 -55
- data/ext/ffi_c/libffi/src/avr32/sysv.S +0 -208
- data/ext/ffi_c/libffi/src/bfin/ffi.c +0 -196
- data/ext/ffi_c/libffi/src/bfin/ffitarget.h +0 -43
- data/ext/ffi_c/libffi/src/bfin/sysv.S +0 -179
- data/ext/ffi_c/libffi/src/closures.c +0 -1107
- data/ext/ffi_c/libffi/src/cris/ffi.c +0 -386
- data/ext/ffi_c/libffi/src/cris/ffitarget.h +0 -56
- data/ext/ffi_c/libffi/src/cris/sysv.S +0 -215
- data/ext/ffi_c/libffi/src/csky/ffi.c +0 -395
- data/ext/ffi_c/libffi/src/csky/ffitarget.h +0 -63
- data/ext/ffi_c/libffi/src/csky/sysv.S +0 -371
- data/ext/ffi_c/libffi/src/debug.c +0 -64
- data/ext/ffi_c/libffi/src/dlmalloc.c +0 -5171
- data/ext/ffi_c/libffi/src/frv/eabi.S +0 -128
- data/ext/ffi_c/libffi/src/frv/ffi.c +0 -292
- data/ext/ffi_c/libffi/src/frv/ffitarget.h +0 -62
- data/ext/ffi_c/libffi/src/ia64/ffi.c +0 -616
- data/ext/ffi_c/libffi/src/ia64/ffitarget.h +0 -56
- data/ext/ffi_c/libffi/src/ia64/ia64_flags.h +0 -40
- data/ext/ffi_c/libffi/src/ia64/unix.S +0 -585
- data/ext/ffi_c/libffi/src/java_raw_api.c +0 -374
- data/ext/ffi_c/libffi/src/kvx/asm.h +0 -5
- data/ext/ffi_c/libffi/src/kvx/ffi.c +0 -273
- data/ext/ffi_c/libffi/src/kvx/ffitarget.h +0 -75
- data/ext/ffi_c/libffi/src/kvx/sysv.S +0 -127
- data/ext/ffi_c/libffi/src/loongarch64/ffi.c +0 -621
- data/ext/ffi_c/libffi/src/loongarch64/ffitarget.h +0 -82
- data/ext/ffi_c/libffi/src/loongarch64/sysv.S +0 -327
- data/ext/ffi_c/libffi/src/m32r/ffi.c +0 -249
- data/ext/ffi_c/libffi/src/m32r/ffitarget.h +0 -53
- data/ext/ffi_c/libffi/src/m32r/sysv.S +0 -121
- data/ext/ffi_c/libffi/src/m68k/ffi.c +0 -362
- data/ext/ffi_c/libffi/src/m68k/ffitarget.h +0 -54
- data/ext/ffi_c/libffi/src/m68k/sysv.S +0 -357
- data/ext/ffi_c/libffi/src/m88k/ffi.c +0 -400
- data/ext/ffi_c/libffi/src/m88k/ffitarget.h +0 -49
- data/ext/ffi_c/libffi/src/m88k/obsd.S +0 -209
- data/ext/ffi_c/libffi/src/metag/ffi.c +0 -330
- data/ext/ffi_c/libffi/src/metag/ffitarget.h +0 -53
- data/ext/ffi_c/libffi/src/metag/sysv.S +0 -311
- data/ext/ffi_c/libffi/src/microblaze/ffi.c +0 -321
- data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +0 -53
- data/ext/ffi_c/libffi/src/microblaze/sysv.S +0 -302
- data/ext/ffi_c/libffi/src/mips/ffi.c +0 -1309
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +0 -251
- data/ext/ffi_c/libffi/src/mips/n32.S +0 -772
- data/ext/ffi_c/libffi/src/mips/o32.S +0 -561
- data/ext/ffi_c/libffi/src/moxie/eabi.S +0 -101
- data/ext/ffi_c/libffi/src/moxie/ffi.c +0 -310
- data/ext/ffi_c/libffi/src/moxie/ffitarget.h +0 -52
- data/ext/ffi_c/libffi/src/nios2/ffi.c +0 -304
- data/ext/ffi_c/libffi/src/nios2/ffitarget.h +0 -52
- data/ext/ffi_c/libffi/src/nios2/sysv.S +0 -136
- data/ext/ffi_c/libffi/src/or1k/ffi.c +0 -341
- data/ext/ffi_c/libffi/src/or1k/ffitarget.h +0 -58
- data/ext/ffi_c/libffi/src/or1k/sysv.S +0 -107
- data/ext/ffi_c/libffi/src/pa/ffi.c +0 -673
- data/ext/ffi_c/libffi/src/pa/ffi64.c +0 -614
- data/ext/ffi_c/libffi/src/pa/ffitarget.h +0 -94
- data/ext/ffi_c/libffi/src/pa/hpux32.S +0 -417
- data/ext/ffi_c/libffi/src/pa/hpux64.S +0 -681
- data/ext/ffi_c/libffi/src/pa/linux.S +0 -427
- data/ext/ffi_c/libffi/src/powerpc/aix.S +0 -566
- data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +0 -694
- data/ext/ffi_c/libffi/src/powerpc/asm.h +0 -125
- data/ext/ffi_c/libffi/src/powerpc/darwin.S +0 -378
- data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +0 -571
- data/ext/ffi_c/libffi/src/powerpc/ffi.c +0 -175
- data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +0 -1452
- data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +0 -1153
- data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +0 -105
- data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +0 -923
- data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +0 -204
- data/ext/ffi_c/libffi/src/powerpc/linux64.S +0 -293
- data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +0 -566
- data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +0 -397
- data/ext/ffi_c/libffi/src/powerpc/sysv.S +0 -173
- data/ext/ffi_c/libffi/src/powerpc/t-aix +0 -5
- data/ext/ffi_c/libffi/src/prep_cif.c +0 -283
- data/ext/ffi_c/libffi/src/raw_api.c +0 -267
- data/ext/ffi_c/libffi/src/riscv/ffi.c +0 -514
- data/ext/ffi_c/libffi/src/riscv/ffitarget.h +0 -69
- data/ext/ffi_c/libffi/src/riscv/sysv.S +0 -293
- data/ext/ffi_c/libffi/src/s390/ffi.c +0 -756
- data/ext/ffi_c/libffi/src/s390/ffitarget.h +0 -70
- data/ext/ffi_c/libffi/src/s390/internal.h +0 -11
- data/ext/ffi_c/libffi/src/s390/sysv.S +0 -325
- data/ext/ffi_c/libffi/src/sh/ffi.c +0 -717
- data/ext/ffi_c/libffi/src/sh/ffitarget.h +0 -54
- data/ext/ffi_c/libffi/src/sh/sysv.S +0 -850
- data/ext/ffi_c/libffi/src/sh64/ffi.c +0 -469
- data/ext/ffi_c/libffi/src/sh64/ffitarget.h +0 -58
- data/ext/ffi_c/libffi/src/sh64/sysv.S +0 -539
- data/ext/ffi_c/libffi/src/sparc/ffi.c +0 -468
- data/ext/ffi_c/libffi/src/sparc/ffi64.c +0 -624
- data/ext/ffi_c/libffi/src/sparc/ffitarget.h +0 -81
- data/ext/ffi_c/libffi/src/sparc/internal.h +0 -26
- data/ext/ffi_c/libffi/src/sparc/v8.S +0 -443
- data/ext/ffi_c/libffi/src/sparc/v9.S +0 -440
- data/ext/ffi_c/libffi/src/tile/ffi.c +0 -355
- data/ext/ffi_c/libffi/src/tile/ffitarget.h +0 -65
- data/ext/ffi_c/libffi/src/tile/tile.S +0 -360
- data/ext/ffi_c/libffi/src/tramp.c +0 -716
- data/ext/ffi_c/libffi/src/types.c +0 -108
- data/ext/ffi_c/libffi/src/vax/elfbsd.S +0 -195
- data/ext/ffi_c/libffi/src/vax/ffi.c +0 -276
- data/ext/ffi_c/libffi/src/vax/ffitarget.h +0 -49
- data/ext/ffi_c/libffi/src/wasm32/ffi.c +0 -934
- data/ext/ffi_c/libffi/src/wasm32/ffitarget.h +0 -62
- data/ext/ffi_c/libffi/src/x86/asmnames.h +0 -30
- data/ext/ffi_c/libffi/src/x86/ffi.c +0 -832
- data/ext/ffi_c/libffi/src/x86/ffi64.c +0 -950
- data/ext/ffi_c/libffi/src/x86/ffitarget.h +0 -164
- data/ext/ffi_c/libffi/src/x86/ffiw64.c +0 -361
- data/ext/ffi_c/libffi/src/x86/internal.h +0 -43
- data/ext/ffi_c/libffi/src/x86/internal64.h +0 -36
- data/ext/ffi_c/libffi/src/x86/sysv.S +0 -1272
- data/ext/ffi_c/libffi/src/x86/sysv_intel.S +0 -998
- data/ext/ffi_c/libffi/src/x86/unix64.S +0 -711
- data/ext/ffi_c/libffi/src/x86/win64.S +0 -254
- data/ext/ffi_c/libffi/src/x86/win64_intel.S +0 -238
- data/ext/ffi_c/libffi/src/xtensa/ffi.c +0 -306
- data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +0 -57
- data/ext/ffi_c/libffi/src/xtensa/sysv.S +0 -268
- data/ext/ffi_c/libffi/stamp-h.in +0 -1
- data/ext/ffi_c/libffi/testsuite/Makefile.am +0 -135
- data/ext/ffi_c/libffi/testsuite/Makefile.in +0 -664
- data/ext/ffi_c/libffi/testsuite/config/default.exp +0 -1
- data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +0 -54
- data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +0 -63
- data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +0 -80
- data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +0 -48
- data/ext/ffi_c/libffi/testsuite/emscripten/test.html +0 -7
- data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +0 -51
- data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +0 -682
- data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +0 -283
- data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +0 -45
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +0 -28
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +0 -50
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +0 -63
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +0 -1746
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +0 -2885
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +0 -747
- data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +0 -41
- data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +0 -54
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +0 -26
- data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +0 -163
- data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +0 -59
- data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +0 -60
- data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +0 -74
- data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +0 -62
- data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +0 -110
- data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +0 -59
- data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +0 -57
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +0 -70
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -52
- data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +0 -127
- data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +0 -59
- data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc_tc.c +0 -114
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +0 -35
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +0 -34
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +0 -41
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +0 -48
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +0 -38
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +0 -60
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +0 -55
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +0 -57
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +0 -60
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +0 -64
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +0 -66
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +0 -64
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +0 -74
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +0 -81
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +0 -68
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +0 -63
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +0 -65
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +0 -65
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +0 -93
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +0 -63
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +0 -220
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +0 -154
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +0 -134
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +0 -134
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +0 -140
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c +0 -83
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c +0 -83
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c +0 -102
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c +0 -94
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c +0 -92
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c +0 -96
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c +0 -112
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c +0 -117
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c +0 -131
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c +0 -93
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c +0 -109
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c +0 -113
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c +0 -145
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c +0 -114
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +0 -113
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c +0 -137
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c +0 -116
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c +0 -148
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c +0 -140
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c +0 -121
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c +0 -155
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c +0 -121
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c +0 -102
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c +0 -111
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c +0 -109
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c +0 -111
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +0 -147
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +0 -152
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c +0 -113
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c +0 -108
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c +0 -106
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c +0 -109
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c +0 -108
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c +0 -109
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c +0 -111
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c +0 -68
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c +0 -69
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c +0 -115
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c +0 -80
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +0 -70
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +0 -55
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c +0 -79
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +0 -94
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c +0 -99
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +0 -94
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c +0 -79
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c +0 -152
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c +0 -47
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c +0 -45
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +0 -125
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c +0 -45
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c +0 -47
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.closures/err_bad_abi.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +0 -343
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c +0 -175
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c +0 -161
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c +0 -146
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +0 -137
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +0 -86
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +0 -115
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c +0 -119
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c +0 -121
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c +0 -142
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c +0 -142
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c +0 -142
- data/ext/ffi_c/libffi/testsuite/libffi.closures/problem1.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +0 -86
- data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +0 -102
- data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +0 -101
- data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large.c +0 -145
- data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large2.c +0 -148
- data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c +0 -124
- data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c +0 -125
- data/ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c +0 -75
- data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc +0 -118
- data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +0 -55
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +0 -71
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +0 -80
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +0 -16
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +0 -51
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +0 -7
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +0 -7
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +0 -7
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +0 -86
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +0 -37
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +0 -41
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +0 -34
- data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +0 -28
- data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +0 -19
- data/ext/ffi_c/libffi.bsd.mk +0 -40
- data/ext/ffi_c/libffi.darwin.mk +0 -105
- data/ext/ffi_c/libffi.gnu.mk +0 -32
- data/ext/ffi_c/libffi.mk +0 -18
- data/ext/ffi_c/libffi.vc.mk +0 -26
- data/ext/ffi_c/libffi.vc64.mk +0 -26
- data/ext/ffi_c/rbffi.h +0 -55
- data/ext/ffi_c/rbffi_endian.h +0 -59
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check for proper argument alignment.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: <twalljava@java.net> (from many_win32.c) */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
|
|
9
|
-
#include "ffitest.h"
|
|
10
|
-
|
|
11
|
-
static float ABI_ATTR align_arguments(int i1,
|
|
12
|
-
double f2,
|
|
13
|
-
int i3,
|
|
14
|
-
double f4)
|
|
15
|
-
{
|
|
16
|
-
return i1+f2+i3+f4;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
int main(void)
|
|
20
|
-
{
|
|
21
|
-
ffi_cif cif;
|
|
22
|
-
ffi_type *args[4] = {
|
|
23
|
-
&ffi_type_sint,
|
|
24
|
-
&ffi_type_double,
|
|
25
|
-
&ffi_type_sint,
|
|
26
|
-
&ffi_type_double
|
|
27
|
-
};
|
|
28
|
-
double fa[2] = {1,2};
|
|
29
|
-
int ia[2] = {1,2};
|
|
30
|
-
void *values[4] = {&ia[0], &fa[0], &ia[1], &fa[1]};
|
|
31
|
-
float f, ff;
|
|
32
|
-
|
|
33
|
-
/* Initialize the cif */
|
|
34
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 4,
|
|
35
|
-
&ffi_type_float, args) == FFI_OK);
|
|
36
|
-
|
|
37
|
-
ff = align_arguments(ia[0], fa[0], ia[1], fa[1]);
|
|
38
|
-
|
|
39
|
-
ffi_call(&cif, FFI_FN(align_arguments), &f, values);
|
|
40
|
-
|
|
41
|
-
if (f == ff)
|
|
42
|
-
printf("align arguments tests ok!\n");
|
|
43
|
-
else
|
|
44
|
-
CHECK(0);
|
|
45
|
-
exit(0);
|
|
46
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check for proper argument alignment.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: <twalljava@java.net> (from many_win32.c) */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
|
|
9
|
-
#include "ffitest.h"
|
|
10
|
-
|
|
11
|
-
static float ABI_ATTR align_arguments(int i1,
|
|
12
|
-
double f2,
|
|
13
|
-
int i3,
|
|
14
|
-
double f4)
|
|
15
|
-
{
|
|
16
|
-
return i1+f2+i3+f4;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
int main(void)
|
|
20
|
-
{
|
|
21
|
-
ffi_cif cif;
|
|
22
|
-
ffi_type *args[4] = {
|
|
23
|
-
&ffi_type_sint,
|
|
24
|
-
&ffi_type_double,
|
|
25
|
-
&ffi_type_sint,
|
|
26
|
-
&ffi_type_double
|
|
27
|
-
};
|
|
28
|
-
double fa[2] = {1,2};
|
|
29
|
-
int ia[2] = {1,2};
|
|
30
|
-
void *values[4] = {&ia[0], &fa[0], &ia[1], &fa[1]};
|
|
31
|
-
float f, ff;
|
|
32
|
-
|
|
33
|
-
/* Initialize the cif */
|
|
34
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 4,
|
|
35
|
-
&ffi_type_float, args) == FFI_OK);
|
|
36
|
-
|
|
37
|
-
ff = align_arguments(ia[0], fa[0], ia[1], fa[1]);;
|
|
38
|
-
|
|
39
|
-
ffi_call(&cif, FFI_FN(align_arguments), &f, values);
|
|
40
|
-
|
|
41
|
-
if (f == ff)
|
|
42
|
-
printf("align arguments tests ok!\n");
|
|
43
|
-
else
|
|
44
|
-
CHECK(0);
|
|
45
|
-
exit(0);
|
|
46
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/* Area: bpo-38748
|
|
2
|
-
Purpose: test for stdcall alignment problem
|
|
3
|
-
Source: github.com/python/cpython/pull/26204 */
|
|
4
|
-
|
|
5
|
-
/* { dg-do run } */
|
|
6
|
-
|
|
7
|
-
#include "ffitest.h"
|
|
8
|
-
#include "ffi_common.h"
|
|
9
|
-
|
|
10
|
-
static UINT32 ABI_ATTR align_arguments(UINT32 l1,
|
|
11
|
-
UINT64 l2)
|
|
12
|
-
{
|
|
13
|
-
return l1 + (UINT32) l2;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
int main(void)
|
|
17
|
-
{
|
|
18
|
-
ffi_cif cif;
|
|
19
|
-
ffi_type *args[4] = {
|
|
20
|
-
&ffi_type_uint32,
|
|
21
|
-
&ffi_type_uint64
|
|
22
|
-
};
|
|
23
|
-
ffi_arg lr1, lr2;
|
|
24
|
-
UINT32 l1 = 1;
|
|
25
|
-
UINT64 l2 = 2;
|
|
26
|
-
void *values[2] = {&l1, &l2};
|
|
27
|
-
|
|
28
|
-
/* Initialize the cif */
|
|
29
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 2,
|
|
30
|
-
&ffi_type_uint32, args) == FFI_OK);
|
|
31
|
-
|
|
32
|
-
lr1 = align_arguments(l1, l2);
|
|
33
|
-
|
|
34
|
-
ffi_call(&cif, FFI_FN(align_arguments), &lr2, values);
|
|
35
|
-
|
|
36
|
-
if (lr1 == lr2)
|
|
37
|
-
printf("bpo-38748 arguments tests ok!\n");
|
|
38
|
-
else
|
|
39
|
-
CHECK(0);
|
|
40
|
-
exit(0);
|
|
41
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# Copyright (C) 2003, 2006, 2009, 2010, 2014 Free Software Foundation, Inc.
|
|
2
|
-
|
|
3
|
-
# This program is free software; you can redistribute it and/or modify
|
|
4
|
-
# it under the terms of the GNU General Public License as published by
|
|
5
|
-
# the Free Software Foundation; either version 3 of the License, or
|
|
6
|
-
# (at your option) any later version.
|
|
7
|
-
#
|
|
8
|
-
# This program is distributed in the hope that it will be useful,
|
|
9
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
-
# GNU General Public License for more details.
|
|
12
|
-
#
|
|
13
|
-
# You should have received a copy of the GNU General Public License
|
|
14
|
-
# along with this program; see the file COPYING3. If not see
|
|
15
|
-
# <http://www.gnu.org/licenses/>.
|
|
16
|
-
|
|
17
|
-
dg-init
|
|
18
|
-
libffi-init
|
|
19
|
-
|
|
20
|
-
global srcdir subdir
|
|
21
|
-
|
|
22
|
-
if { [string match $compiler_vendor "microsoft"] } {
|
|
23
|
-
# -wd4005 macro redefinition
|
|
24
|
-
# -wd4244 implicit conversion to type of smaller size
|
|
25
|
-
# -wd4305 truncation to smaller type
|
|
26
|
-
# -wd4477 printf %lu of uintptr_t
|
|
27
|
-
# -wd4312 implicit conversion to type of greater size
|
|
28
|
-
# -wd4311 pointer truncation to unsigned long
|
|
29
|
-
# -EHsc C++ Exception Handling (no SEH exceptions)
|
|
30
|
-
set additional_options "-wd4005 -wd4244 -wd4305 -wd4477 -wd4312 -wd4311 -EHsc";
|
|
31
|
-
} else {
|
|
32
|
-
set additional_options "";
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.c]]
|
|
36
|
-
|
|
37
|
-
run-many-tests $tlist $additional_options
|
|
38
|
-
|
|
39
|
-
set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.cc]]
|
|
40
|
-
|
|
41
|
-
# No C++ for or1k
|
|
42
|
-
if { [istarget "or1k-*-*"] } {
|
|
43
|
-
foreach test $tlist {
|
|
44
|
-
unsupported "$test"
|
|
45
|
-
}
|
|
46
|
-
} else {
|
|
47
|
-
run-many-tests $tlist $additional_options
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
dg-finish
|
|
51
|
-
|
|
52
|
-
# Local Variables:
|
|
53
|
-
# tcl-indent-level:4
|
|
54
|
-
# End:
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_prep_cif
|
|
2
|
-
Purpose: Test error return for bad typedefs.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: Blake Chaffin 6/6/2007 */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
|
|
9
|
-
#include "ffitest.h"
|
|
10
|
-
|
|
11
|
-
int main (void)
|
|
12
|
-
{
|
|
13
|
-
ffi_cif cif;
|
|
14
|
-
ffi_type* arg_types[1];
|
|
15
|
-
|
|
16
|
-
ffi_type badType = ffi_type_void;
|
|
17
|
-
|
|
18
|
-
arg_types[0] = NULL;
|
|
19
|
-
|
|
20
|
-
badType.size = 0;
|
|
21
|
-
|
|
22
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &badType,
|
|
23
|
-
arg_types) == FFI_BAD_TYPEDEF);
|
|
24
|
-
|
|
25
|
-
exit(0);
|
|
26
|
-
}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
#include <stdlib.h>
|
|
2
|
-
#include <stdio.h>
|
|
3
|
-
#include <string.h>
|
|
4
|
-
#include <fcntl.h>
|
|
5
|
-
#include <ffi.h>
|
|
6
|
-
#include "fficonfig.h"
|
|
7
|
-
|
|
8
|
-
#include <float.h>
|
|
9
|
-
#include <math.h>
|
|
10
|
-
|
|
11
|
-
#if defined HAVE_STDINT_H
|
|
12
|
-
#include <stdint.h>
|
|
13
|
-
#endif
|
|
14
|
-
|
|
15
|
-
#if defined HAVE_INTTYPES_H
|
|
16
|
-
#include <inttypes.h>
|
|
17
|
-
#endif
|
|
18
|
-
|
|
19
|
-
#define MAX_ARGS 256
|
|
20
|
-
|
|
21
|
-
#define CHECK(x) \
|
|
22
|
-
do { \
|
|
23
|
-
if(!(x)){ \
|
|
24
|
-
printf("Check failed:\n%s\n", #x); \
|
|
25
|
-
abort(); \
|
|
26
|
-
} \
|
|
27
|
-
} while(0)
|
|
28
|
-
|
|
29
|
-
#define CHECK_FLOAT_EQ(x, y) \
|
|
30
|
-
do { \
|
|
31
|
-
if(fabs((x) - (y)) > FLT_EPSILON){ \
|
|
32
|
-
printf("Check failed CHECK_FLOAT_EQ(%s, %s)\n", #x, #y); \
|
|
33
|
-
abort(); \
|
|
34
|
-
} \
|
|
35
|
-
} while(0)
|
|
36
|
-
|
|
37
|
-
#define CHECK_DOUBLE_EQ(x, y) \
|
|
38
|
-
do { \
|
|
39
|
-
if(fabs((x) - (y)) > DBL_EPSILON){ \
|
|
40
|
-
printf("Check failed CHECK_FLOAT_EQ(%s, %s)\n", #x, #y); \
|
|
41
|
-
abort(); \
|
|
42
|
-
} \
|
|
43
|
-
} while(0)
|
|
44
|
-
|
|
45
|
-
/* Define macros so that compilers other than gcc can run the tests. */
|
|
46
|
-
#undef __UNUSED__
|
|
47
|
-
#if defined(__GNUC__)
|
|
48
|
-
#define __UNUSED__ __attribute__((__unused__))
|
|
49
|
-
#define __STDCALL__ __attribute__((stdcall))
|
|
50
|
-
#define __THISCALL__ __attribute__((thiscall))
|
|
51
|
-
#define __FASTCALL__ __attribute__((fastcall))
|
|
52
|
-
#define __MSABI__ __attribute__((ms_abi))
|
|
53
|
-
#else
|
|
54
|
-
#define __UNUSED__
|
|
55
|
-
#define __STDCALL__ __stdcall
|
|
56
|
-
#define __THISCALL__ __thiscall
|
|
57
|
-
#define __FASTCALL__ __fastcall
|
|
58
|
-
#endif
|
|
59
|
-
|
|
60
|
-
#ifndef ABI_NUM
|
|
61
|
-
#define ABI_NUM FFI_DEFAULT_ABI
|
|
62
|
-
#define ABI_ATTR
|
|
63
|
-
#endif
|
|
64
|
-
|
|
65
|
-
/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
|
|
66
|
-
file open. */
|
|
67
|
-
#ifdef HAVE_MMAP_ANON
|
|
68
|
-
# undef HAVE_MMAP_DEV_ZERO
|
|
69
|
-
|
|
70
|
-
# include <sys/mman.h>
|
|
71
|
-
# ifndef MAP_FAILED
|
|
72
|
-
# define MAP_FAILED -1
|
|
73
|
-
# endif
|
|
74
|
-
# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
|
|
75
|
-
# define MAP_ANONYMOUS MAP_ANON
|
|
76
|
-
# endif
|
|
77
|
-
# define USING_MMAP
|
|
78
|
-
|
|
79
|
-
#endif
|
|
80
|
-
|
|
81
|
-
#ifdef HAVE_MMAP_DEV_ZERO
|
|
82
|
-
|
|
83
|
-
# include <sys/mman.h>
|
|
84
|
-
# ifndef MAP_FAILED
|
|
85
|
-
# define MAP_FAILED -1
|
|
86
|
-
# endif
|
|
87
|
-
# define USING_MMAP
|
|
88
|
-
|
|
89
|
-
#endif
|
|
90
|
-
|
|
91
|
-
/* msvc kludge. */
|
|
92
|
-
#if defined(_MSC_VER)
|
|
93
|
-
#define PRIdLL "I64d"
|
|
94
|
-
#define PRIuLL "I64u"
|
|
95
|
-
#else
|
|
96
|
-
#define PRIdLL "lld"
|
|
97
|
-
#define PRIuLL "llu"
|
|
98
|
-
#endif
|
|
99
|
-
|
|
100
|
-
/* Tru64 UNIX kludge. */
|
|
101
|
-
#if defined(__alpha__) && defined(__osf__)
|
|
102
|
-
/* Tru64 UNIX V4.0 doesn't support %lld/%lld, but long is 64-bit. */
|
|
103
|
-
#undef PRIdLL
|
|
104
|
-
#define PRIdLL "ld"
|
|
105
|
-
#undef PRIuLL
|
|
106
|
-
#define PRIuLL "lu"
|
|
107
|
-
#define PRId8 "hd"
|
|
108
|
-
#define PRIu8 "hu"
|
|
109
|
-
#define PRId64 "ld"
|
|
110
|
-
#define PRIu64 "lu"
|
|
111
|
-
#define PRIuPTR "lu"
|
|
112
|
-
#endif
|
|
113
|
-
|
|
114
|
-
/* PA HP-UX kludge. */
|
|
115
|
-
#if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR)
|
|
116
|
-
#define PRIuPTR "lu"
|
|
117
|
-
#endif
|
|
118
|
-
|
|
119
|
-
/* IRIX kludge. */
|
|
120
|
-
#if defined(__sgi)
|
|
121
|
-
/* IRIX 6.5 <inttypes.h> provides all definitions, but only for C99
|
|
122
|
-
compilations. */
|
|
123
|
-
#define PRId8 "hhd"
|
|
124
|
-
#define PRIu8 "hhu"
|
|
125
|
-
#if (_MIPS_SZLONG == 32)
|
|
126
|
-
#define PRId64 "lld"
|
|
127
|
-
#define PRIu64 "llu"
|
|
128
|
-
#endif
|
|
129
|
-
/* This doesn't match <inttypes.h>, which always has "lld" here, but the
|
|
130
|
-
arguments are uint64_t, int64_t, which are unsigned long, long for
|
|
131
|
-
64-bit in <sgidefs.h>. */
|
|
132
|
-
#if (_MIPS_SZLONG == 64)
|
|
133
|
-
#define PRId64 "ld"
|
|
134
|
-
#define PRIu64 "lu"
|
|
135
|
-
#endif
|
|
136
|
-
/* This doesn't match <inttypes.h>, which has "u" here, but the arguments
|
|
137
|
-
are uintptr_t, which is always unsigned long. */
|
|
138
|
-
#define PRIuPTR "lu"
|
|
139
|
-
#endif
|
|
140
|
-
|
|
141
|
-
/* Solaris < 10 kludge. */
|
|
142
|
-
#if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR)
|
|
143
|
-
#if defined(__arch64__) || defined (__x86_64__)
|
|
144
|
-
#define PRIuPTR "lu"
|
|
145
|
-
#else
|
|
146
|
-
#define PRIuPTR "u"
|
|
147
|
-
#endif
|
|
148
|
-
#endif
|
|
149
|
-
|
|
150
|
-
/* MSVC kludge. */
|
|
151
|
-
#if defined _MSC_VER
|
|
152
|
-
#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)
|
|
153
|
-
#define PRIuPTR "lu"
|
|
154
|
-
#define PRIu8 "u"
|
|
155
|
-
#define PRId8 "d"
|
|
156
|
-
#define PRIu64 "I64u"
|
|
157
|
-
#define PRId64 "I64d"
|
|
158
|
-
#endif
|
|
159
|
-
#endif
|
|
160
|
-
|
|
161
|
-
#ifndef PRIuPTR
|
|
162
|
-
#define PRIuPTR "u"
|
|
163
|
-
#endif
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check return value float.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
|
|
9
|
-
#include "ffitest.h"
|
|
10
|
-
|
|
11
|
-
static int floating(int a, float b, double c, long double d)
|
|
12
|
-
{
|
|
13
|
-
int i;
|
|
14
|
-
|
|
15
|
-
i = (int) ((float)a/b + ((float)c/(float)d));
|
|
16
|
-
|
|
17
|
-
return i;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
int main (void)
|
|
21
|
-
{
|
|
22
|
-
ffi_cif cif;
|
|
23
|
-
ffi_type *args[MAX_ARGS];
|
|
24
|
-
void *values[MAX_ARGS];
|
|
25
|
-
ffi_arg rint;
|
|
26
|
-
|
|
27
|
-
float f;
|
|
28
|
-
signed int si1;
|
|
29
|
-
double d;
|
|
30
|
-
long double ld;
|
|
31
|
-
|
|
32
|
-
args[0] = &ffi_type_sint;
|
|
33
|
-
values[0] = &si1;
|
|
34
|
-
args[1] = &ffi_type_float;
|
|
35
|
-
values[1] = &f;
|
|
36
|
-
args[2] = &ffi_type_double;
|
|
37
|
-
values[2] = &d;
|
|
38
|
-
args[3] = &ffi_type_longdouble;
|
|
39
|
-
values[3] = &ld;
|
|
40
|
-
|
|
41
|
-
/* Initialize the cif */
|
|
42
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4,
|
|
43
|
-
&ffi_type_sint, args) == FFI_OK);
|
|
44
|
-
|
|
45
|
-
si1 = 6;
|
|
46
|
-
f = 3.14159;
|
|
47
|
-
d = (double)1.0/(double)3.0;
|
|
48
|
-
ld = 2.71828182846L;
|
|
49
|
-
|
|
50
|
-
floating (si1, f, d, ld);
|
|
51
|
-
|
|
52
|
-
ffi_call(&cif, FFI_FN(floating), &rint, values);
|
|
53
|
-
|
|
54
|
-
printf ("%d vs %d\n", (int)rint, floating (si1, f, d, ld));
|
|
55
|
-
|
|
56
|
-
CHECK((int)rint == floating(si1, f, d, ld));
|
|
57
|
-
|
|
58
|
-
exit (0);
|
|
59
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check return value double.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
#include "float.h"
|
|
10
|
-
|
|
11
|
-
#include <math.h>
|
|
12
|
-
|
|
13
|
-
typedef union
|
|
14
|
-
{
|
|
15
|
-
double d;
|
|
16
|
-
unsigned char c[sizeof (double)];
|
|
17
|
-
} value_type;
|
|
18
|
-
|
|
19
|
-
#define CANARY 0xba
|
|
20
|
-
|
|
21
|
-
static double dblit(float f)
|
|
22
|
-
{
|
|
23
|
-
return f/3.0;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
int main (void)
|
|
27
|
-
{
|
|
28
|
-
ffi_cif cif;
|
|
29
|
-
ffi_type *args[MAX_ARGS];
|
|
30
|
-
void *values[MAX_ARGS];
|
|
31
|
-
float f;
|
|
32
|
-
value_type result[2];
|
|
33
|
-
unsigned int i;
|
|
34
|
-
|
|
35
|
-
args[0] = &ffi_type_float;
|
|
36
|
-
values[0] = &f;
|
|
37
|
-
|
|
38
|
-
/* Initialize the cif */
|
|
39
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
|
|
40
|
-
&ffi_type_double, args) == FFI_OK);
|
|
41
|
-
|
|
42
|
-
f = 3.14159;
|
|
43
|
-
|
|
44
|
-
/* Put a canary in the return array. This is a regression test for
|
|
45
|
-
a buffer overrun. */
|
|
46
|
-
memset(result[1].c, CANARY, sizeof (double));
|
|
47
|
-
|
|
48
|
-
ffi_call(&cif, FFI_FN(dblit), &result[0].d, values);
|
|
49
|
-
|
|
50
|
-
/* These are not always the same!! Check for a reasonable delta */
|
|
51
|
-
|
|
52
|
-
CHECK(fabs(result[0].d - dblit(f)) < DBL_EPSILON);
|
|
53
|
-
|
|
54
|
-
/* Check the canary. */
|
|
55
|
-
for (i = 0; i < sizeof (double); ++i)
|
|
56
|
-
CHECK(result[1].c[i] == CANARY);
|
|
57
|
-
|
|
58
|
-
exit(0);
|
|
59
|
-
|
|
60
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check return value long double.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
/* { dg-do run } */
|
|
7
|
-
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
#include "float.h"
|
|
10
|
-
|
|
11
|
-
#include <math.h>
|
|
12
|
-
|
|
13
|
-
static long double ldblit(float f)
|
|
14
|
-
{
|
|
15
|
-
return (long double) (((long double) f)/ (long double) 3.0);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
int main (void)
|
|
19
|
-
{
|
|
20
|
-
ffi_cif cif;
|
|
21
|
-
ffi_type *args[MAX_ARGS];
|
|
22
|
-
void *values[MAX_ARGS];
|
|
23
|
-
float f;
|
|
24
|
-
long double ld;
|
|
25
|
-
long double original;
|
|
26
|
-
|
|
27
|
-
args[0] = &ffi_type_float;
|
|
28
|
-
values[0] = &f;
|
|
29
|
-
|
|
30
|
-
/* Initialize the cif */
|
|
31
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
|
|
32
|
-
&ffi_type_longdouble, args) == FFI_OK);
|
|
33
|
-
|
|
34
|
-
f = 3.14159;
|
|
35
|
-
|
|
36
|
-
#if defined(__sun) && defined(__GNUC__)
|
|
37
|
-
/* long double support under SunOS/gcc is pretty much non-existent.
|
|
38
|
-
You'll get the odd bus error in library routines like printf() */
|
|
39
|
-
#else
|
|
40
|
-
printf ("%Lf\n", ldblit(f));
|
|
41
|
-
#endif
|
|
42
|
-
|
|
43
|
-
ld = 666;
|
|
44
|
-
ffi_call(&cif, FFI_FN(ldblit), &ld, values);
|
|
45
|
-
|
|
46
|
-
#if defined(__sun) && defined(__GNUC__)
|
|
47
|
-
/* long double support under SunOS/gcc is pretty much non-existent.
|
|
48
|
-
You'll get the odd bus error in library routines like printf() */
|
|
49
|
-
#else
|
|
50
|
-
printf ("%Lf, %Lf, %Lf, %Lf\n", ld, ldblit(f), ld - ldblit(f), LDBL_EPSILON);
|
|
51
|
-
#endif
|
|
52
|
-
|
|
53
|
-
/* These are not always the same!! Check for a reasonable delta */
|
|
54
|
-
original = ldblit(f);
|
|
55
|
-
if (((ld > original) ? (ld - original) : (original - ld)) < LDBL_EPSILON)
|
|
56
|
-
puts("long double return value tests ok!");
|
|
57
|
-
else
|
|
58
|
-
CHECK(0);
|
|
59
|
-
|
|
60
|
-
exit(0);
|
|
61
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check float arguments with different orders.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
|
|
9
|
-
#include "ffitest.h"
|
|
10
|
-
#include "float.h"
|
|
11
|
-
|
|
12
|
-
#include <math.h>
|
|
13
|
-
|
|
14
|
-
static double floating_1(float a, double b, long double c)
|
|
15
|
-
{
|
|
16
|
-
return (double) a + b + (double) c;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
static double floating_2(long double a, double b, float c)
|
|
20
|
-
{
|
|
21
|
-
return (double) a + b + (double) c;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
int main (void)
|
|
25
|
-
{
|
|
26
|
-
ffi_cif cif;
|
|
27
|
-
ffi_type *args[MAX_ARGS];
|
|
28
|
-
void *values[MAX_ARGS];
|
|
29
|
-
double rd;
|
|
30
|
-
|
|
31
|
-
float f;
|
|
32
|
-
double d;
|
|
33
|
-
long double ld;
|
|
34
|
-
|
|
35
|
-
args[0] = &ffi_type_float;
|
|
36
|
-
values[0] = &f;
|
|
37
|
-
args[1] = &ffi_type_double;
|
|
38
|
-
values[1] = &d;
|
|
39
|
-
args[2] = &ffi_type_longdouble;
|
|
40
|
-
values[2] = &ld;
|
|
41
|
-
|
|
42
|
-
/* Initialize the cif */
|
|
43
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3,
|
|
44
|
-
&ffi_type_double, args) == FFI_OK);
|
|
45
|
-
|
|
46
|
-
f = 3.14159;
|
|
47
|
-
d = (double)1.0/(double)3.0;
|
|
48
|
-
ld = 2.71828182846L;
|
|
49
|
-
|
|
50
|
-
floating_1 (f, d, ld);
|
|
51
|
-
|
|
52
|
-
ffi_call(&cif, FFI_FN(floating_1), &rd, values);
|
|
53
|
-
|
|
54
|
-
CHECK(fabs(rd - floating_1(f, d, ld)) < DBL_EPSILON);
|
|
55
|
-
|
|
56
|
-
args[0] = &ffi_type_longdouble;
|
|
57
|
-
values[0] = &ld;
|
|
58
|
-
args[1] = &ffi_type_double;
|
|
59
|
-
values[1] = &d;
|
|
60
|
-
args[2] = &ffi_type_float;
|
|
61
|
-
values[2] = &f;
|
|
62
|
-
|
|
63
|
-
/* Initialize the cif */
|
|
64
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3,
|
|
65
|
-
&ffi_type_double, args) == FFI_OK);
|
|
66
|
-
|
|
67
|
-
floating_2 (ld, d, f);
|
|
68
|
-
|
|
69
|
-
ffi_call(&cif, FFI_FN(floating_2), &rd, values);
|
|
70
|
-
|
|
71
|
-
CHECK(fabs(rd - floating_2(ld, d, f)) < DBL_EPSILON);
|
|
72
|
-
|
|
73
|
-
exit (0);
|
|
74
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check denorm double value.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: PR26483.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
/* { dg-options "-mieee" { target alpha*-*-* } } */
|
|
9
|
-
|
|
10
|
-
#include "ffitest.h"
|
|
11
|
-
#include "float.h"
|
|
12
|
-
|
|
13
|
-
typedef union
|
|
14
|
-
{
|
|
15
|
-
double d;
|
|
16
|
-
unsigned char c[sizeof (double)];
|
|
17
|
-
} value_type;
|
|
18
|
-
|
|
19
|
-
#define CANARY 0xba
|
|
20
|
-
|
|
21
|
-
static double dblit(double d)
|
|
22
|
-
{
|
|
23
|
-
return d;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
int main (void)
|
|
27
|
-
{
|
|
28
|
-
ffi_cif cif;
|
|
29
|
-
ffi_type *args[MAX_ARGS];
|
|
30
|
-
void *values[MAX_ARGS];
|
|
31
|
-
double d;
|
|
32
|
-
value_type result[2];
|
|
33
|
-
unsigned int i;
|
|
34
|
-
|
|
35
|
-
args[0] = &ffi_type_double;
|
|
36
|
-
values[0] = &d;
|
|
37
|
-
|
|
38
|
-
/* Initialize the cif */
|
|
39
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
|
|
40
|
-
&ffi_type_double, args) == FFI_OK);
|
|
41
|
-
|
|
42
|
-
d = DBL_MIN / 2;
|
|
43
|
-
|
|
44
|
-
/* Put a canary in the return array. This is a regression test for
|
|
45
|
-
a buffer overrun. */
|
|
46
|
-
memset(result[1].c, CANARY, sizeof (double));
|
|
47
|
-
|
|
48
|
-
ffi_call(&cif, FFI_FN(dblit), &result[0].d, values);
|
|
49
|
-
|
|
50
|
-
/* The standard delta check doesn't work for denorms. Since we didn't do
|
|
51
|
-
any arithmetic, we should get the original result back, and hence an
|
|
52
|
-
exact check should be OK here. */
|
|
53
|
-
|
|
54
|
-
CHECK(result[0].d == dblit(d));
|
|
55
|
-
|
|
56
|
-
/* Check the canary. */
|
|
57
|
-
for (i = 0; i < sizeof (double); ++i)
|
|
58
|
-
CHECK(result[1].c[i] == CANARY);
|
|
59
|
-
|
|
60
|
-
exit(0);
|
|
61
|
-
|
|
62
|
-
}
|