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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +17 -0
- data/Gemfile +3 -1
- data/Rakefile +2 -2
- data/ext/ffi_c/Function.c +52 -34
- data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +48 -60
- data/ext/ffi_c/libffi/Makefile.am +4 -3
- data/ext/ffi_c/libffi/Makefile.in +5 -25
- data/ext/ffi_c/libffi/README.md +19 -2
- data/ext/ffi_c/libffi/acinclude.m4 +6 -0
- data/ext/ffi_c/libffi/config.guess +80 -22
- data/ext/ffi_c/libffi/config.sub +161 -80
- data/ext/ffi_c/libffi/configure +41 -25
- data/ext/ffi_c/libffi/configure.ac +9 -8
- data/ext/ffi_c/libffi/configure.host +0 -5
- data/ext/ffi_c/libffi/doc/Makefile.in +1 -0
- data/ext/ffi_c/libffi/doc/libffi.texi +3 -3
- data/ext/ffi_c/libffi/doc/version.texi +4 -4
- data/ext/ffi_c/libffi/fficonfig.h.in +3 -3
- data/ext/ffi_c/libffi/include/Makefile.in +1 -0
- data/ext/ffi_c/libffi/include/ffi_cfi.h +2 -0
- data/ext/ffi_c/libffi/include/ffi_common.h +17 -0
- data/ext/ffi_c/libffi/man/Makefile.in +1 -0
- data/ext/ffi_c/libffi/src/aarch64/ffi.c +7 -4
- data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +2 -2
- data/ext/ffi_c/libffi/src/aarch64/internal.h +63 -17
- data/ext/ffi_c/libffi/src/aarch64/sysv.S +16 -12
- data/ext/ffi_c/libffi/src/arc/arcompact.S +2 -2
- data/ext/ffi_c/libffi/src/arc/ffi.c +6 -2
- data/ext/ffi_c/libffi/src/closures.c +3 -3
- data/ext/ffi_c/libffi/src/dlmalloc.c +1 -0
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +2 -4
- data/ext/ffi_c/libffi/src/mips/n32.S +4 -0
- data/ext/ffi_c/libffi/src/mips/o32.S +4 -0
- data/ext/ffi_c/libffi/src/or1k/ffi.c +2 -2
- data/ext/ffi_c/libffi/src/powerpc/ffi.c +13 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +26 -19
- data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +26 -16
- data/ext/ffi_c/libffi/src/powerpc/internal.h +10 -0
- data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +47 -0
- data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +24 -0
- data/ext/ffi_c/libffi/src/prep_cif.c +1 -4
- data/ext/ffi_c/libffi/src/s390/ffi.c +28 -1
- data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
- data/ext/ffi_c/libffi/src/s390/sysv.S +38 -0
- data/ext/ffi_c/libffi/src/sparc/ffi.c +16 -0
- data/ext/ffi_c/libffi/src/wasm32/ffi.c +10 -262
- data/ext/ffi_c/libffi/src/x86/ffi.c +4 -1
- data/ext/ffi_c/libffi/src/x86/ffi64.c +4 -1
- data/ext/ffi_c/libffi/testsuite/Makefile.am +4 -3
- data/ext/ffi_c/libffi/testsuite/Makefile.in +5 -3
- data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +4 -24
- data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +8 -25
- data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +3 -28
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/overread.c +54 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_int_float.c +88 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +1 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +1 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/x32.c +31 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +1 -1
- data/lib/ffi/ffi.rb +59 -0
- data/lib/ffi/version.rb +1 -1
- data/sig/ffi/auto_pointer.rbs +0 -1
- data/sig/ffi/library.rbs +1 -1
- data.tar.gz.sig +0 -0
- metadata +18 -18
- metadata.gz.sig +0 -0
- data/ext/ffi_c/libffi/.circleci/config.yml +0 -156
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '058d816e4da0c93950ccb7181f82c310f9faf3e934948e77f574d01ffcdf7aaa'
|
4
|
+
data.tar.gz: 0553df9cff19ffb4404dac629dac314f43f70f3cb647899e0cae687dd48631d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
-
|
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
|
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.
|
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.
|
22
|
-
EMSCRIPTEN_VERSION: 3.1.
|
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
|
-
|
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
|
-
-
|
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
|
-
|
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@
|
46
|
+
uses: actions/checkout@v4
|
50
47
|
|
51
|
-
- name:
|
52
|
-
|
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
|
-
|
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
|
-
-
|
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
|
70
|
-
|
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:
|
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
|
-
|
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@
|
84
|
+
uses: actions/checkout@v4
|
97
85
|
|
98
86
|
- name: Setup cache
|
99
|
-
|
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
|
-
-
|
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:
|
111
|
-
run:
|
112
|
-
|
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:
|
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
|
119
|
-
./testsuite/emscripten/build-tests.sh testsuite/libffi.closures.test
|
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@
|
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-
|
122
|
+
runs-on: ubuntu-24.04
|
135
123
|
needs: [build]
|
136
124
|
steps:
|
137
125
|
- name: Checkout
|
138
|
-
uses: actions/checkout@
|
126
|
+
uses: actions/checkout@v4
|
139
127
|
|
140
128
|
- name: Download build artifact
|
141
|
-
uses: actions/download-artifact@
|
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@
|
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
|
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/
|
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/
|
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
|
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/
|
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/
|
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
|
data/ext/ffi_c/libffi/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Status
|
2
2
|
======
|
3
3
|
|
4
|
-
libffi-3.4.
|
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)
|