diff options
author | 2025-01-29 13:24:43 +0100 | |
---|---|---|
committer | 2025-02-05 10:35:47 -0800 | |
commit | 3428f9be71b0d20978d11d63b5d82962b88d02bf (patch) | |
tree | 9932f8416dbc5ea7a1b8e32dab68afc192816236 /libnativebridge/native_bridge.cc | |
parent | 65914c03ce6a5568a0c98f05f8217bb89108bf1b (diff) |
nativebridge: Add isNativeBridgeFunctionPointer method
This method lets native bridge report if particular pointer is in the
region of code executable by native bridge implementation.
Bug: 393035780
Test: atest art/libnativebridge/tests
Change-Id: Icaec80cb7efae5b918aed0a98216cbfaeaba330d
Diffstat (limited to 'libnativebridge/native_bridge.cc')
-rw-r--r-- | libnativebridge/native_bridge.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libnativebridge/native_bridge.cc b/libnativebridge/native_bridge.cc index 4461f79919..af85d4ee35 100644 --- a/libnativebridge/native_bridge.cc +++ b/libnativebridge/native_bridge.cc @@ -133,6 +133,8 @@ enum NativeBridgeImplementationVersion { PRE_ZYGOTE_FORK_VERSION = 6, // The version with critical_native support CRITICAL_NATIVE_SUPPORT_VERSION = 7, + // The version with native bridge detection fallback for function pointers + IDENTIFY_NATIVELY_BRIDGED_FUNCTION_POINTERS_VERSION = 8, }; // Whether we had an error at some point. @@ -732,6 +734,18 @@ void* NativeBridgeLoadLibraryExt(const char* libpath, int flag, native_bridge_na return nullptr; } +bool NativeBridgeIsNativeBridgeFunctionPointer(const void* method) { + if (NativeBridgeInitialized()) { + if (isCompatibleWith(IDENTIFY_NATIVELY_BRIDGED_FUNCTION_POINTERS_VERSION)) { + return callbacks->isNativeBridgeFunctionPointer(method); + } else { + ALOGW("not compatible with version %d, unable to call isNativeBridgeFunctionPointer", + IDENTIFY_NATIVELY_BRIDGED_FUNCTION_POINTERS_VERSION); + } + } + return false; +} + } // extern "C" } // namespace android |