dart-sdk/tests/ffi
Daco Harkes 9588927faf [vm] Native asset relative path resolution with symlinks
This CL moves native assets resolution to the embedder.

The Dart VM looks up the asset path (for example
`['relative', 'foo.so']`) with the asset id. The embedder defines
callbacks for asset loading, and returns a handle to the dylib.
Then the VM calls the embedder again with `dlsym` to lookup the symbol.

The Dart VM & kernel compiler are responsible for the asset id to
asset path mapping. The kernel compiler compiles it into the snapshot
and the VM looks it up in the snapshot.

Relative paths are resolved relative to the isolate script uri (kernel
snapshot, jit snapshot, aot snapshot, or `dart compile exe` result).
The embedder is responsible for remembering the script uri it set when
spawning the isolate group.

This CL does not add `dlclose` or `dladdr` embedder callbacks yet.
Bug: https://github.com/dart-lang/sdk/issues/55521
Bug: https://github.com/dart-lang/sdk/issues/55966

TEST=pkg/dartdev/test/native_assets/build_test.dart
TEST=tests/ffi/native_assets/asset_relative_test.dart

Bug: https://github.com/dart-lang/sdk/issues/55410
Bug: https://github.com/dart-lang/sdk/issues/55523
Bug: https://github.com/dart-lang/sdk/issues/55207
Change-Id: I75ec4a368c5fb3d2f76b03771e796ff56bcac941
Cq-Include-Trybots: dart/try:vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-aot-mac-release-arm64-try,vm-aot-mac-release-x64-try,vm-aot-obfuscate-linux-release-x64-try,vm-aot-optimization-level-linux-release-x64-try,vm-aot-win-debug-arm64-try,vm-aot-win-debug-x64-try,vm-aot-win-debug-x64c-try,pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-mac-release-try,pkg-mac-release-arm64-try,pkg-win-release-try,pkg-win-release-arm64-try,vm-aot-asan-linux-release-x64-try,vm-asan-linux-release-x64-try,vm-aot-msan-linux-release-x64-try,vm-msan-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/361881
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2024-06-12 16:45:19 +00:00
..
generator [vm/ffi] address of operator for FFI leaf calls 2024-04-25 10:06:16 +00:00
native_assets [vm] Native asset relative path resolution with symlinks 2024-06-12 16:45:19 +00:00
static_checks [vm/ffi] address of operator for FFI leaf calls 2024-04-25 10:06:16 +00:00
abi_specific_int_incomplete_aot_test.dart
abi_specific_int_incomplete_jit_test.dart Revert "[ffi]: Remove pointer elementAt method." 2024-01-22 12:20:48 +00:00
abi_specific_int_test.dart Revert "[ffi]: Remove pointer elementAt method." 2024-01-22 12:20:48 +00:00
abi_test.dart
address_of_array_generated_test.dart [vm/ffi] address of operator for FFI leaf calls 2024-04-25 10:06:16 +00:00
address_of_generated_shared.dart [vm/ffi] address of operator for FFI leaf calls 2024-04-25 10:06:16 +00:00
address_of_shared.dart [vm/ffi] address of operator for FFI leaf calls 2024-04-25 10:06:16 +00:00
address_of_struct_generated_test.dart [vm/ffi] address of operator for FFI leaf calls 2024-04-25 10:06:16 +00:00
address_of_test.dart [vm/ffi] address of operator for FFI leaf calls 2024-04-25 10:06:16 +00:00
address_of_typeddata_generated_test.dart [vm/ffi] address of operator for FFI leaf calls 2024-04-25 10:06:16 +00:00
aliasing_test.dart Revert "[ffi]: Remove pointer elementAt method." 2024-01-22 12:20:48 +00:00
all_positive.dart
allocator_test.dart
analysis_options.yaml [tests] Remove obsolete Dart 3.0 experiments from FFI tests 2023-06-15 08:25:18 +00:00
async_callback_tests_utils.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
async_void_function_callbacks_test.dart [vm, ffi] Make callbacks profiler-safe. 2024-05-28 21:16:41 +00:00
bool_test.dart
c_types_test.dart
callback_tests_utils.dart [vm/ffi] Closure callbacks for sync callbacks 2023-08-25 03:35:44 +00:00
callback_unwind_error_test.dart
calloc_test.dart
coordinate.dart
coordinate_nnbd_workaround.dart
data_not_asan_test.dart
data_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
deeply_immutable_c_api_finalizer_test.dart [vm/test] Fix imports 2024-03-15 17:21:30 +00:00
dl_api_exit_enter_isolate_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
dylib_close_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
dylib_isolates_test.dart
dylib_open_test.dart Reland "Tweak expect.dart library." 2024-04-26 15:28:26 +00:00
dylib_utils.dart [test/ffi] Fix tests on Fuchsia 2023-10-30 15:28:20 +00:00
expando_test.dart
extension_methods_test.dart Revert "[ffi]: Remove pointer elementAt method." 2024-01-22 12:20:48 +00:00
external_typed_data_finalizer_test.dart [vm/ffi] Pointer.asTypedList finalizer 2023-05-10 11:38:57 +00:00
external_typed_data_test.dart
ffi.status [test] Run FFI tests on Fuchsia ARM64. 2024-04-30 17:37:45 +00:00
ffi_callback_unique_test.dart Reland "[vm] Migrate FFI callbacks to the new metadata system." 2023-06-06 02:07:58 +00:00
ffi_induce_a_crash_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
ffi_native_test.dart [vm/ffi] Remove deprecated FfiNative 2023-11-20 13:16:28 +00:00
ffi_test_helpers.dart
finalizer_external_size_accounting_test.dart
function_callbacks_many_test.dart [vm] Remove dual mapping of code 2024-01-09 12:36:55 +00:00
function_callbacks_structs_by_value_generated_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_callbacks_structs_by_value_native_callable_generated_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_callbacks_structs_by_value_test.dart
function_callbacks_subtype_test.dart [vm, ffi] Make callbacks profiler-safe. 2024-05-28 21:16:41 +00:00
function_callbacks_test.dart [vm, ffi] Make callbacks profiler-safe. 2024-05-28 21:16:41 +00:00
function_callbacks_varargs_generated_test.dart [vm/ffi] Fix variadic arguments on MacOS Arm64 2024-04-17 15:42:16 +00:00
function_callbacks_varargs_native_callable_generated_test.dart [vm/ffi] Fix variadic arguments on MacOS Arm64 2024-04-17 15:42:16 +00:00
function_callbacks_very_many_test.dart [vm] Remove dual mapping of code 2024-01-09 12:36:55 +00:00
function_struct_by_value_out_of_bounds_test.dart [ffi]: Add extension operator methods(+,-) for pointer arithmetic 2023-12-14 11:42:38 +00:00
function_structs_by_value_generated_args_leaf_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_args_native_leaf_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_args_native_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_args_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_compounds.dart [vm, ffi] Round up checking for registers for small structs. 2023-10-17 23:01:17 +00:00
function_structs_by_value_generated_ret_arg_leaf_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_ret_arg_native_leaf_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_ret_arg_native_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_ret_arg_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_ret_leaf_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_ret_native_leaf_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_ret_native_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_by_value_generated_ret_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
function_structs_test.dart Revert "[ffi]: Remove pointer elementAt method." 2024-01-22 12:20:48 +00:00
function_test.dart Revert "[ffi]: Remove pointer elementAt method." 2024-01-22 12:20:48 +00:00
function_varargs_generated_leaf_test.dart [vm/ffi] Fix variadic arguments on MacOS Arm64 2024-04-17 15:42:16 +00:00
function_varargs_generated_native_leaf_test.dart [vm/ffi] Fix variadic arguments on MacOS Arm64 2024-04-17 15:42:16 +00:00
function_varargs_generated_native_test.dart [vm/ffi] Fix variadic arguments on MacOS Arm64 2024-04-17 15:42:16 +00:00
function_varargs_generated_test.dart [vm/ffi] Fix variadic arguments on MacOS Arm64 2024-04-17 15:42:16 +00:00
function_varargs_name_test.dart [tests] Remove obsolete Dart 3.0 experiments from FFI tests 2023-06-15 08:25:18 +00:00
function_varargs_test.dart [tests] Remove obsolete Dart 3.0 experiments from FFI tests 2023-06-15 08:25:18 +00:00
function_very_many_test.dart [vm] Remove dual mapping of code 2024-01-09 12:36:55 +00:00
hardfp_test.dart [vm] Remove dual mapping of code 2024-01-09 12:36:55 +00:00
has_symbol_test.dart
inline_array_multi_dimensional_test.dart
inline_array_test.dart [vm/ffi] Check Array<T extends AbiSpecificInt> bounds [] and []= 2024-01-05 12:35:49 +00:00
invoke_callback_after_suspension_test.dart [vm/ffi] Move ffi-callback related state from Thread to ObjectStore, move jit trampolines from Isolate to IsolateGroup 2023-05-17 11:23:28 +00:00
isolate_local_function_callbacks_test.dart [vm, ffi] Make callbacks profiler-safe. 2024-05-28 21:16:41 +00:00
msan_test.dart [vm/msan] Fix MemCopyInstr instrumentation 2024-04-08 10:40:23 +00:00
native_callables_async_structs_by_value_generated_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
native_callables_sync_structs_by_value_generated_test.dart [vm/ffi] Reformat generated tests 2024-04-15 10:55:46 +00:00
native_effect_test.dart
negative_function_test.dart
pointer_arithmetic_operators_test.dart [tests/ffi]: Fix failing pointer arithmetic test. 2023-12-18 18:38:05 +00:00
regress_37254_test.dart
regress_39044_test.dart
regress_39063_test.dart
regress_39885_test.dart Revert "[ffi]: Remove pointer elementAt method." 2024-01-22 12:20:48 +00:00
regress_40537_test.dart
regress_43016_test.dart
regress_43693_test.dart
regress_45189_test.dart
regress_45198_test.dart
regress_45507_test.dart
regress_45988_test.dart
regress_46004_test.dart
regress_46127_test.dart
regress_47594_test.dart [infra] Run JIT FFI tests on QEMU. 2023-05-26 23:22:32 +00:00
regress_47673_test.dart
regress_49402_test.dart
regress_49684_test.dart [vm/ffi] Remove deprecated FfiNative 2023-11-20 13:16:28 +00:00
regress_51315_test.dart [ffi]: Add extension operator methods(+,-) for pointer arithmetic 2023-12-14 11:42:38 +00:00
regress_51321_test.dart
regress_51504_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
regress_51538_2_test.dart
regress_51538_3_test.dart
regress_51538_test.dart
regress_52298_test.dart [analyzer/ffi] Fix spurious FFI errors 2023-05-08 15:16:05 +00:00
regress_52399_test.dart [vm/ffi] MSAN instrument StoreIndexedInstr x64 2023-09-19 16:51:30 +00:00
regress_b_261224444_test.dart
regress_flutter79441_test.dart
regress_flutter97301_test.dart
regress_jump_to_frame_test.dart
sizeof_test.dart [vm/ffi] Introduce SizedNativeType 2024-01-12 10:13:39 +00:00
snapshot_test.dart [vm/ffi] Allow Pointer objects to be shared across isolates 2024-02-07 12:48:50 +00:00
stacktrace_regress_37910_test.dart
structs_nested_test.dart
structs_nnbd_workaround_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
structs_packed_test.dart
structs_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
structs_typed_data_test.dart Reland "[vm/ffi] Introduce Struct.create and Union.create" 2024-02-01 18:28:03 +00:00
unaligned_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
variance_function_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
very_large_struct.dart
vmspecific_deprecated_funcs_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
vmspecific_dynamic_library_test.dart [vm/ffi] Cleanup tests 2024-02-09 21:27:29 +00:00
vmspecific_enable_ffi_test.dart
vmspecific_ffi_native_handles_test.dart [ffi/test] Skip handles test on Win AOT 2023-11-17 10:54:02 +00:00
vmspecific_ffi_native_test.dart [vm/ffi] Remove deprecated FfiNative 2023-11-20 13:16:28 +00:00
vmspecific_function_callbacks_exit_test.dart
vmspecific_function_callbacks_test.dart [vm] Remove dual mapping of code 2024-01-09 12:36:55 +00:00
vmspecific_function_gc_test.dart [vm] Remove dual mapping of code 2024-01-09 12:36:55 +00:00
vmspecific_function_test.dart [vm] Remove dual mapping of code 2024-01-09 12:36:55 +00:00
vmspecific_handle_dynamically_linked_test.dart Expose Dart_Null_DL from dart_api_dl.h 2023-12-11 21:06:37 +00:00
vmspecific_handle_test.dart
vmspecific_highmem_32bit_test.dart
vmspecific_leaf_call_test.dart
vmspecific_native_finalizer_2_test.dart
vmspecific_native_finalizer_deeply_immutable_test.dart [vm/ffi] Throw on attaching NativeFinalizer to deeply immutable object 2024-03-28 11:24:36 +00:00
vmspecific_native_finalizer_isolate_groups_test.dart
vmspecific_native_finalizer_isolates_test.dart
vmspecific_native_finalizer_test.dart
vmspecific_object_gc_test.dart
vmspecific_pointer_load_il_test.dart [vm] Split DartReturnInstr and NativeReturnInstr 2024-03-26 11:12:38 +00:00
vmspecific_regress_37100_test.dart
vmspecific_regress_37511_callbacks_test.dart
vmspecific_regress_37511_test.dart Revert "[ffi]: Remove pointer elementAt method." 2024-01-22 12:20:48 +00:00
vmspecific_regress_37780_test.dart
vmspecific_regress_51794_test.dart
vmspecific_send_port_id_test.dart