ffi 1.16.3 → 1.17.1

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.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +51 -0
  4. data/Gemfile +9 -2
  5. data/README.md +1 -1
  6. data/Rakefile +18 -6
  7. data/ext/ffi_c/AbstractMemory.c +39 -38
  8. data/ext/ffi_c/ArrayType.c +2 -2
  9. data/ext/ffi_c/Buffer.c +4 -4
  10. data/ext/ffi_c/Call.c +12 -6
  11. data/ext/ffi_c/Call.h +3 -2
  12. data/ext/ffi_c/DynamicLibrary.c +2 -2
  13. data/ext/ffi_c/Function.c +52 -34
  14. data/ext/ffi_c/FunctionInfo.c +1 -1
  15. data/ext/ffi_c/LastError.c +4 -4
  16. data/ext/ffi_c/MemoryPointer.c +2 -2
  17. data/ext/ffi_c/Pointer.c +14 -11
  18. data/ext/ffi_c/Struct.c +11 -4
  19. data/ext/ffi_c/StructLayout.c +13 -13
  20. data/ext/ffi_c/Type.c +17 -16
  21. data/ext/ffi_c/Types.c +7 -1
  22. data/ext/ffi_c/Types.h +0 -1
  23. data/ext/ffi_c/Variadic.c +6 -3
  24. data/ext/ffi_c/libffi/.allow-ai-service +0 -0
  25. data/ext/ffi_c/libffi/.github/workflows/build.yml +34 -15
  26. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +2 -1
  27. data/ext/ffi_c/libffi/LICENSE +1 -1
  28. data/ext/ffi_c/libffi/README.md +10 -5
  29. data/ext/ffi_c/libffi/configure +1254 -940
  30. data/ext/ffi_c/libffi/configure.ac +2 -2
  31. data/ext/ffi_c/libffi/configure.host +1 -1
  32. data/ext/ffi_c/libffi/doc/libffi.texi +1 -1
  33. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  34. data/ext/ffi_c/libffi/fficonfig.h.in +6 -6
  35. data/ext/ffi_c/libffi/include/ffi.h.in +2 -11
  36. data/ext/ffi_c/libffi/include/ffi_common.h +4 -2
  37. data/ext/ffi_c/libffi/libffi.map.in +5 -0
  38. data/ext/ffi_c/libffi/libtool-version +1 -1
  39. data/ext/ffi_c/libffi/ltmain.sh +8 -20
  40. data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +1 -1
  41. data/ext/ffi_c/libffi/src/aarch64/ffi.c +26 -13
  42. data/ext/ffi_c/libffi/src/aarch64/sysv.S +198 -46
  43. data/ext/ffi_c/libffi/src/closures.c +3 -3
  44. data/ext/ffi_c/libffi/src/debug.c +2 -2
  45. data/ext/ffi_c/libffi/src/dlmalloc.c +1 -1
  46. data/ext/ffi_c/libffi/src/loongarch64/ffi.c +3 -0
  47. data/ext/ffi_c/libffi/src/mips/ffi.c +12 -4
  48. data/ext/ffi_c/libffi/src/mips/n32.S +65 -14
  49. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +36 -24
  50. data/ext/ffi_c/libffi/src/sparc/ffi64.c +7 -1
  51. data/ext/ffi_c/libffi/src/tramp.c +1 -1
  52. data/ext/ffi_c/libffi/src/types.c +4 -6
  53. data/ext/ffi_c/libffi/src/wasm32/ffi.c +13 -0
  54. data/ext/ffi_c/libffi/src/x86/ffiw64.c +1 -1
  55. data/ext/ffi_c/libffi/testsuite/Makefile.am +79 -127
  56. data/ext/ffi_c/libffi/testsuite/Makefile.in +79 -127
  57. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +6 -0
  58. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +99 -0
  59. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +108 -0
  60. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +114 -0
  61. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +119 -0
  62. data/ext/ffi_c/libffi.darwin.mk +2 -2
  63. data/lib/ffi/autopointer.rb +1 -9
  64. data/lib/ffi/dynamic_library.rb +34 -5
  65. data/lib/ffi/enum.rb +0 -1
  66. data/lib/ffi/ffi.rb +59 -0
  67. data/lib/ffi/function.rb +1 -1
  68. data/lib/ffi/io.rb +2 -2
  69. data/lib/ffi/library.rb +23 -23
  70. data/lib/ffi/platform/aarch64-linux/types.conf +74 -3
  71. data/lib/ffi/pointer.rb +6 -6
  72. data/lib/ffi/struct.rb +4 -4
  73. data/lib/ffi/struct_layout.rb +2 -2
  74. data/lib/ffi/struct_layout_builder.rb +8 -8
  75. data/lib/ffi/types.rb +51 -49
  76. data/lib/ffi/version.rb +1 -1
  77. data/sig/ffi/abstract_memory.rbs +165 -0
  78. data/sig/ffi/auto_pointer.rbs +26 -0
  79. data/sig/ffi/buffer.rbs +18 -0
  80. data/sig/ffi/data_converter.rbs +10 -0
  81. data/sig/ffi/dynamic_library.rbs +9 -0
  82. data/sig/ffi/enum.rbs +38 -0
  83. data/sig/ffi/function.rbs +39 -0
  84. data/sig/ffi/library.rbs +42 -0
  85. data/sig/ffi/native_type.rbs +86 -0
  86. data/sig/ffi/pointer.rbs +42 -0
  87. data/sig/ffi/struct.rbs +76 -0
  88. data/sig/ffi/struct_by_reference.rbs +11 -0
  89. data/sig/ffi/struct_by_value.rbs +7 -0
  90. data/sig/ffi/struct_layout.rbs +9 -0
  91. data/sig/ffi/struct_layout_builder.rbs +5 -0
  92. data/sig/ffi/type.rbs +39 -0
  93. data/sig/ffi.rbs +26 -0
  94. data.tar.gz.sig +0 -0
  95. metadata +37 -18
  96. metadata.gz.sig +0 -0
@@ -623,38 +623,50 @@ darwin_adjust_aggregate_sizes (ffi_type *s)
623
623
  }
624
624
 
625
625
  /* Adjust the size of S to be correct for AIX.
626
- Word-align double unless it is the first member of a structure. */
626
+ Word-align double unless it is the first member of a structure recursively.
627
+ Return non-zero if we found a recursive first member aggregate of interest. */
627
628
 
628
- static void
629
- aix_adjust_aggregate_sizes (ffi_type *s)
629
+ static int
630
+ aix_adjust_aggregate_sizes (ffi_type *s, int outer_most_type_or_first_member)
630
631
  {
631
- int i;
632
+ int i, nested_first_member=0, final_align, rc=0;
632
633
 
633
634
  if (s->type != FFI_TYPE_STRUCT)
634
- return;
635
+ return 0;
635
636
 
636
637
  s->size = 0;
637
638
  for (i = 0; s->elements[i] != NULL; i++)
638
639
  {
639
- ffi_type *p;
640
+ ffi_type p;
640
641
  int align;
641
-
642
- p = s->elements[i];
643
- aix_adjust_aggregate_sizes (p);
644
- align = p->alignment;
645
- if (i != 0 && p->type == FFI_TYPE_DOUBLE)
646
- align = 4;
647
- s->size = FFI_ALIGN(s->size, align) + p->size;
642
+
643
+ /* nested aggregates layout differently on AIX, so take a copy of the type */
644
+ p = *(s->elements[i]);
645
+ if (i == 0)
646
+ nested_first_member = aix_adjust_aggregate_sizes(&p, outer_most_type_or_first_member);
647
+ else
648
+ aix_adjust_aggregate_sizes(&p, 0);
649
+ align = p.alignment;
650
+ if (i != 0 && p.type == FFI_TYPE_DOUBLE)
651
+ align = 4;
652
+ s->size = FFI_ALIGN(s->size, align) + p.size;
648
653
  }
649
-
650
- s->size = FFI_ALIGN(s->size, s->alignment);
651
-
652
- if (s->elements[0]->type == FFI_TYPE_UINT64
653
- || s->elements[0]->type == FFI_TYPE_SINT64
654
- || s->elements[0]->type == FFI_TYPE_DOUBLE
655
- || s->elements[0]->alignment == 8)
656
- s->alignment = s->alignment > 8 ? s->alignment : 8;
657
- /* Do not add additional tail padding. */
654
+
655
+ final_align=s->alignment;
656
+ if ((s->elements[0]->type == FFI_TYPE_UINT64
657
+ || s->elements[0]->type == FFI_TYPE_SINT64
658
+ || s->elements[0]->type == FFI_TYPE_DOUBLE
659
+ || s->elements[0]->alignment == 8 || nested_first_member)) {
660
+ final_align = s->alignment > 8 ? s->alignment : 8;
661
+ rc=1;
662
+ /* still use the adjusted alignment to calculate tail padding, but don't adjust the types alignment if
663
+ we aren't in the recursive first position */
664
+ if (outer_most_type_or_first_member)
665
+ s->alignment=final_align;
666
+ }
667
+
668
+ s->size = FFI_ALIGN(s->size, final_align);
669
+ return rc;
658
670
  }
659
671
 
660
672
  /* Perform machine dependent cif processing. */
@@ -682,9 +694,9 @@ ffi_prep_cif_machdep (ffi_cif *cif)
682
694
 
683
695
  if (cif->abi == FFI_AIX)
684
696
  {
685
- aix_adjust_aggregate_sizes (cif->rtype);
697
+ aix_adjust_aggregate_sizes (cif->rtype, 1);
686
698
  for (i = 0; i < cif->nargs; i++)
687
- aix_adjust_aggregate_sizes (cif->arg_types[i]);
699
+ aix_adjust_aggregate_sizes (cif->arg_types[i], 1);
688
700
  }
689
701
 
690
702
  /* Space for the frame pointer, callee's LR, CR, etc, and for
@@ -382,13 +382,19 @@ ffi_prep_args_v9(ffi_cif *cif, unsigned long *argp, void *rvalue, void **avalue)
382
382
  *argp++ = *(SINT32 *)a;
383
383
  break;
384
384
  case FFI_TYPE_UINT32:
385
- case FFI_TYPE_FLOAT:
386
385
  *argp++ = *(UINT32 *)a;
387
386
  break;
388
387
  case FFI_TYPE_SINT64:
389
388
  case FFI_TYPE_UINT64:
390
389
  case FFI_TYPE_POINTER:
390
+ *argp++ = *(UINT64 *)a;
391
+ break;
392
+ case FFI_TYPE_FLOAT:
393
+ flags |= SPARC_FLAG_FP_ARGS;
394
+ *argp++ = *(UINT32 *)a;
395
+ break;
391
396
  case FFI_TYPE_DOUBLE:
397
+ flags |= SPARC_FLAG_FP_ARGS;
392
398
  *argp++ = *(UINT64 *)a;
393
399
  break;
394
400
 
@@ -307,7 +307,7 @@ ffi_tramp_lock(void)
307
307
  }
308
308
 
309
309
  static void
310
- ffi_tramp_unlock()
310
+ ffi_tramp_unlock(void)
311
311
  {
312
312
  pthread_mutex_unlock (&tramp_globals_mutex);
313
313
  }
@@ -1,6 +1,6 @@
1
1
  /* -----------------------------------------------------------------------
2
- types.c - Copyright (c) 1996, 1998 Red Hat, Inc.
3
-
2
+ types.c - Copyright (c) 1996, 1998, 2024 Red Hat, Inc.
3
+
4
4
  Predefined ffi_types needed by libffi.
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining
@@ -87,7 +87,7 @@ FFI_TYPEDEF(double, double, FFI_TYPE_DOUBLE, const);
87
87
  #endif
88
88
 
89
89
  #ifdef __alpha__
90
- /* Even if we're not configured to default to 128-bit long double,
90
+ /* Even if we're not configured to default to 128-bit long double,
91
91
  maintain binary compatibility, as -mlong-double-128 can be used
92
92
  at any time. */
93
93
  /* Validate the hard-coded number below. */
@@ -95,14 +95,12 @@ FFI_TYPEDEF(double, double, FFI_TYPE_DOUBLE, const);
95
95
  # error FFI_TYPE_LONGDOUBLE out of date
96
96
  # endif
97
97
  const ffi_type ffi_type_longdouble = { 16, 16, 4, NULL };
98
- #elif FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
98
+ #else
99
99
  FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE, FFI_LDBL_CONST);
100
100
  #endif
101
101
 
102
102
  #ifdef FFI_TARGET_HAS_COMPLEX_TYPE
103
103
  FFI_COMPLEX_TYPEDEF(float, float, const);
104
104
  FFI_COMPLEX_TYPEDEF(double, double, const);
105
- #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
106
105
  FFI_COMPLEX_TYPEDEF(longdouble, long double, FFI_LDBL_CONST);
107
106
  #endif
108
- #endif
@@ -172,6 +172,19 @@ void,
172
172
  unbox_small_structs, (ffi_type type_ptr), {
173
173
  var type_id = FFI_TYPE__TYPEID(type_ptr);
174
174
  while (type_id === FFI_TYPE_STRUCT) {
175
+ // Don't unbox single element structs if they are bigger than 16 bytes. This
176
+ // is a work around for the fact that Python will give incorrect values for
177
+ // the size of the field in these cases: it says that the struct has pointer
178
+ // size and alignment and are of type pointer, even though it is more
179
+ // accurately a struct and has a larger size. Keeping it as a struct here
180
+ // will let us get the ABI right (which is in fact that the true argument is
181
+ // a pointer to the stack... so maybe Python issn't so wrong??)
182
+ //
183
+ // See the Python comment here:
184
+ // https://github.com/python/cpython/blob/a16a9f978f42b8a09297c1efbf33877f6388c403/Modules/_ctypes/stgdict.c#L718-L779
185
+ if (FFI_TYPE__SIZE(type_ptr) > 16) {
186
+ break;
187
+ }
175
188
  var elements = FFI_TYPE__ELEMENTS(type_ptr);
176
189
  var first_element = DEREF_U32(elements, 0);
177
190
  if (first_element === 0) {
@@ -227,7 +227,7 @@ EFI64(ffi_prep_closure_loc)(ffi_closure* closure,
227
227
  ffi_cif* cif,
228
228
  void (*fun)(ffi_cif*, void*, void**, void*),
229
229
  void *user_data,
230
- void *codeloc)
230
+ void *codeloc MAYBE_UNUSED)
231
231
  {
232
232
  static const unsigned char trampoline[FFI_TRAMPOLINE_SIZE - 8] = {
233
233
  /* endbr64 */
@@ -6,130 +6,82 @@ EXTRA_DEJAGNU_SITE_CONFIG=../local.exp
6
6
 
7
7
  CLEANFILES = *.exe core* *.log *.sum
8
8
 
9
- EXTRA_DIST = config/default.exp lib/libffi.exp lib/target-libpath.exp \
10
- lib/wrapper.exp libffi.bhaible/Makefile libffi.bhaible/README \
11
- libffi.bhaible/alignof.h libffi.bhaible/bhaible.exp \
12
- libffi.bhaible/test-call.c libffi.bhaible/test-callback.c \
13
- libffi.bhaible/testcases.c libffi.call/align_mixed.c \
14
- libffi.call/align_stdcall.c libffi.call/call.exp \
15
- libffi.call/err_bad_typedef.c libffi.call/ffitest.h \
16
- libffi.call/float.c libffi.call/float1.c libffi.call/float2.c \
17
- libffi.call/float3.c libffi.call/float4.c libffi.call/float_va.c \
18
- libffi.call/many.c libffi.call/many2.c libffi.call/many_double.c \
19
- libffi.call/many_mixed.c libffi.call/negint.c libffi.call/offsets.c \
20
- libffi.call/pr1172638.c libffi.call/promotion.c \
21
- libffi.call/pyobjc_tc.c libffi.call/return_dbl.c \
22
- libffi.call/return_dbl1.c libffi.call/return_dbl2.c \
23
- libffi.call/return_fl.c libffi.call/return_fl1.c \
24
- libffi.call/return_fl2.c libffi.call/return_fl3.c \
25
- libffi.call/return_ldl.c libffi.call/return_ll.c \
26
- libffi.call/return_ll1.c libffi.call/return_sc.c \
27
- libffi.call/return_sl.c libffi.call/return_uc.c \
28
- libffi.call/return_ul.c libffi.call/struct1.c libffi.call/struct10.c \
29
- libffi.call/struct2.c libffi.call/struct3.c libffi.call/struct4.c \
30
- libffi.call/struct5.c libffi.call/struct6.c libffi.call/struct7.c \
31
- libffi.call/struct8.c libffi.call/struct9.c \
32
- libffi.call/uninitialized.c libffi.call/va_1.c libffi.call/va_2.c \
33
- libffi.call/va_3.c libffi.call/va_struct1.c libffi.call/va_struct2.c \
34
- libffi.call/va_struct3.c libffi.call/struct_by_value_big.c \
35
- libffi.call/struct_return_8H.c libffi.call/struct_return_2H.c \
36
- libffi.call/struct_by_value_2.c libffi.call/struct_by_value_3.c \
37
- libffi.call/struct_by_value_4.c libffi.call/struct_by_value_small.c \
38
- libffi.call/strlen2.c libffi.call/strlen3.c libffi.call/strlen4.c \
39
- libffi.call/strlen.c libffi.call/va_3.c \
40
- libffi.call/struct_by_value_2.c libffi.call/struct_by_value_3.c \
41
- libffi.call/struct_by_value_4.c libffi.closures/closure.exp \
42
- libffi.call/struct_by_value_3f.c libffi.call/struct_by_value_4f.c \
43
- libffi.call/s55.c libffi.call/bpo-38748.c \
44
- libffi.closures/closure_fn0.c libffi.closures/closure_fn1.c \
45
- libffi.closures/closure_fn2.c libffi.closures/closure_fn3.c \
46
- libffi.closures/closure_fn4.c libffi.closures/closure_fn5.c \
47
- libffi.closures/closure_fn6.c libffi.closures/closure_loc_fn0.c \
48
- libffi.closures/closure_simple.c libffi.closures/cls_12byte.c \
49
- libffi.closures/cls_16byte.c libffi.closures/cls_18byte.c \
50
- libffi.closures/cls_19byte.c libffi.closures/cls_1_1byte.c \
51
- libffi.closures/cls_20byte.c libffi.closures/cls_20byte1.c \
52
- libffi.closures/cls_24byte.c libffi.closures/cls_2byte.c \
53
- libffi.closures/cls_3_1byte.c libffi.closures/cls_3byte1.c \
54
- libffi.closures/cls_3byte2.c libffi.closures/cls_3float.c \
55
- libffi.closures/cls_4_1byte.c libffi.closures/cls_4byte.c \
56
- libffi.closures/cls_5_1_byte.c libffi.closures/cls_5byte.c \
57
- libffi.closures/cls_64byte.c libffi.closures/cls_6_1_byte.c \
58
- libffi.closures/cls_6byte.c libffi.closures/cls_7_1_byte.c \
59
- libffi.closures/cls_7byte.c libffi.closures/cls_8byte.c \
60
- libffi.closures/cls_9byte1.c libffi.closures/cls_9byte2.c \
61
- libffi.closures/cls_align_double.c libffi.closures/cls_align_float.c \
62
- libffi.closures/cls_align_longdouble.c \
63
- libffi.closures/cls_align_pointer.c \
64
- libffi.closures/cls_align_sint16.c libffi.closures/cls_align_sint32.c \
65
- libffi.closures/cls_align_sint64.c libffi.closures/cls_align_uint16.c \
66
- libffi.closures/cls_align_uint32.c libffi.closures/cls_align_uint64.c \
67
- libffi.closures/cls_dbls_struct.c libffi.closures/cls_double.c \
68
- libffi.closures/cls_double_va.c libffi.closures/cls_float.c \
69
- libffi.closures/cls_longdouble_va.c \
70
- libffi.closures/cls_many_mixed_args.c \
71
- libffi.closures/cls_many_mixed_float_double.c \
72
- libffi.closures/cls_multi_schar.c libffi.closures/cls_multi_sshort.c \
73
- libffi.closures/cls_multi_sshortchar.c \
74
- libffi.closures/cls_multi_uchar.c libffi.closures/cls_multi_ushort.c \
75
- libffi.closures/cls_multi_ushortchar.c libffi.closures/cls_pointer.c \
76
- libffi.closures/cls_pointer_stack.c libffi.closures/cls_schar.c \
77
- libffi.closures/cls_sint.c libffi.closures/cls_sshort.c \
78
- libffi.closures/cls_struct_va1.c libffi.closures/cls_uchar.c \
79
- libffi.closures/cls_uint.c libffi.closures/cls_uint_va.c \
80
- libffi.closures/cls_ulong_va.c libffi.closures/cls_ulonglong.c \
81
- libffi.closures/cls_ushort.c libffi.closures/err_bad_abi.c \
82
- libffi.closures/ffitest.h libffi.closures/nested_struct.c \
83
- libffi.closures/nested_struct1.c libffi.closures/nested_struct10.c \
84
- libffi.closures/nested_struct11.c libffi.closures/nested_struct12.c \
85
- libffi.closures/nested_struct13.c libffi.closures/nested_struct2.c \
86
- libffi.closures/nested_struct3.c libffi.closures/nested_struct4.c \
87
- libffi.closures/nested_struct5.c libffi.closures/nested_struct6.c \
88
- libffi.closures/nested_struct7.c libffi.closures/nested_struct8.c \
89
- libffi.closures/nested_struct9.c libffi.closures/problem1.c \
90
- libffi.closures/single_entry_structs1.c \
91
- libffi.closures/single_entry_structs2.c \
92
- libffi.closures/single_entry_structs3.c libffi.closures/stret_large.c \
93
- libffi.closures/stret_large2.c libffi.closures/stret_medium.c \
94
- libffi.closures/stret_medium2.c libffi.closures/testclosure.c \
95
- libffi.closures/unwindtest.cc libffi.closures/unwindtest_ffi_call.cc \
96
- libffi.closures/cls_align_longdouble_split.c \
97
- libffi.closures/cls_align_longdouble_split2.c \
98
- libffi.closures/cls_longdouble.c libffi.closures/huge_struct.c \
99
- libffi.complex/cls_align_complex.inc \
100
- libffi.complex/cls_align_complex_double.c \
101
- libffi.complex/cls_align_complex_float.c \
102
- libffi.complex/cls_align_complex_longdouble.c \
103
- libffi.complex/cls_complex.inc libffi.complex/cls_complex_double.c \
104
- libffi.complex/cls_complex_float.c \
105
- libffi.complex/cls_complex_longdouble.c \
106
- libffi.complex/cls_complex_struct.inc \
107
- libffi.complex/cls_complex_struct_double.c \
108
- libffi.complex/cls_complex_struct_float.c \
109
- libffi.complex/cls_complex_struct_longdouble.c \
110
- libffi.complex/cls_complex_va.inc \
111
- libffi.complex/cls_complex_va_double.c \
112
- libffi.complex/cls_complex_va_float.c \
113
- libffi.complex/cls_complex_va_longdouble.c libffi.complex/complex.exp \
114
- libffi.complex/complex.inc libffi.complex/complex_defs_double.inc \
115
- libffi.complex/complex_defs_float.inc \
116
- libffi.complex/complex_defs_longdouble.inc \
117
- libffi.complex/complex_double.c libffi.complex/complex_float.c \
118
- libffi.complex/complex_int.c libffi.complex/complex_longdouble.c \
119
- libffi.complex/ffitest.h libffi.complex/many_complex.inc \
120
- libffi.complex/many_complex_double.c \
121
- libffi.complex/many_complex_float.c \
122
- libffi.complex/many_complex_longdouble.c \
123
- libffi.complex/return_complex.inc libffi.complex/return_complex1.inc \
124
- libffi.complex/return_complex1_double.c \
125
- libffi.complex/return_complex1_float.c \
126
- libffi.complex/return_complex1_longdouble.c \
127
- libffi.complex/return_complex2.inc \
128
- libffi.complex/return_complex2_double.c \
129
- libffi.complex/return_complex2_float.c \
130
- libffi.complex/return_complex2_longdouble.c \
131
- libffi.complex/return_complex_double.c \
132
- libffi.complex/return_complex_float.c \
133
- libffi.complex/return_complex_longdouble.c libffi.go/aa-direct.c \
134
- libffi.go/closure1.c libffi.go/ffitest.h libffi.go/go.exp \
135
- libffi.go/static-chain.h
9
+ EXTRA_DIST = config/default.exp emscripten/build.sh emscripten/conftest.py \
10
+ emscripten/node-tests.sh emscripten/test.html emscripten/test_libffi.py \
11
+ emscripten/build-tests.sh lib/libffi.exp lib/target-libpath.exp \
12
+ lib/wrapper.exp libffi.bhaible/Makefile libffi.bhaible/README \
13
+ libffi.bhaible/alignof.h libffi.bhaible/bhaible.exp libffi.bhaible/test-call.c \
14
+ libffi.bhaible/test-callback.c libffi.bhaible/testcases.c libffi.call/align_mixed.c \
15
+ libffi.call/align_stdcall.c libffi.call/bpo_38748.c libffi.call/call.exp \
16
+ libffi.call/err_bad_typedef.c libffi.call/ffitest.h libffi.call/float.c \
17
+ libffi.call/float1.c libffi.call/float2.c libffi.call/float3.c \
18
+ libffi.call/float4.c libffi.call/float_va.c libffi.call/many.c \
19
+ libffi.call/many2.c libffi.call/many_double.c libffi.call/many_mixed.c \
20
+ libffi.call/negint.c libffi.call/offsets.c libffi.call/pr1172638.c \
21
+ libffi.call/promotion.c libffi.call/pyobjc_tc.c libffi.call/return_dbl.c \
22
+ libffi.call/return_dbl1.c libffi.call/return_dbl2.c libffi.call/return_fl.c \
23
+ libffi.call/return_fl1.c libffi.call/return_fl2.c libffi.call/return_fl3.c \
24
+ libffi.call/return_ldl.c libffi.call/return_ll.c libffi.call/return_ll1.c \
25
+ libffi.call/return_sc.c libffi.call/return_sl.c libffi.call/return_uc.c \
26
+ libffi.call/return_ul.c libffi.call/s55.c libffi.call/strlen.c \
27
+ libffi.call/strlen2.c libffi.call/strlen3.c libffi.call/strlen4.c \
28
+ libffi.call/struct1.c libffi.call/struct10.c libffi.call/struct2.c \
29
+ libffi.call/struct3.c libffi.call/struct4.c libffi.call/struct5.c \
30
+ libffi.call/struct6.c libffi.call/struct7.c libffi.call/struct8.c \
31
+ libffi.call/struct9.c libffi.call/struct_by_value_2.c libffi.call/struct_by_value_3.c \
32
+ libffi.call/struct_by_value_3f.c libffi.call/struct_by_value_4.c libffi.call/struct_by_value_4f.c \
33
+ libffi.call/struct_by_value_big.c libffi.call/struct_by_value_small.c libffi.call/struct_return_2H.c \
34
+ libffi.call/struct_return_8H.c libffi.call/uninitialized.c libffi.call/va_1.c \
35
+ libffi.call/va_2.c libffi.call/va_3.c libffi.call/va_struct1.c \
36
+ libffi.call/va_struct2.c libffi.call/va_struct3.c libffi.call/callback.c \
37
+ libffi.call/callback2.c libffi.call/callback3.c libffi.call/callback4.c \
38
+ libffi.closures/closure.exp libffi.closures/closure_fn0.c libffi.closures/closure_fn1.c \
39
+ libffi.closures/closure_fn2.c libffi.closures/closure_fn3.c libffi.closures/closure_fn4.c \
40
+ libffi.closures/closure_fn5.c libffi.closures/closure_fn6.c libffi.closures/closure_loc_fn0.c \
41
+ libffi.closures/closure_simple.c libffi.closures/cls_12byte.c libffi.closures/cls_16byte.c \
42
+ libffi.closures/cls_18byte.c libffi.closures/cls_19byte.c libffi.closures/cls_1_1byte.c \
43
+ libffi.closures/cls_20byte.c libffi.closures/cls_20byte1.c libffi.closures/cls_24byte.c \
44
+ libffi.closures/cls_2byte.c libffi.closures/cls_3_1byte.c libffi.closures/cls_3byte1.c \
45
+ libffi.closures/cls_3byte2.c libffi.closures/cls_3float.c libffi.closures/cls_4_1byte.c \
46
+ libffi.closures/cls_4byte.c libffi.closures/cls_5_1_byte.c libffi.closures/cls_5byte.c \
47
+ libffi.closures/cls_64byte.c libffi.closures/cls_6_1_byte.c libffi.closures/cls_6byte.c \
48
+ libffi.closures/cls_7_1_byte.c libffi.closures/cls_7byte.c libffi.closures/cls_8byte.c \
49
+ libffi.closures/cls_9byte1.c libffi.closures/cls_9byte2.c libffi.closures/cls_align_double.c \
50
+ libffi.closures/cls_align_float.c libffi.closures/cls_align_longdouble.c libffi.closures/cls_align_longdouble_split.c \
51
+ libffi.closures/cls_align_longdouble_split2.c libffi.closures/cls_align_pointer.c libffi.closures/cls_align_sint16.c \
52
+ libffi.closures/cls_align_sint32.c libffi.closures/cls_align_sint64.c libffi.closures/cls_align_uint16.c \
53
+ libffi.closures/cls_align_uint32.c libffi.closures/cls_align_uint64.c libffi.closures/cls_dbls_struct.c \
54
+ libffi.closures/cls_double.c libffi.closures/cls_double_va.c libffi.closures/cls_float.c \
55
+ libffi.closures/cls_longdouble.c libffi.closures/cls_longdouble_va.c libffi.closures/cls_many_mixed_args.c \
56
+ libffi.closures/cls_many_mixed_float_double.c libffi.closures/cls_multi_schar.c libffi.closures/cls_multi_sshort.c \
57
+ libffi.closures/cls_multi_sshortchar.c libffi.closures/cls_multi_uchar.c libffi.closures/cls_multi_ushort.c \
58
+ libffi.closures/cls_multi_ushortchar.c libffi.closures/cls_pointer.c libffi.closures/cls_pointer_stack.c \
59
+ libffi.closures/cls_schar.c libffi.closures/cls_sint.c libffi.closures/cls_sshort.c \
60
+ libffi.closures/cls_struct_va1.c libffi.closures/cls_uchar.c libffi.closures/cls_uint.c \
61
+ libffi.closures/cls_uint_va.c libffi.closures/cls_ulong_va.c libffi.closures/cls_ulonglong.c \
62
+ libffi.closures/cls_ushort.c libffi.closures/err_bad_abi.c libffi.closures/ffitest.h \
63
+ libffi.closures/huge_struct.c libffi.closures/nested_struct.c libffi.closures/nested_struct1.c \
64
+ libffi.closures/nested_struct10.c libffi.closures/nested_struct11.c libffi.closures/nested_struct12.c \
65
+ libffi.closures/nested_struct13.c libffi.closures/nested_struct2.c libffi.closures/nested_struct3.c \
66
+ libffi.closures/nested_struct4.c libffi.closures/nested_struct5.c libffi.closures/nested_struct6.c \
67
+ libffi.closures/nested_struct7.c libffi.closures/nested_struct8.c libffi.closures/nested_struct9.c \
68
+ libffi.closures/problem1.c libffi.closures/single_entry_structs1.c libffi.closures/single_entry_structs2.c \
69
+ libffi.closures/single_entry_structs3.c libffi.closures/stret_large.c libffi.closures/stret_large2.c \
70
+ libffi.closures/stret_medium.c libffi.closures/stret_medium2.c libffi.closures/testclosure.c \
71
+ libffi.closures/unwindtest.cc libffi.closures/unwindtest_ffi_call.cc libffi.complex/cls_align_complex.inc \
72
+ libffi.complex/cls_align_complex_double.c libffi.complex/cls_align_complex_float.c libffi.complex/cls_align_complex_longdouble.c \
73
+ libffi.complex/cls_complex.inc libffi.complex/cls_complex_double.c libffi.complex/cls_complex_float.c \
74
+ libffi.complex/cls_complex_longdouble.c libffi.complex/cls_complex_struct.inc libffi.complex/cls_complex_struct_double.c \
75
+ libffi.complex/cls_complex_struct_float.c libffi.complex/cls_complex_struct_longdouble.c libffi.complex/cls_complex_va.inc \
76
+ libffi.complex/cls_complex_va_double.c libffi.complex/cls_complex_va_float.c libffi.complex/cls_complex_va_longdouble.c \
77
+ libffi.complex/complex.exp libffi.complex/complex.inc libffi.complex/complex_defs_double.inc \
78
+ libffi.complex/complex_defs_float.inc libffi.complex/complex_defs_longdouble.inc libffi.complex/complex_double.c \
79
+ libffi.complex/complex_float.c libffi.complex/complex_int.c libffi.complex/complex_longdouble.c \
80
+ libffi.complex/ffitest.h libffi.complex/many_complex.inc libffi.complex/many_complex_double.c \
81
+ libffi.complex/many_complex_float.c libffi.complex/many_complex_longdouble.c libffi.complex/return_complex.inc \
82
+ libffi.complex/return_complex1.inc libffi.complex/return_complex1_double.c libffi.complex/return_complex1_float.c \
83
+ libffi.complex/return_complex1_longdouble.c libffi.complex/return_complex2.inc libffi.complex/return_complex2_double.c \
84
+ libffi.complex/return_complex2_float.c libffi.complex/return_complex2_longdouble.c libffi.complex/return_complex_double.c \
85
+ libffi.complex/return_complex_float.c libffi.complex/return_complex_longdouble.c libffi.go/aa-direct.c \
86
+ libffi.go/closure1.c libffi.go/ffitest.h libffi.go/go.exp \
87
+ libffi.go/static-chain.h Makefile.am Makefile.in