// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:ffi';

import "package:expect/expect.dart";

import 'dylib_utils.dart';

class EVP_MD extends Pointer<Void> {}

DynamicLibrary ffiTestFunctions = dlopenPlatformSpecific("ffi_test_functions");

final EVP_sha1 = ffiTestFunctions
    .lookupFunction<EVP_MD Function(), EVP_MD Function()>('LargePointer');

main() {
  int result = EVP_sha1().address;
  // On 32 bit only the lowest 32 bits are returned, so only test those.
  result &= 0x00000000FFFFFFFF;
  Expect.equals(0x0000000082000000, result);
}

// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// SharedObjects=ffi_test_functions

import 'dart:ffi';

import "package:expect/expect.dart";

import 'dylib_utils.dart';

class EVP_MD extends Pointer<Void> {}

DynamicLibrary ffiTestFunctions = dlopenPlatformSpecific("ffi_test_functions");

final EVP_sha1 = ffiTestFunctions
    .lookupFunction<EVP_MD Function(), EVP_MD Function()>('LargePointer');

main() {
  int result = EVP_sha1().address;
  // On 32 bit only the lowest 32 bits are returned, so only test those.
  result &= 0x00000000FFFFFFFF;
  Expect.equals(0x0000000082000000, result);
}

Fix ffi trampoline class finalization - fix test on android
[vm/ffi] Fix ffi trampoline class finalization - fix test on android

Change-Id: I4389667701de45827e093305bdda8443520abe54
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try, app-kernel-linux-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103844
Commit-Queue: Daco Harkes <930cbae0ca77f1954c53e32620d89cfcca318f00@google.com>
Reviewed-by: Daco Harkes <930cbae0ca77f1954c53e32620d89cfcca318f00@google.com>
