ffi 1.17.0 → 1.17.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 (78) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +17 -0
  4. data/Gemfile +3 -1
  5. data/Rakefile +2 -2
  6. data/ext/ffi_c/Function.c +52 -34
  7. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +48 -60
  8. data/ext/ffi_c/libffi/Makefile.am +4 -3
  9. data/ext/ffi_c/libffi/Makefile.in +5 -25
  10. data/ext/ffi_c/libffi/README.md +19 -2
  11. data/ext/ffi_c/libffi/acinclude.m4 +6 -0
  12. data/ext/ffi_c/libffi/config.guess +80 -22
  13. data/ext/ffi_c/libffi/config.sub +161 -80
  14. data/ext/ffi_c/libffi/configure +41 -25
  15. data/ext/ffi_c/libffi/configure.ac +9 -8
  16. data/ext/ffi_c/libffi/configure.host +0 -5
  17. data/ext/ffi_c/libffi/doc/Makefile.in +1 -0
  18. data/ext/ffi_c/libffi/doc/libffi.texi +3 -3
  19. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  20. data/ext/ffi_c/libffi/fficonfig.h.in +3 -3
  21. data/ext/ffi_c/libffi/include/Makefile.in +1 -0
  22. data/ext/ffi_c/libffi/include/ffi_cfi.h +2 -0
  23. data/ext/ffi_c/libffi/include/ffi_common.h +17 -0
  24. data/ext/ffi_c/libffi/man/Makefile.in +1 -0
  25. data/ext/ffi_c/libffi/src/aarch64/ffi.c +7 -4
  26. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +2 -2
  27. data/ext/ffi_c/libffi/src/aarch64/internal.h +63 -17
  28. data/ext/ffi_c/libffi/src/aarch64/sysv.S +16 -12
  29. data/ext/ffi_c/libffi/src/arc/arcompact.S +2 -2
  30. data/ext/ffi_c/libffi/src/arc/ffi.c +6 -2
  31. data/ext/ffi_c/libffi/src/closures.c +3 -3
  32. data/ext/ffi_c/libffi/src/dlmalloc.c +1 -0
  33. data/ext/ffi_c/libffi/src/mips/ffitarget.h +2 -4
  34. data/ext/ffi_c/libffi/src/mips/n32.S +4 -0
  35. data/ext/ffi_c/libffi/src/mips/o32.S +4 -0
  36. data/ext/ffi_c/libffi/src/or1k/ffi.c +2 -2
  37. data/ext/ffi_c/libffi/src/powerpc/ffi.c +13 -0
  38. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +26 -19
  39. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +26 -16
  40. data/ext/ffi_c/libffi/src/powerpc/internal.h +10 -0
  41. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +47 -0
  42. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +24 -0
  43. data/ext/ffi_c/libffi/src/prep_cif.c +1 -4
  44. data/ext/ffi_c/libffi/src/s390/ffi.c +28 -1
  45. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  46. data/ext/ffi_c/libffi/src/s390/sysv.S +38 -0
  47. data/ext/ffi_c/libffi/src/sparc/ffi.c +16 -0
  48. data/ext/ffi_c/libffi/src/wasm32/ffi.c +10 -262
  49. data/ext/ffi_c/libffi/src/x86/ffi.c +4 -1
  50. data/ext/ffi_c/libffi/src/x86/ffi64.c +4 -1
  51. data/ext/ffi_c/libffi/testsuite/Makefile.am +4 -3
  52. data/ext/ffi_c/libffi/testsuite/Makefile.in +5 -3
  53. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +4 -24
  54. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +8 -25
  55. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +3 -28
  56. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +2 -2
  57. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +2 -2
  58. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +2 -2
  59. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +2 -2
  60. data/ext/ffi_c/libffi/testsuite/libffi.call/overread.c +54 -0
  61. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_int_float.c +88 -0
  62. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +1 -0
  63. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +1 -0
  64. data/ext/ffi_c/libffi/testsuite/libffi.call/x32.c +31 -0
  65. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +1 -1
  66. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +1 -1
  67. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +1 -1
  68. data/lib/ffi/ffi.rb +59 -0
  69. data/lib/ffi/version.rb +1 -1
  70. data/sig/ffi/auto_pointer.rbs +0 -1
  71. data/sig/ffi/library.rbs +1 -1
  72. data.tar.gz.sig +0 -0
  73. metadata +18 -18
  74. metadata.gz.sig +0 -0
  75. data/ext/ffi_c/libffi/.circleci/config.yml +0 -156
  76. data/ext/ffi_c/libffi/src/nios2/ffi.c +0 -304
  77. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +0 -52
  78. data/ext/ffi_c/libffi/src/nios2/sysv.S +0 -136
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 482fe808cf14286b91be92938712e98f6332021d2773268f96ac583b5c264fc9
4
- data.tar.gz: f89f881dd5e337ec5ec815e9977158b54ead3a2480bc03fd2591477c7872d29e
3
+ metadata.gz: '058d816e4da0c93950ccb7181f82c310f9faf3e934948e77f574d01ffcdf7aaa'
4
+ data.tar.gz: 0553df9cff19ffb4404dac629dac314f43f70f3cb647899e0cae687dd48631d7
5
5
  SHA512:
6
- metadata.gz: 877625d5994e1b456e8cf12a68647ce4e9d64efac2239c7a4e1806406b803fad5c1138ba0ad7e8b34ac6b8ebfeaed9f469381291f394527c523c4db8f36bd976
7
- data.tar.gz: 8d78610fc0c110ad7d6da40158dab176d815c8008a1276865b9112a44b46e1d43816db7430f9ab991671e4e8fad4dec0880fa259e2e2c83afaf916f59b7bb5c9
6
+ metadata.gz: ff675e518022c92374772bdfb8594e07940d0765c134ae076235c6e1c2fe886c091e736415ee0ba28ddd7c4aaf3768929fe27366aa43aaa2f3c250e4eaa7d2cd
7
+ data.tar.gz: 7fb6dd8b66f31369863914000c9484eb6cbf813195e25aeaf0a72a3a3eb3e8895f85c8c240686e744ee1bbe90492641e7ef65a1ebcc7d17195c58125c2138c8d
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ 1.17.2 / 2025-04-15
2
+ -------------------
3
+
4
+ Fixed:
5
+ * #1144, #1145 Update libffi to 3.4.8 to fix installation issues on latest Macos on ARM64
6
+ * Various adjustments to run the specs cleanly on Ruby-3.5 master branch.
7
+
8
+
9
+ 1.17.1 / 2024-12-30
10
+ -------------------
11
+
12
+ Fixed:
13
+ * #1117 Restart async callback dispatcher thread after fork.
14
+ * #1133 Add ruby-3.4 native gem.
15
+ * #1134 Fix FFI::DataConverter non-generic usage in RBS files.
16
+
17
+
1
18
  1.17.0 / 2024-06-02
2
19
  -------------------
3
20
 
data/Gemfile CHANGED
@@ -1,11 +1,13 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :development do
4
+ gem 'benchmark' # necessary on ruby-3.5+
4
5
  gem 'bigdecimal' # necessary on ruby-3.3+
5
6
  gem 'bundler', '>= 1.16', '< 3'
7
+ gem 'fiddle', platforms: %i[mri windows] # necessary on ruby-3.5+
6
8
  gem 'rake', '~> 13.0'
7
9
  gem 'rake-compiler', '~> 1.1'
8
- gem 'rake-compiler-dock', '~> 1.0.pre'
10
+ gem 'rake-compiler-dock', '~> 1.9.0'
9
11
  gem 'rspec', '~> 3.0'
10
12
  end
11
13
 
data/Rakefile CHANGED
@@ -136,9 +136,9 @@ namespace "gem" do
136
136
  desc "Build the native gem for #{plat}"
137
137
  task plat => ['prepare', 'build'] do
138
138
  RakeCompilerDock.sh <<-EOT, platform: plat
139
- #{ "sudo apt-get update && sudo apt-get install -y libltdl-dev &&" if plat !~ /linux/ }
139
+ sudo apt-get update && sudo apt-get install -y libltdl-dev &&
140
140
  bundle --local &&
141
- rake native:#{plat} pkg/#{gem_spec.full_name}-#{plat}.gem MAKE='nice make -j`nproc`' RUBY_CC_VERSION=${RUBY_CC_VERSION/:2.4.0/}
141
+ rake native:#{plat} pkg/#{gem_spec.full_name}-#{plat}.gem MAKE='nice make -j`nproc`' RUBY_CC_VERSION=#{RakeCompilerDock.ruby_cc_version("~>2.5", "~>3.0")}
142
142
  EOT
143
143
  end
144
144
  end
data/ext/ffi_c/Function.c CHANGED
@@ -215,6 +215,52 @@ async_cb_dispatcher_set(struct async_cb_dispatcher *ctx)
215
215
  async_cb_dispatcher = ctx;
216
216
  }
217
217
  #endif
218
+
219
+ static void
220
+ async_cb_dispatcher_initialize(struct async_cb_dispatcher *ctx)
221
+ {
222
+ ctx->async_cb_list = NULL;
223
+
224
+ #if !defined(_WIN32)
225
+ /* n.b. we _used_ to try and destroy the mutex/cond before initializing here,
226
+ * but it's undefined what happens if you try and destory an unitialized cond.
227
+ * glibc in particular seems to wait for any concurrent waiters to finish before
228
+ * destroying a condvar, trying to destroy a condvar after fork that someone was
229
+ * waiting on pre-fork won't work. Just re-init he memory directly. */
230
+ pthread_mutex_init(&ctx->async_cb_mutex, NULL);
231
+ pthread_cond_init(&ctx->async_cb_cond, NULL);
232
+ #else
233
+ InitializeCriticalSection(&ctx->async_cb_lock);
234
+ ctx->async_cb_cond = CreateEvent(NULL, FALSE, FALSE, NULL);
235
+ #endif
236
+ ctx->thread = rb_thread_create(async_cb_event, ctx);
237
+
238
+ /* Name thread, for better debugging */
239
+ rb_funcall(ctx->thread, rb_intern("name="), 1, rb_str_new2("FFI Callback Dispatcher"));
240
+ }
241
+
242
+ static struct async_cb_dispatcher *
243
+ async_cb_dispatcher_ensure_created(void)
244
+ {
245
+ struct async_cb_dispatcher *ctx = async_cb_dispatcher_get();
246
+ if (ctx == NULL) {
247
+ ctx = (struct async_cb_dispatcher*)ALLOC(struct async_cb_dispatcher);
248
+ async_cb_dispatcher_initialize(ctx);
249
+ async_cb_dispatcher_set(ctx);
250
+ }
251
+ return ctx;
252
+ }
253
+
254
+
255
+ static VALUE
256
+ async_cb_dispatcher_atfork_child(VALUE self)
257
+ {
258
+ struct async_cb_dispatcher *ctx = async_cb_dispatcher_get();
259
+ if (ctx) {
260
+ async_cb_dispatcher_initialize(ctx);
261
+ }
262
+ return Qnil;
263
+ }
218
264
  #endif
219
265
 
220
266
  static VALUE
@@ -391,15 +437,6 @@ rbffi_Function_ForProc(VALUE rbFunctionInfo, VALUE proc)
391
437
  return callback;
392
438
  }
393
439
 
394
- #if !defined(_WIN32) && defined(DEFER_ASYNC_CALLBACK)
395
- static void
396
- after_fork_callback(void)
397
- {
398
- /* Ensure that a new dispatcher thread is started in a forked process */
399
- async_cb_dispatcher_set(NULL);
400
- }
401
- #endif
402
-
403
440
  static VALUE
404
441
  function_init(VALUE self, VALUE rbFunctionInfo, VALUE rbProc)
405
442
  {
@@ -426,31 +463,7 @@ function_init(VALUE self, VALUE rbFunctionInfo, VALUE rbProc)
426
463
  }
427
464
 
428
465
  #if defined(DEFER_ASYNC_CALLBACK)
429
- {
430
- struct async_cb_dispatcher *ctx = async_cb_dispatcher_get();
431
- if (ctx == NULL) {
432
- ctx = (struct async_cb_dispatcher*)ALLOC(struct async_cb_dispatcher);
433
- ctx->async_cb_list = NULL;
434
-
435
- #if !defined(_WIN32)
436
- pthread_mutex_init(&ctx->async_cb_mutex, NULL);
437
- pthread_cond_init(&ctx->async_cb_cond, NULL);
438
- if( pthread_atfork(NULL, NULL, after_fork_callback) ){
439
- rb_warn("FFI: unable to register fork callback");
440
- }
441
- #else
442
- InitializeCriticalSection(&ctx->async_cb_lock);
443
- ctx->async_cb_cond = CreateEvent(NULL, FALSE, FALSE, NULL);
444
- #endif
445
- ctx->thread = rb_thread_create(async_cb_event, ctx);
446
-
447
- /* Name thread, for better debugging */
448
- rb_funcall(ctx->thread, rb_intern("name="), 1, rb_str_new2("FFI Callback Dispatcher"));
449
-
450
- async_cb_dispatcher_set(ctx);
451
- }
452
- fn->dispatcher = ctx;
453
- }
466
+ fn->dispatcher = async_cb_dispatcher_ensure_created();
454
467
  #endif
455
468
 
456
469
  fn->closure = rbffi_Closure_Alloc(fn->info->closurePool);
@@ -1060,4 +1073,9 @@ rbffi_Function_Init(VALUE moduleFFI)
1060
1073
  #if defined(DEFER_ASYNC_CALLBACK) && defined(HAVE_RB_EXT_RACTOR_SAFE)
1061
1074
  async_cb_dispatcher_key = rb_ractor_local_storage_ptr_newkey(&async_cb_dispatcher_key_type);
1062
1075
  #endif
1076
+ #ifdef DEFER_ASYNC_CALLBACK
1077
+ /* Ruby code will call this method in a Process._fork patch */
1078
+ rb_define_singleton_method(moduleFFI, "_async_cb_dispatcher_atfork_child",
1079
+ async_cb_dispatcher_atfork_child, 0);
1080
+ #endif
1063
1081
  }
@@ -13,13 +13,13 @@ on:
13
13
 
14
14
 
15
15
  env:
16
- PYODIDE_VERSION: 0.52.1
16
+ PYODIDE_VERSION: 0.58.4
17
17
  # PYTHON_VERSION and EMSCRIPTEN_VERSION are determined by PYODIDE_VERSION.
18
18
  # The appropriate versions can be found in the Pyodide repodata.json
19
19
  # "info" field, or in Makefile.envs:
20
20
  # https://github.com/pyodide/pyodide/blob/main/Makefile.envs#L2
21
- PYTHON_VERSION: 3.10.7
22
- EMSCRIPTEN_VERSION: 3.1.27
21
+ PYTHON_VERSION: 3.12.7
22
+ EMSCRIPTEN_VERSION: 3.1.58
23
23
  EM_CACHE_FOLDER: emsdk-cache
24
24
 
25
25
  jobs:
@@ -27,53 +27,46 @@ jobs:
27
27
  runs-on: ubuntu-22.04
28
28
  steps:
29
29
  - name: Setup cache
30
- id: cache-system-libraries
31
- uses: actions/cache@v3
30
+ uses: actions/cache@v4
32
31
  with:
33
- path: ${{env.EM_CACHE_FOLDER}}
34
- key: ${{env.EMSCRIPTEN_VERSION}}
32
+ path: ${{ env.EM_CACHE_FOLDER }}
33
+ key: ${{ env.EMSCRIPTEN_VERSION }}
35
34
 
36
- - uses: mymindstorm/setup-emsdk@v12
35
+ - name: Setup emsdk
36
+ uses: mymindstorm/setup-emsdk@v14
37
37
  with:
38
38
  version: ${{ env.EMSCRIPTEN_VERSION }}
39
- actions-cache-folder: ${{env.EM_CACHE_FOLDER}}
39
+ actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
40
40
 
41
41
  test-dejagnu:
42
- strategy:
43
- matrix:
44
- bigint: ["--wasm-bigint", ""]
45
- runs-on: ubuntu-22.04
42
+ runs-on: ubuntu-24.04
46
43
  needs: [setup-emsdk-cache]
47
44
  steps:
48
45
  - name: Checkout
49
- uses: actions/checkout@v3
46
+ uses: actions/checkout@v4
50
47
 
51
- - name: set up python
52
- id: setup-python
53
- uses: actions/setup-python@v4
48
+ - name: Setup Python
49
+ uses: actions/setup-python@v5
54
50
  with:
55
51
  python-version: ${{ env.PYTHON_VERSION }}
56
52
 
57
53
  - name: Setup cache
58
- id: cache-system-libraries
59
- uses: actions/cache@v3
54
+ uses: actions/cache@v4
60
55
  with:
61
- path: ${{env.EM_CACHE_FOLDER}}
62
- key: ${{env.EMSCRIPTEN_VERSION}}
56
+ path: ${{ env.EM_CACHE_FOLDER }}
57
+ key: ${{ env.EMSCRIPTEN_VERSION }}
63
58
 
64
- - uses: mymindstorm/setup-emsdk@v12
59
+ - name: Setup emsdk
60
+ uses: mymindstorm/setup-emsdk@v14
65
61
  with:
66
62
  version: ${{ env.EMSCRIPTEN_VERSION }}
67
- actions-cache-folder: ${{env.EM_CACHE_FOLDER}}
63
+ actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
68
64
 
69
- - name: Install dejagnu
70
- shell: bash -l {0}
71
- run: |
72
- sudo apt install -y dejagnu
65
+ - name: Install dependencies
66
+ run: sudo apt-get install dejagnu libltdl-dev
73
67
 
74
- - name: run tests
75
- run: |
76
- testsuite/emscripten/node-tests.sh ${{ matrix.bigint }}
68
+ - name: Run tests
69
+ run: testsuite/emscripten/node-tests.sh
77
70
 
78
71
  - name: Install rlgl and run
79
72
  run: |
@@ -84,75 +77,70 @@ jobs:
84
77
  exit $?
85
78
 
86
79
  build:
87
- strategy:
88
- matrix:
89
- bigint: ["--wasm-bigint", ""]
90
- env:
91
- WASM_BIGINT: ${{ matrix.bigint }}
92
- runs-on: ubuntu-22.04
80
+ runs-on: ubuntu-24.04
93
81
  needs: [setup-emsdk-cache]
94
82
  steps:
95
83
  - name: Checkout
96
- uses: actions/checkout@v3
84
+ uses: actions/checkout@v4
97
85
 
98
86
  - name: Setup cache
99
- id: cache-system-libraries
100
- uses: actions/cache@v3
87
+ uses: actions/cache@v4
101
88
  with:
102
- path: ${{env.EM_CACHE_FOLDER}}
103
- key: ${{env.EMSCRIPTEN_VERSION}}
89
+ path: ${{ env.EM_CACHE_FOLDER }}
90
+ key: ${{ env.EMSCRIPTEN_VERSION }}
104
91
 
105
- - uses: mymindstorm/setup-emsdk@v12
92
+ - name: Setup emsdk
93
+ uses: mymindstorm/setup-emsdk@v12
106
94
  with:
107
95
  version: ${{ env.EMSCRIPTEN_VERSION }}
108
- actions-cache-folder: ${{env.EM_CACHE_FOLDER}}
96
+ actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
109
97
 
110
- - name: build
111
- run: |
112
- ./testsuite/emscripten/build.sh ${{ matrix.bigint }}
98
+ - name: Install dependencies
99
+ run: sudo apt-get install libltdl-dev
100
+
101
+ - name: Build
102
+ run: ./testsuite/emscripten/build.sh
113
103
 
114
- - name: build tests
104
+ - name: Build tests
115
105
  run: |
116
106
  cp -r testsuite/libffi.call testsuite/libffi.call.test
117
107
  cp -r testsuite/libffi.closures testsuite/libffi.closures.test
118
- ./testsuite/emscripten/build-tests.sh testsuite/libffi.call.test ${{ matrix.bigint }}
119
- ./testsuite/emscripten/build-tests.sh testsuite/libffi.closures.test ${{ matrix.bigint }}
108
+ ./testsuite/emscripten/build-tests.sh testsuite/libffi.call.test
109
+ ./testsuite/emscripten/build-tests.sh testsuite/libffi.closures.test
120
110
 
121
111
  - name: Store artifacts
122
- uses: actions/upload-artifact@v3
112
+ uses: actions/upload-artifact@v4
123
113
  with:
124
114
  name: built-tests
125
- path: |
126
- ./testsuite/libffi.c*/
115
+ path: ./testsuite/libffi.c*/
127
116
 
128
117
  test:
129
118
  strategy:
130
119
  matrix:
131
- bigint: ["--wasm-bigint", ""]
132
120
  browser: ["chrome"]
133
121
  # FIXME: selenium can't find gecko driver for "firefox"
134
- runs-on: ubuntu-22.04
122
+ runs-on: ubuntu-24.04
135
123
  needs: [build]
136
124
  steps:
137
125
  - name: Checkout
138
- uses: actions/checkout@v3
126
+ uses: actions/checkout@v4
139
127
 
140
128
  - name: Download build artifact
141
- uses: actions/download-artifact@v3
129
+ uses: actions/download-artifact@v4
142
130
  with:
143
131
  name: built-tests
144
132
  path: ./testsuite/
145
133
 
146
- - uses: conda-incubator/setup-miniconda@v2
134
+ - uses: conda-incubator/setup-miniconda@v3
147
135
  with:
148
136
  activate-environment: pyodide-env
149
137
  python-version: ${{ env.PYTHON_VERSION }}
150
138
  channels: conda-forge
139
+
151
140
  - name: Install test dependencies
152
- run: |
153
- pip install pytest-pyodide==${{ env.PYODIDE_VERSION }}
141
+ run: pip install pytest-pyodide==${{ env.PYODIDE_VERSION }}
154
142
 
155
- - name:
143
+ - name: Run tests
156
144
  run: |
157
145
  cd testsuite/emscripten/
158
146
  mkdir test-results
@@ -55,10 +55,11 @@ noinst_HEADERS = src/aarch64/ffitarget.h src/aarch64/internal.h \
55
55
  src/m32r/ffitarget.h src/m68k/ffitarget.h \
56
56
  src/m88k/ffitarget.h src/metag/ffitarget.h \
57
57
  src/microblaze/ffitarget.h src/mips/ffitarget.h \
58
- src/moxie/ffitarget.h src/nios2/ffitarget.h \
58
+ src/moxie/ffitarget.h \
59
59
  src/or1k/ffitarget.h src/pa/ffitarget.h \
60
60
  src/powerpc/ffitarget.h src/powerpc/asm.h \
61
- src/powerpc/ffi_powerpc.h src/riscv/ffitarget.h \
61
+ src/powerpc/ffi_powerpc.h src/powerpc/internal.h \
62
+ src/riscv/ffitarget.h \
62
63
  src/s390/ffitarget.h src/s390/internal.h src/sh/ffitarget.h \
63
64
  src/sh64/ffitarget.h src/sparc/ffitarget.h \
64
65
  src/sparc/internal.h src/tile/ffitarget.h src/vax/ffitarget.h \
@@ -80,7 +81,7 @@ EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \
80
81
  src/metag/ffi.c src/metag/sysv.S src/microblaze/ffi.c \
81
82
  src/microblaze/sysv.S src/mips/ffi.c src/mips/o32.S \
82
83
  src/mips/n32.S src/moxie/ffi.c src/moxie/eabi.S \
83
- src/nios2/ffi.c src/nios2/sysv.S src/or1k/ffi.c \
84
+ src/or1k/ffi.c \
84
85
  src/or1k/sysv.S src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
85
86
  src/pa/hpux64.S src/powerpc/ffi.c src/powerpc/ffi_sysv.c \
86
87
  src/powerpc/ffi_linux64.c src/powerpc/sysv.S \
@@ -221,7 +221,6 @@ am__depfiles_remade = src/$(DEPDIR)/closures.Plo \
221
221
  src/microblaze/$(DEPDIR)/sysv.Plo src/mips/$(DEPDIR)/ffi.Plo \
222
222
  src/mips/$(DEPDIR)/n32.Plo src/mips/$(DEPDIR)/o32.Plo \
223
223
  src/moxie/$(DEPDIR)/eabi.Plo src/moxie/$(DEPDIR)/ffi.Plo \
224
- src/nios2/$(DEPDIR)/ffi.Plo src/nios2/$(DEPDIR)/sysv.Plo \
225
224
  src/or1k/$(DEPDIR)/ffi.Plo src/or1k/$(DEPDIR)/sysv.Plo \
226
225
  src/pa/$(DEPDIR)/ffi.Plo src/pa/$(DEPDIR)/hpux32.Plo \
227
226
  src/pa/$(DEPDIR)/hpux64.Plo src/pa/$(DEPDIR)/linux.Plo \
@@ -470,6 +469,7 @@ ac_ct_AR = @ac_ct_AR@
470
469
  ac_ct_CC = @ac_ct_CC@
471
470
  ac_ct_CXX = @ac_ct_CXX@
472
471
  ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
472
+ ac_ct_READELF = @ac_ct_READELF@
473
473
  am__include = @am__include@
474
474
  am__leading_dot = @am__leading_dot@
475
475
  am__quote = @am__quote@
@@ -560,10 +560,11 @@ noinst_HEADERS = src/aarch64/ffitarget.h src/aarch64/internal.h \
560
560
  src/m32r/ffitarget.h src/m68k/ffitarget.h \
561
561
  src/m88k/ffitarget.h src/metag/ffitarget.h \
562
562
  src/microblaze/ffitarget.h src/mips/ffitarget.h \
563
- src/moxie/ffitarget.h src/nios2/ffitarget.h \
563
+ src/moxie/ffitarget.h \
564
564
  src/or1k/ffitarget.h src/pa/ffitarget.h \
565
565
  src/powerpc/ffitarget.h src/powerpc/asm.h \
566
- src/powerpc/ffi_powerpc.h src/riscv/ffitarget.h \
566
+ src/powerpc/ffi_powerpc.h src/powerpc/internal.h \
567
+ src/riscv/ffitarget.h \
567
568
  src/s390/ffitarget.h src/s390/internal.h src/sh/ffitarget.h \
568
569
  src/sh64/ffitarget.h src/sparc/ffitarget.h \
569
570
  src/sparc/internal.h src/tile/ffitarget.h src/vax/ffitarget.h \
@@ -585,7 +586,7 @@ EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \
585
586
  src/metag/ffi.c src/metag/sysv.S src/microblaze/ffi.c \
586
587
  src/microblaze/sysv.S src/mips/ffi.c src/mips/o32.S \
587
588
  src/mips/n32.S src/moxie/ffi.c src/moxie/eabi.S \
588
- src/nios2/ffi.c src/nios2/sysv.S src/or1k/ffi.c \
589
+ src/or1k/ffi.c \
589
590
  src/or1k/sysv.S src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
590
591
  src/pa/hpux64.S src/powerpc/ffi.c src/powerpc/ffi_sysv.c \
591
592
  src/powerpc/ffi_linux64.c src/powerpc/sysv.S \
@@ -913,16 +914,6 @@ src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \
913
914
  src/moxie/$(DEPDIR)/$(am__dirstamp)
914
915
  src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \
915
916
  src/moxie/$(DEPDIR)/$(am__dirstamp)
916
- src/nios2/$(am__dirstamp):
917
- @$(MKDIR_P) src/nios2
918
- @: > src/nios2/$(am__dirstamp)
919
- src/nios2/$(DEPDIR)/$(am__dirstamp):
920
- @$(MKDIR_P) src/nios2/$(DEPDIR)
921
- @: > src/nios2/$(DEPDIR)/$(am__dirstamp)
922
- src/nios2/ffi.lo: src/nios2/$(am__dirstamp) \
923
- src/nios2/$(DEPDIR)/$(am__dirstamp)
924
- src/nios2/sysv.lo: src/nios2/$(am__dirstamp) \
925
- src/nios2/$(DEPDIR)/$(am__dirstamp)
926
917
  src/or1k/$(am__dirstamp):
927
918
  @$(MKDIR_P) src/or1k
928
919
  @: > src/or1k/$(am__dirstamp)
@@ -1158,8 +1149,6 @@ mostlyclean-compile:
1158
1149
  -rm -f src/mips/*.lo
1159
1150
  -rm -f src/moxie/*.$(OBJEXT)
1160
1151
  -rm -f src/moxie/*.lo
1161
- -rm -f src/nios2/*.$(OBJEXT)
1162
- -rm -f src/nios2/*.lo
1163
1152
  -rm -f src/or1k/*.$(OBJEXT)
1164
1153
  -rm -f src/or1k/*.lo
1165
1154
  -rm -f src/pa/*.$(OBJEXT)
@@ -1238,8 +1227,6 @@ distclean-compile:
1238
1227
  @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/o32.Plo@am__quote@ # am--include-marker
1239
1228
  @AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/eabi.Plo@am__quote@ # am--include-marker
1240
1229
  @AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker
1241
- @AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker
1242
- @AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker
1243
1230
  @AMDEP_TRUE@@am__include@ @am__quote@src/or1k/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker
1244
1231
  @AMDEP_TRUE@@am__include@ @am__quote@src/or1k/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker
1245
1232
  @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker
@@ -1365,7 +1352,6 @@ clean-libtool:
1365
1352
  -rm -rf src/microblaze/.libs src/microblaze/_libs
1366
1353
  -rm -rf src/mips/.libs src/mips/_libs
1367
1354
  -rm -rf src/moxie/.libs src/moxie/_libs
1368
- -rm -rf src/nios2/.libs src/nios2/_libs
1369
1355
  -rm -rf src/or1k/.libs src/or1k/_libs
1370
1356
  -rm -rf src/pa/.libs src/pa/_libs
1371
1357
  -rm -rf src/powerpc/.libs src/powerpc/_libs
@@ -1783,8 +1769,6 @@ distclean-generic:
1783
1769
  -rm -f src/mips/$(am__dirstamp)
1784
1770
  -rm -f src/moxie/$(DEPDIR)/$(am__dirstamp)
1785
1771
  -rm -f src/moxie/$(am__dirstamp)
1786
- -rm -f src/nios2/$(DEPDIR)/$(am__dirstamp)
1787
- -rm -f src/nios2/$(am__dirstamp)
1788
1772
  -rm -f src/or1k/$(DEPDIR)/$(am__dirstamp)
1789
1773
  -rm -f src/or1k/$(am__dirstamp)
1790
1774
  -rm -f src/pa/$(DEPDIR)/$(am__dirstamp)
@@ -1871,8 +1855,6 @@ distclean: distclean-recursive
1871
1855
  -rm -f src/mips/$(DEPDIR)/o32.Plo
1872
1856
  -rm -f src/moxie/$(DEPDIR)/eabi.Plo
1873
1857
  -rm -f src/moxie/$(DEPDIR)/ffi.Plo
1874
- -rm -f src/nios2/$(DEPDIR)/ffi.Plo
1875
- -rm -f src/nios2/$(DEPDIR)/sysv.Plo
1876
1858
  -rm -f src/or1k/$(DEPDIR)/ffi.Plo
1877
1859
  -rm -f src/or1k/$(DEPDIR)/sysv.Plo
1878
1860
  -rm -f src/pa/$(DEPDIR)/ffi.Plo
@@ -2013,8 +1995,6 @@ maintainer-clean: maintainer-clean-recursive
2013
1995
  -rm -f src/mips/$(DEPDIR)/o32.Plo
2014
1996
  -rm -f src/moxie/$(DEPDIR)/eabi.Plo
2015
1997
  -rm -f src/moxie/$(DEPDIR)/ffi.Plo
2016
- -rm -f src/nios2/$(DEPDIR)/ffi.Plo
2017
- -rm -f src/nios2/$(DEPDIR)/sysv.Plo
2018
1998
  -rm -f src/or1k/$(DEPDIR)/ffi.Plo
2019
1999
  -rm -f src/or1k/$(DEPDIR)/sysv.Plo
2020
2000
  -rm -f src/pa/$(DEPDIR)/ffi.Plo
@@ -1,7 +1,7 @@
1
1
  Status
2
2
  ======
3
3
 
4
- libffi-3.4.6 was released on February 18, 2024. Check the libffi web
4
+ libffi-3.4.8 was released on April 9, 2025. Check the libffi web
5
5
  page for updates: <URL:http://sourceware.org/libffi/>.
6
6
 
7
7
 
@@ -76,7 +76,6 @@ tested:
76
76
  | MIPS | RTEMS | GCC |
77
77
  | MIPS64 | Linux | GCC |
78
78
  | Moxie | Bare metal | GCC |
79
- | Nios II | Linux | GCC |
80
79
  | OpenRISC | Linux | GCC |
81
80
  | PowerPC 32-bit | AIX | GCC |
82
81
  | PowerPC 32-bit | AIX | IBM XL C |
@@ -201,6 +200,24 @@ History
201
200
 
202
201
  See the git log for details at http://github.com/libffi/libffi.
203
202
 
203
+ 3.4.8 Apr-9-2025
204
+ Add static trampoline support for powerpc-linux (32-bit SYSV BE),
205
+ powerpc64-linux (64-bit ELFv1 BE) and
206
+ powerpc64le-linux (64-bit ELFv2 LE)
207
+ Various x86-64 bug fixes (x32 ABI and improper memory access for
208
+ small argument calls).
209
+ Fix to enable pointer authentication for aarch64.
210
+
211
+ 3.4.7 Feb-8-2025
212
+ Add static trampoline support for Linux on s390x.
213
+ Fix BTI support for ARM64.
214
+ Support pointer authentication for ARM64.
215
+ Fix ASAN compatibility.
216
+ Fix x86-64 calls with 6 GP registers and some SSE registers.
217
+ Miscellaneous fixes for ARC and Darwin ARM64.
218
+ Fix OpenRISC or1k and Solaris 10 builds.
219
+ Remove nios2 port.
220
+
204
221
  3.4.6 Feb-18-2024
205
222
  Fix long double regression on mips64 and alpha.
206
223
 
@@ -180,6 +180,10 @@ AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [
180
180
  if $LD --version 2>/dev/null | grep 'LLD '> /dev/null 2>&1; then
181
181
  libat_ld_is_lld=yes
182
182
  fi
183
+ libat_ld_is_mold=no
184
+ if $LD --version 2>/dev/null | grep 'mold '> /dev/null 2>&1; then
185
+ libat_ld_is_mold=yes
186
+ fi
183
187
  changequote(,)
184
188
  ldver=`$LD --version 2>/dev/null |
185
189
  sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
@@ -336,6 +340,8 @@ if test $enable_symvers != no && test $libat_shared_libgcc = yes; then
336
340
  enable_symvers=gnu
337
341
  elif test $libat_ld_is_lld = yes ; then
338
342
  enable_symvers=gnu
343
+ elif test $libat_ld_is_mold = yes ; then
344
+ enable_symvers=gnu
339
345
  else
340
346
  # The right tools, the right setup, but too old. Fallbacks?
341
347
  AC_MSG_WARN(=== Linker version $libat_gnu_ld_version is too old for)