ffi 1.12.2 → 1.14.2

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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +82 -0
  3. data/Gemfile +4 -2
  4. data/README.md +10 -2
  5. data/Rakefile +31 -43
  6. data/ext/ffi_c/AbstractMemory.c +24 -25
  7. data/ext/ffi_c/Buffer.c +4 -9
  8. data/ext/ffi_c/Call.c +3 -14
  9. data/ext/ffi_c/ClosurePool.c +75 -25
  10. data/ext/ffi_c/ClosurePool.h +3 -1
  11. data/ext/ffi_c/DynamicLibrary.c +1 -6
  12. data/ext/ffi_c/Function.c +15 -35
  13. data/ext/ffi_c/FunctionInfo.c +3 -8
  14. data/ext/ffi_c/LastError.c +2 -6
  15. data/ext/ffi_c/LongDouble.c +5 -3
  16. data/ext/ffi_c/LongDouble.h +0 -4
  17. data/ext/ffi_c/MemoryPointer.c +3 -8
  18. data/ext/ffi_c/MethodHandle.c +21 -31
  19. data/ext/ffi_c/MethodHandle.h +3 -2
  20. data/ext/ffi_c/Platform.c +3 -7
  21. data/ext/ffi_c/Pointer.c +25 -26
  22. data/ext/ffi_c/Struct.c +3 -6
  23. data/ext/ffi_c/StructByValue.c +2 -7
  24. data/ext/ffi_c/StructLayout.c +9 -7
  25. data/ext/ffi_c/Thread.c +0 -8
  26. data/ext/ffi_c/Thread.h +1 -9
  27. data/ext/ffi_c/Type.c +1 -1
  28. data/ext/ffi_c/Variadic.c +2 -7
  29. data/ext/ffi_c/compat.h +4 -0
  30. data/ext/ffi_c/extconf.rb +33 -23
  31. data/ext/ffi_c/libffi/.travis.yml +4 -0
  32. data/ext/ffi_c/libffi/.travis/bfin-sim.exp +1 -1
  33. data/ext/ffi_c/libffi/.travis/build.sh +4 -0
  34. data/ext/ffi_c/libffi/.travis/m32r-sim.exp +1 -1
  35. data/ext/ffi_c/libffi/.travis/moxie-sim.exp +1 -1
  36. data/ext/ffi_c/libffi/.travis/or1k-sim.exp +1 -1
  37. data/ext/ffi_c/libffi/.travis/powerpc-eabisim.exp +1 -1
  38. data/ext/ffi_c/libffi/.travis/wine-sim.exp +1 -1
  39. data/ext/ffi_c/libffi/Makefile.am +49 -58
  40. data/ext/ffi_c/libffi/README.md +11 -1
  41. data/ext/ffi_c/libffi/config.guess +552 -331
  42. data/ext/ffi_c/libffi/config.sub +1321 -1306
  43. data/ext/ffi_c/libffi/configure.ac +31 -10
  44. data/ext/ffi_c/libffi/configure.host +32 -20
  45. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  46. data/ext/ffi_c/libffi/doc/libffi.texi +997 -0
  47. data/ext/ffi_c/libffi/doc/version.texi +4 -0
  48. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +1 -1
  49. data/ext/ffi_c/libffi/include/ffi.h.in +8 -0
  50. data/ext/ffi_c/libffi/libffi.map.in +8 -12
  51. data/ext/ffi_c/libffi/libtool-version +1 -1
  52. data/ext/ffi_c/libffi/msvcc.sh +11 -11
  53. data/ext/ffi_c/libffi/src/aarch64/ffi.c +51 -35
  54. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +10 -5
  55. data/ext/ffi_c/libffi/src/aarch64/internal.h +1 -0
  56. data/ext/ffi_c/libffi/src/aarch64/sysv.S +14 -3
  57. data/ext/ffi_c/libffi/src/aarch64/win64_armasm.S +1 -1
  58. data/ext/ffi_c/libffi/src/arm/ffi.c +22 -0
  59. data/ext/ffi_c/libffi/src/arm/sysv.S +4 -4
  60. data/ext/ffi_c/libffi/src/closures.c +33 -10
  61. data/ext/ffi_c/libffi/src/csky/ffi.c +395 -0
  62. data/ext/ffi_c/libffi/src/csky/ffitarget.h +63 -0
  63. data/ext/ffi_c/libffi/src/csky/sysv.S +371 -0
  64. data/ext/ffi_c/libffi/src/dlmalloc.c +1 -1
  65. data/ext/ffi_c/libffi/src/kvx/asm.h +5 -0
  66. data/ext/ffi_c/libffi/src/kvx/ffi.c +273 -0
  67. data/ext/ffi_c/libffi/src/kvx/ffitarget.h +75 -0
  68. data/ext/ffi_c/libffi/src/kvx/sysv.S +127 -0
  69. data/ext/ffi_c/libffi/src/mips/ffi.c +5 -1
  70. data/ext/ffi_c/libffi/src/mips/ffitarget.h +1 -1
  71. data/ext/ffi_c/libffi/src/pa/ffi.c +46 -91
  72. data/ext/ffi_c/libffi/src/pa/ffitarget.h +1 -6
  73. data/ext/ffi_c/libffi/src/pa/hpux32.S +4 -2
  74. data/ext/ffi_c/libffi/src/pa/linux.S +4 -2
  75. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +13 -1
  76. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +1 -1
  77. data/ext/ffi_c/libffi/src/powerpc/linux64.S +8 -0
  78. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +13 -1
  79. data/ext/ffi_c/libffi/src/powerpc/sysv.S +5 -7
  80. data/ext/ffi_c/libffi/src/prep_cif.c +1 -1
  81. data/ext/ffi_c/libffi/src/x86/ffi.c +15 -6
  82. data/ext/ffi_c/libffi/src/x86/ffi64.c +17 -8
  83. data/ext/ffi_c/libffi/src/x86/ffitarget.h +15 -2
  84. data/ext/ffi_c/libffi/src/x86/ffiw64.c +15 -8
  85. data/ext/ffi_c/libffi/src/x86/sysv.S +15 -6
  86. data/ext/ffi_c/libffi/src/x86/unix64.S +59 -4
  87. data/ext/ffi_c/libffi/src/x86/win64.S +7 -3
  88. data/ext/ffi_c/libffi/src/x86/win64_intel.S +3 -2
  89. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +22 -2
  90. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +4 -4
  91. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +2 -2
  92. data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +2 -0
  93. data/ffi.gemspec +2 -2
  94. data/lib/ffi.rb +10 -2
  95. data/lib/ffi/abstract_memory.rb +44 -0
  96. data/lib/ffi/autopointer.rb +1 -1
  97. data/lib/ffi/ffi.rb +1 -0
  98. data/lib/ffi/io.rb +3 -3
  99. data/lib/ffi/library.rb +6 -2
  100. data/lib/ffi/managedstruct.rb +2 -2
  101. data/lib/ffi/platform.rb +21 -8
  102. data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
  103. data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
  104. data/lib/ffi/platform/arm-linux/types.conf +32 -4
  105. data/lib/ffi/platform/i386-windows/types.conf +26 -79
  106. data/lib/ffi/platform/powerpc-linux/types.conf +32 -2
  107. data/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
  108. data/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
  109. data/lib/ffi/platform/x86_64-darwin/types.conf +4 -0
  110. data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +4 -22
  111. data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
  112. data/lib/ffi/platform/x86_64-linux/types.conf +21 -0
  113. data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
  114. data/lib/ffi/platform/x86_64-windows/types.conf +10 -78
  115. data/lib/ffi/pointer.rb +21 -14
  116. data/lib/ffi/struct.rb +8 -2
  117. data/lib/ffi/tools/types_generator.rb +2 -0
  118. data/lib/ffi/variadic.rb +1 -1
  119. data/lib/ffi/version.rb +1 -1
  120. data/samples/getlogin.rb +1 -1
  121. data/samples/getpid.rb +1 -1
  122. data/samples/gettimeofday.rb +8 -8
  123. data/samples/hello.rb +2 -1
  124. data/samples/inotify.rb +1 -1
  125. data/samples/pty.rb +1 -2
  126. data/samples/qsort.rb +0 -1
  127. metadata +18 -12
  128. data/.appveyor.yml +0 -27
  129. data/.gitignore +0 -25
  130. data/.gitmodules +0 -4
  131. data/.travis.yml +0 -44
  132. data/.yardopts +0 -5
  133. data/ext/ffi_c/win32/stdbool.h +0 -8
  134. data/ext/ffi_c/win32/stdint.h +0 -201
  135. data/samples/sample_helper.rb +0 -6
@@ -32,12 +32,9 @@
32
32
 
33
33
  #ifndef _MSC_VER
34
34
  # include <sys/param.h>
35
- # include <stdint.h>
36
- # include <stdbool.h>
37
- #else
38
- # include "win32/stdbool.h"
39
- # include "win32/stdint.h"
40
35
  #endif
36
+ #include <stdint.h>
37
+ #include <stdbool.h>
41
38
  #include <ruby.h>
42
39
  #include "rbffi.h"
43
40
  #include "compat.h"
@@ -350,8 +347,13 @@ array_field_put(VALUE self, VALUE pointer, VALUE value)
350
347
  argv[0] = INT2FIX(f->offset);
351
348
  argv[1] = value;
352
349
 
353
- rb_funcall2(pointer, rb_intern("put_string"), 2, argv);
354
-
350
+ if (RSTRING_LEN(value) < array->length) {
351
+ rb_funcall2(pointer, rb_intern("put_string"), 2, argv);
352
+ } else if (RSTRING_LEN(value) == array->length) {
353
+ rb_funcall2(pointer, rb_intern("put_bytes"), 2, argv);
354
+ } else {
355
+ rb_raise(rb_eIndexError, "String is longer (%ld bytes) than the char array (%d bytes)", RSTRING_LEN(value), array->length);
356
+ }
355
357
  } else {
356
358
  #ifdef notyet
357
359
  MemoryOp* op;
@@ -28,12 +28,7 @@
28
28
  */
29
29
 
30
30
  #include <stddef.h>
31
- #ifndef _MSC_VER
32
31
  #include <stdbool.h>
33
- #else
34
- # include "win32/stdbool.h"
35
- # include "win32/stdint.h"
36
- #endif
37
32
 
38
33
  #if defined(__CYGWIN__) || !defined(_WIN32)
39
34
  # include <pthread.h>
@@ -74,9 +69,6 @@ void
74
69
  rbffi_frame_push(rbffi_frame_t* frame)
75
70
  {
76
71
  memset(frame, 0, sizeof(*frame));
77
- #ifndef HAVE_RUBY_THREAD_HAS_GVL_P
78
- frame->has_gvl = true;
79
- #endif
80
72
  frame->exc = Qnil;
81
73
 
82
74
  #ifdef _WIN32
@@ -30,12 +30,7 @@
30
30
  #ifndef RBFFI_THREAD_H
31
31
  #define RBFFI_THREAD_H
32
32
 
33
- #ifndef _MSC_VER
34
- # include <stdbool.h>
35
- #else
36
- # include "win32/stdbool.h"
37
- # include "win32/stdint.h"
38
- #endif
33
+ #include <stdbool.h>
39
34
  #include <ruby.h>
40
35
  #include "extconf.h"
41
36
 
@@ -66,9 +61,6 @@ typedef struct rbffi_frame {
66
61
  struct thread_data* td;
67
62
  #endif
68
63
  struct rbffi_frame* prev;
69
- #ifndef HAVE_RUBY_THREAD_HAS_GVL_P
70
- bool has_gvl;
71
- #endif
72
64
  VALUE exc;
73
65
  } rbffi_frame_t;
74
66
 
@@ -28,7 +28,7 @@
28
28
  */
29
29
 
30
30
  #ifndef _MSC_VER
31
- #include <sys/param.h>
31
+ # include <sys/param.h>
32
32
  #endif
33
33
 
34
34
  #include <sys/types.h>
@@ -33,13 +33,8 @@
33
33
  #include <sys/types.h>
34
34
 
35
35
  #include <stdio.h>
36
- #ifndef _MSC_VER
37
- # include <stdint.h>
38
- # include <stdbool.h>
39
- #else
40
- # include "win32/stdbool.h"
41
- # include "win32/stdint.h"
42
- #endif
36
+ #include <stdint.h>
37
+ #include <stdbool.h>
43
38
  #include <ruby.h>
44
39
 
45
40
  #include <ffi.h>
@@ -64,6 +64,10 @@
64
64
  # define unlikely(x) (x)
65
65
  #endif
66
66
 
67
+ #ifdef _MSC_VER
68
+ #define ffi_type_longdouble ffi_type_double
69
+ #endif
70
+
67
71
  #ifndef MAX
68
72
  # define MAX(a, b) ((a) < (b) ? (b) : (a))
69
73
  #endif
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
3
+ if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
4
4
  require 'mkmf'
5
5
  require 'rbconfig'
6
6
 
@@ -8,14 +8,22 @@ if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
8
8
  # We need pkg_config or ffi.h
9
9
  libffi_ok = pkg_config("libffi") ||
10
10
  have_header("ffi.h") ||
11
- find_header("ffi.h", "/usr/local/include", "/usr/include/ffi")
11
+ find_header("ffi.h", "/usr/local/include", "/usr/include/ffi",
12
+ "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/ffi",
13
+ "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ffi") ||
14
+ (find_header("ffi.h", `xcrun --sdk macosx --show-sdk-path`.strip + "/usr/include/ffi") rescue false)
12
15
 
13
- # Ensure we can link to ffi_call
14
- libffi_ok &&= have_library("ffi", "ffi_call", [ "ffi.h" ]) ||
15
- have_library("libffi", "ffi_call", [ "ffi.h" ])
16
+ # Ensure we can link to ffi_prep_closure_loc
17
+ libffi_ok &&= have_library("ffi", "ffi_prep_closure_loc", [ "ffi.h" ]) ||
18
+ have_library("libffi", "ffi_prep_closure_loc", [ "ffi.h" ]) ||
19
+ have_library("libffi-8", "ffi_prep_closure_loc", [ "ffi.h" ])
16
20
 
17
- # And we need a libffi version recent enough to provide ffi_closure_alloc
18
- libffi_ok &&= have_func("ffi_closure_alloc")
21
+ if RbConfig::CONFIG['host_os'] =~ /mswin/
22
+ have_library('libffi_convenience')
23
+ have_library('shlwapi')
24
+ end
25
+
26
+ libffi_ok
19
27
  end
20
28
 
21
29
  dir_config("ffi_c")
@@ -36,40 +44,42 @@ if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
36
44
  abort "system libffi is not usable" unless system_libffi_usable?
37
45
  end
38
46
 
39
- have_header('shlwapi.h')
40
- have_func('rb_thread_call_without_gvl') || abort("Ruby C-API function `rb_thread_call_without_gvl` is missing")
41
- have_func('ruby_native_thread_p')
42
- if RUBY_VERSION >= "2.3.0"
43
- # On OSX and Linux ruby_thread_has_gvl_p() is detected but fails at runtime for ruby < 2.3.0
44
- have_func('ruby_thread_has_gvl_p')
45
- end
46
-
47
47
  if system_libffi
48
48
  have_func('ffi_prep_cif_var')
49
49
  $defs << "-DHAVE_RAW_API" if have_func("ffi_raw_call") && have_func("ffi_prep_raw_closure")
50
50
  else
51
51
  $defs << "-DHAVE_FFI_PREP_CIF_VAR"
52
52
  $defs << "-DUSE_INTERNAL_LIBFFI"
53
+
54
+ # Ensure libffi symbols aren't exported when using static libffi.
55
+ # This is to avoid interference with other gems like fiddle.
56
+ # See https://github.com/ffi/ffi/issues/835
57
+ append_ldflags "-Wl,--exclude-libs,ALL"
58
+ end
59
+
60
+ ffi_alloc_default = RbConfig::CONFIG['host_os'] =~ /darwin/i && RbConfig::CONFIG['host'] =~ /arm/i
61
+ if enable_config('libffi-alloc', ffi_alloc_default)
62
+ $defs << "-DUSE_FFI_ALLOC"
53
63
  end
54
64
 
55
65
  $defs << "-DHAVE_EXTCONF_H" if $defs.empty? # needed so create_header works
56
- $defs << "-DFFI_BUILDING" if RbConfig::CONFIG['host_os'] =~ /mswin/ # for compatibility with newer libffi
57
66
 
58
67
  create_header
59
-
60
- $LOCAL_LIBS << " ./libffi/.libs/libffi_convenience.lib" if !system_libffi && RbConfig::CONFIG['host_os'] =~ /mswin/
61
-
62
68
  create_makefile("ffi_c")
69
+
63
70
  unless system_libffi
64
71
  File.open("Makefile", "a") do |mf|
65
72
  mf.puts "LIBFFI_HOST=--host=#{RbConfig::CONFIG['host_alias']}" if RbConfig::CONFIG.has_key?("host_alias")
66
- if RbConfig::CONFIG['host_os'].downcase =~ /darwin/
73
+ if RbConfig::CONFIG['host_os'] =~ /darwin/i
74
+ if RbConfig::CONFIG['host'] =~ /arm/i
75
+ mf.puts "LIBFFI_HOST=--host=aarch64-apple-#{RbConfig::CONFIG['host_os']}"
76
+ end
67
77
  mf.puts "include ${srcdir}/libffi.darwin.mk"
68
- elsif RbConfig::CONFIG['host_os'].downcase =~ /bsd/
78
+ elsif RbConfig::CONFIG['host_os'] =~ /bsd/i
69
79
  mf.puts '.include "${srcdir}/libffi.bsd.mk"'
70
- elsif RbConfig::CONFIG['host_os'].downcase =~ /mswin64/
80
+ elsif RbConfig::CONFIG['host_os'] =~ /mswin64/i
71
81
  mf.puts '!include $(srcdir)/libffi.vc64.mk'
72
- elsif RbConfig::CONFIG['host_os'].downcase =~ /mswin32/
82
+ elsif RbConfig::CONFIG['host_os'] =~ /mswin32/i
73
83
  mf.puts '!include $(srcdir)/libffi.vc.mk'
74
84
  else
75
85
  mf.puts "include ${srcdir}/libffi.mk"
@@ -39,6 +39,10 @@ matrix:
39
39
  - os: linux
40
40
  arch: arm64
41
41
  env: HOST=aarch64-linux-gnu
42
+ - os: linux
43
+ arch: arm64
44
+ env: HOST=aarch64-linux-gnu
45
+ compiler: clang
42
46
  - os: linux
43
47
  env: HOST=arm32v7-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O0"
44
48
  - os: linux
@@ -14,7 +14,7 @@
14
14
  #
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with DejaGnu; if not, write to the Free Software Foundation,
17
- # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
+ # Inc., 51 Franklin Street, Fifth Floor, MA 02110, USA.
18
18
 
19
19
  # This is a list of toolchains that are supported on this board.
20
20
  set_board_info target_install {bfin-elf}
@@ -2,6 +2,10 @@
2
2
 
3
3
  set -x
4
4
 
5
+ # This is a policy bound API key. It can only be used with
6
+ # https://github.com/libffi/rlgl-policy.git.
7
+ RLGL_KEY=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI
8
+
5
9
  if [ -z ${QEMU_CPU+x} ]; then
6
10
  export SET_QEMU_CPU=
7
11
  else
@@ -14,7 +14,7 @@
14
14
  #
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with DejaGnu; if not, write to the Free Software Foundation,
17
- # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
+ # Inc., 51 Franklin Street, Fifth Floor, MA 02110, USA.
18
18
 
19
19
  # This is a list of toolchains that are supported on this board.
20
20
  set_board_info target_install {m32r-elf}
@@ -14,7 +14,7 @@
14
14
  #
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with DejaGnu; if not, write to the Free Software Foundation,
17
- # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
+ # Inc., 51 Franklin Street, Fifth Floor, MA 02110, USA.
18
18
 
19
19
  # This is a list of toolchains that are supported on this board.
20
20
  set_board_info target_install {moxie-elf}
@@ -14,7 +14,7 @@
14
14
  #
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with DejaGnu; if not, write to the Free Software Foundation,
17
- # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
+ # Inc., 51 Franklin Street, Fifth Floor, MA 02110, USA.
18
18
 
19
19
  # This is a list of toolchains that are supported on this board.
20
20
  set_board_info target_install {or1k-elf}
@@ -14,7 +14,7 @@
14
14
  #
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with DejaGnu; if not, write to the Free Software Foundation,
17
- # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
+ # Inc., 51 Franklin Street, Fifth Floor, MA 02110, USA.
18
18
 
19
19
  # This is a list of toolchains that are supported on this board.
20
20
  set_board_info target_install {powerpc-eabisim}
@@ -14,7 +14,7 @@
14
14
  #
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with DejaGnu; if not, write to the Free Software Foundation,
17
- # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
+ # Inc., 51 Franklin Street, Fifth Floor, MA 02110, USA.
18
18
 
19
19
  # This is a list of toolchains that are supported on this board.
20
20
  set_board_info target_install {i686-w64-mingw32}
@@ -44,65 +44,55 @@ if FFI_DEBUG
44
44
  libffi_la_SOURCES += src/debug.c
45
45
  endif
46
46
 
47
- noinst_HEADERS = \
48
- src/aarch64/ffitarget.h src/aarch64/internal.h \
47
+ noinst_HEADERS = src/aarch64/ffitarget.h src/aarch64/internal.h \
49
48
  src/alpha/ffitarget.h src/alpha/internal.h \
50
- src/arc/ffitarget.h \
51
- src/arm/ffitarget.h src/arm/internal.h \
52
- src/avr32/ffitarget.h \
53
- src/bfin/ffitarget.h \
54
- src/cris/ffitarget.h \
55
- src/frv/ffitarget.h \
49
+ src/arc/ffitarget.h src/arm/ffitarget.h src/arm/internal.h \
50
+ src/avr32/ffitarget.h src/bfin/ffitarget.h \
51
+ src/cris/ffitarget.h src/csky/ffitarget.h src/frv/ffitarget.h \
56
52
  src/ia64/ffitarget.h src/ia64/ia64_flags.h \
57
- src/m32r/ffitarget.h \
58
- src/m68k/ffitarget.h \
59
- src/m88k/ffitarget.h \
60
- src/metag/ffitarget.h \
61
- src/microblaze/ffitarget.h \
62
- src/mips/ffitarget.h \
63
- src/moxie/ffitarget.h \
64
- src/nios2/ffitarget.h \
65
- src/or1k/ffitarget.h \
66
- src/pa/ffitarget.h \
67
- src/powerpc/ffitarget.h src/powerpc/asm.h src/powerpc/ffi_powerpc.h \
68
- src/riscv/ffitarget.h \
69
- src/s390/ffitarget.h src/s390/internal.h \
70
- src/sh/ffitarget.h \
71
- src/sh64/ffitarget.h \
72
- src/sparc/ffitarget.h src/sparc/internal.h \
73
- src/tile/ffitarget.h \
74
- src/vax/ffitarget.h \
75
- src/x86/ffitarget.h src/x86/internal.h src/x86/internal64.h src/x86/asmnames.h \
76
- src/xtensa/ffitarget.h \
77
- src/dlmalloc.c
78
-
79
- EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \
80
- src/aarch64/win64_armasm.S src/alpha/ffi.c src/alpha/osf.S \
81
- src/arc/ffi.c src/arc/arcompact.S src/arm/ffi.c \
82
- src/arm/sysv.S src/arm/ffi.c src/arm/sysv_msvc_arm32.S \
83
- src/avr32/ffi.c src/avr32/sysv.S src/bfin/ffi.c \
84
- src/bfin/sysv.S src/cris/ffi.c src/cris/sysv.S src/frv/ffi.c \
85
- src/frv/eabi.S src/ia64/ffi.c src/ia64/unix.S src/m32r/ffi.c \
86
- src/m32r/sysv.S src/m68k/ffi.c src/m68k/sysv.S src/m88k/ffi.c \
87
- src/m88k/obsd.S src/metag/ffi.c src/metag/sysv.S \
88
- src/microblaze/ffi.c src/microblaze/sysv.S src/mips/ffi.c \
89
- src/mips/o32.S src/mips/n32.S src/moxie/ffi.c \
90
- src/moxie/eabi.S src/nios2/ffi.c src/nios2/sysv.S \
91
- src/or1k/ffi.c src/or1k/sysv.S src/pa/ffi.c src/pa/linux.S \
92
- src/pa/hpux32.S src/powerpc/ffi.c src/powerpc/ffi_sysv.c \
93
- src/powerpc/ffi_linux64.c src/powerpc/sysv.S \
94
- src/powerpc/linux64.S src/powerpc/linux64_closure.S \
95
- src/powerpc/ppc_closure.S src/powerpc/aix.S \
96
- src/powerpc/darwin.S src/powerpc/aix_closure.S \
97
- src/powerpc/darwin_closure.S src/powerpc/ffi_darwin.c \
98
- src/riscv/ffi.c src/riscv/sysv.S src/s390/ffi.c \
99
- src/s390/sysv.S src/sh/ffi.c src/sh/sysv.S src/sh64/ffi.c \
100
- src/sh64/sysv.S src/sparc/ffi.c src/sparc/ffi64.c \
101
- src/sparc/v8.S src/sparc/v9.S src/tile/ffi.c src/tile/tile.S \
102
- src/vax/ffi.c src/vax/elfbsd.S src/x86/ffi.c src/x86/sysv.S \
103
- src/x86/ffiw64.c src/x86/win64.S src/x86/ffi64.c \
104
- src/x86/unix64.S src/x86/sysv_intel.S src/x86/win64_intel.S \
105
- src/xtensa/ffi.c src/xtensa/sysv.S
53
+ src/m32r/ffitarget.h src/m68k/ffitarget.h \
54
+ src/m88k/ffitarget.h src/metag/ffitarget.h \
55
+ src/microblaze/ffitarget.h src/mips/ffitarget.h \
56
+ src/moxie/ffitarget.h src/nios2/ffitarget.h \
57
+ src/or1k/ffitarget.h src/pa/ffitarget.h \
58
+ src/powerpc/ffitarget.h src/powerpc/asm.h \
59
+ src/powerpc/ffi_powerpc.h src/riscv/ffitarget.h \
60
+ src/s390/ffitarget.h src/s390/internal.h src/sh/ffitarget.h \
61
+ src/sh64/ffitarget.h src/sparc/ffitarget.h \
62
+ src/sparc/internal.h src/tile/ffitarget.h src/vax/ffitarget.h \
63
+ src/x86/ffitarget.h src/x86/internal.h src/x86/internal64.h \
64
+ src/x86/asmnames.h src/xtensa/ffitarget.h src/dlmalloc.c \
65
+ src/kvx/ffitarget.h
66
+
67
+ EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \
68
+ src/aarch64/win64_armasm.S src/alpha/ffi.c src/alpha/osf.S \
69
+ src/arc/ffi.c src/arc/arcompact.S src/arm/ffi.c \
70
+ src/arm/sysv.S src/arm/ffi.c src/arm/sysv_msvc_arm32.S \
71
+ src/avr32/ffi.c src/avr32/sysv.S src/bfin/ffi.c \
72
+ src/bfin/sysv.S src/cris/ffi.c src/cris/sysv.S src/frv/ffi.c \
73
+ src/csky/ffi.c src/csky/sysv.S src/frv/eabi.S src/ia64/ffi.c \
74
+ src/ia64/unix.S src/m32r/ffi.c src/m32r/sysv.S src/m68k/ffi.c \
75
+ src/m68k/sysv.S src/m88k/ffi.c src/m88k/obsd.S \
76
+ src/metag/ffi.c src/metag/sysv.S src/microblaze/ffi.c \
77
+ src/microblaze/sysv.S src/mips/ffi.c src/mips/o32.S \
78
+ src/mips/n32.S src/moxie/ffi.c src/moxie/eabi.S \
79
+ src/nios2/ffi.c src/nios2/sysv.S src/or1k/ffi.c \
80
+ src/or1k/sysv.S src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
81
+ src/powerpc/ffi.c src/powerpc/ffi_sysv.c \
82
+ src/powerpc/ffi_linux64.c src/powerpc/sysv.S \
83
+ src/powerpc/linux64.S src/powerpc/linux64_closure.S \
84
+ src/powerpc/ppc_closure.S src/powerpc/aix.S \
85
+ src/powerpc/darwin.S src/powerpc/aix_closure.S \
86
+ src/powerpc/darwin_closure.S src/powerpc/ffi_darwin.c \
87
+ src/riscv/ffi.c src/riscv/sysv.S src/s390/ffi.c \
88
+ src/s390/sysv.S src/sh/ffi.c src/sh/sysv.S src/sh64/ffi.c \
89
+ src/sh64/sysv.S src/sparc/ffi.c src/sparc/ffi64.c \
90
+ src/sparc/v8.S src/sparc/v9.S src/tile/ffi.c src/tile/tile.S \
91
+ src/vax/ffi.c src/vax/elfbsd.S src/x86/ffi.c src/x86/sysv.S \
92
+ src/x86/ffiw64.c src/x86/win64.S src/x86/ffi64.c \
93
+ src/x86/unix64.S src/x86/sysv_intel.S src/x86/win64_intel.S \
94
+ src/xtensa/ffi.c src/xtensa/sysv.S src/kvx/ffi.c \
95
+ src/kvx/sysv.S
106
96
 
107
97
  TARGET_OBJ = @TARGET_OBJ@
108
98
  libffi_la_LIBADD = $(TARGET_OBJ)
@@ -144,7 +134,8 @@ endif
144
134
  libffi_version_info = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
145
135
 
146
136
  libffi.map: $(top_srcdir)/libffi.map.in
147
- $(COMPILE) -D$(TARGET) -E -x assembler-with-cpp -o $@ $<
137
+ $(COMPILE) -D$(TARGET) -DGENERATE_LIBFFI_MAP \
138
+ -E -x assembler-with-cpp -o $@ $(top_srcdir)/libffi.map.in
148
139
 
149
140
  libffi_la_LDFLAGS = -no-undefined $(libffi_version_info) $(libffi_version_script) $(LTLDFLAGS) $(AM_LTLDFLAGS)
150
141
  libffi_la_DEPENDENCIES = $(libffi_la_LIBADD) $(libffi_version_dep)
@@ -4,7 +4,7 @@ Status
4
4
  [![Build Status](https://travis-ci.org/libffi/libffi.svg?branch=master)](https://travis-ci.org/libffi/libffi)
5
5
  [![Build status](https://ci.appveyor.com/api/projects/status/8lko9vagbx4w2kxq?svg=true)](https://ci.appveyor.com/project/atgreen/libffi)
6
6
 
7
- libffi-3.3 was released on November 23, 2019. Check the libffi web
7
+ libffi-3.4 was released on TBD. Check the libffi web
8
8
  page for updates: <URL:http://sourceware.org/libffi/>.
9
9
 
10
10
 
@@ -60,7 +60,9 @@ tested:
60
60
  | ARM | Windows | MSVC |
61
61
  | AVR32 | Linux | GCC |
62
62
  | Blackfin | uClinux | GCC |
63
+ | CSKY | Linux | GCC |
63
64
  | HPPA | HPUX | GCC |
65
+ | KVX | Linux | GCC |
64
66
  | IA-64 | Linux | GCC |
65
67
  | M68K | FreeMiNT | GCC |
66
68
  | M68K | Linux | GCC |
@@ -196,6 +198,13 @@ History
196
198
 
197
199
  See the git log for details at http://github.com/libffi/libffi.
198
200
 
201
+ 3.4 TBD
202
+ Add support for Alibaba's CSKY architecture.
203
+ Add support for Intel Control-flow Enforcement Technology (CET).
204
+ Add support for ARM Pointer Authentication (PA).
205
+ Fix 32-bit PPC regression.
206
+ Fix MIPS soft-float problem.
207
+
199
208
  3.3 Nov-23-19
200
209
  Add RISC-V support.
201
210
  New API in support of GO closures.
@@ -428,6 +437,7 @@ developers:
428
437
  avr32 Bradley Smith
429
438
  blackfin Alexandre Keunecke I. de Mendonca
430
439
  cris Simon Posnjak, Hans-Peter Nilsson
440
+ csky Ma Jun, Zhang Wenmeng
431
441
  frv Anthony Green
432
442
  ia64 Hans Boehm
433
443
  m32r Kazuhiro Inaoka