summaryrefslogtreecommitdiff
path: root/libnativebridge/native_bridge.cc
diff options
context:
space:
mode:
author dimitry <dimitry@google.com> 2025-01-29 13:24:43 +0100
committer Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-02-05 10:35:47 -0800
commit3428f9be71b0d20978d11d63b5d82962b88d02bf (patch)
tree9932f8416dbc5ea7a1b8e32dab68afc192816236 /libnativebridge/native_bridge.cc
parent65914c03ce6a5568a0c98f05f8217bb89108bf1b (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.cc14
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