1DOLLY 32MODULE libffi34REQUIRES HEADER libc5REQUIRES TOOL ar6REQUIRES TOOL cc7REQUIRES TOOL make8REQUIRES TOOL rm9REQUIRES TOOL slop10REQUIRES TOOL tar1112SOURCE HOST /static/python/libffi.tar /tmp/libffi.tar 0b9478e1c8726962026fc4fe97e647b60b00497f52e9709a8206daa5d7f5dc7113SLOP tar \14 -xf /tmp/libffi.tar \15 -C /1617SOURCE HOST /static/python/runtimes/libffi-dolly.c /usr/src/libffi/src/dolly.c a253e2ff15cc13e771341792b3ac6b6c534af4b04e015f184e12593285877b121819FILE /tmp/libffi/Makefile20 .RECIPEPREFIX := >21 CC := cc22 AR := ar23 ROOT := /usr/src/libffi24 CFLAGS := -O1 -std=c17 -DDOLLY -DHAVE_CONFIG_H -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/src25 NAMES := prep_cif types raw_api java_raw_api closures tramp dolly26 OBJECTS := $(addprefix /tmp/libffi/,$(addsuffix .o,$(NAMES)))27 all: /usr/lib/libffi.a28 /tmp/libffi/%.o: $(ROOT)/src/%.c29 >$(CC) $(CFLAGS) -c $< -o $@30 /usr/lib/libffi.a: $(OBJECTS)31 >$(AR) rcs $@ $^32SLOP make \33 -f /tmp/libffi/Makefile3435FILE /tmp/libffi-check.c363738 static int add(int left, int right) { return left + right; }39 static void add_closure(ffi_cif *cif, void *result, void **arguments,40 void *context) {41 (void)cif;42 *(int *)result = *(int *)arguments[0] + *(int *)context;43 }44 int main(void) {45 ffi_cif cif;46 ffi_type *types[] = {&ffi_type_sint32, &ffi_type_sint32};47 int left = 19, right = 23, answer = 0;48 void *values[] = {&left, &right};49 if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2,50 &ffi_type_sint32, types) != FFI_OK) return 10;51 ffi_call(&cif, FFI_FN(add), &answer, values);52 if (answer != 42) return 11;53 void *code = 0;54 ffi_closure *closure = ffi_closure_alloc(sizeof(*closure), &code);55 ffi_type *one_type[] = {&ffi_type_sint32};56 if (closure == 0 ||57 ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,58 &ffi_type_sint32, one_type) != FFI_OK ||59 ffi_prep_closure_loc(closure, &cif, add_closure, &right, code) != FFI_OK) {60 return 12;61 }62 int (*callback)(int) = code;63 answer = callback(19);64 ffi_closure_free(closure);65 if (answer != 42) return 13;66 return puts("LIBFFI-WASM64-OK") < 0 ? 14 : 0;67 }68SLOP cc \69 -O1 \70 -std=c17 \71 /tmp/libffi-check.c \72 -o /tmp/libffi-check \73 -lffi74SLOP slop \75 -c \76 /tmp/libffi-check7778EXPORTS LIB ffi /usr/lib/libffi.a79EXPORTS HEADER /usr/include/ffi.h80EXPORTS HEADER /usr/include/ffitarget.h81FILE /usr/share/licenses/libffi/LICENSE8283SLOP rm \84 -rf \85 /tmp/libffi \86 /tmp/libffi-check \87 /tmp/libffi-check.c \88 /tmp/libffi.tar \89 /usr/src/libffi90