summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSijie Chen <sijiec@google.com>2024-02-17 07:43:25 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2024-02-17 07:43:25 +0000
commitdc20c25e41c0930378957ec0aa73fec1c9163955 (patch)
treece45921bd1bee457e9b4bc81cda02b894b99085c
parenta83beb586c8b7959fc502efa46667774674aa9f8 (diff)
parent8bb2091b549c59c19f0b5a77b5a65b249819f2aa (diff)
downloadnative_bridge_support-dc20c25e41c0930378957ec0aa73fec1c9163955.tar.gz
[Berberis] Replicate custom_trampolines_*.json am: 8bb2091b54
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/native_bridge_support/+/2967824 Change-Id: Ic517da700cc53200369b99985b6018273bd8df25 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--android_api/libEGL/proxy/custom_trampolines_arm64_to_x86_64.json11
-rw-r--r--android_api/libEGL/proxy/custom_trampolines_arm_to_x86.json11
-rw-r--r--android_api/libEGL/proxy/custom_trampolines_riscv64_to_x86_64.json11
-rw-r--r--android_api/libGLESv1_CM/proxy/custom_trampolines_arm64_to_x86_64.json4
-rw-r--r--android_api/libGLESv1_CM/proxy/custom_trampolines_arm_to_x86.json4
-rw-r--r--android_api/libGLESv1_CM/proxy/custom_trampolines_riscv64_to_x86_64.json4
-rw-r--r--android_api/libGLESv2/proxy/custom_trampolines_arm64_to_x86_64.json19
-rw-r--r--android_api/libGLESv2/proxy/custom_trampolines_arm_to_x86.json19
-rw-r--r--android_api/libGLESv2/proxy/custom_trampolines_riscv64_to_x86_64.json19
-rw-r--r--android_api/libGLESv3/proxy/custom_trampolines_arm64_to_x86_64.json19
-rw-r--r--android_api/libGLESv3/proxy/custom_trampolines_arm_to_x86.json19
-rw-r--r--android_api/libGLESv3/proxy/custom_trampolines_riscv64_to_x86_64.json19
-rw-r--r--android_api/libOpenMAXAL/proxy/custom_trampolines_arm64_to_x86_64.json9
-rw-r--r--android_api/libOpenMAXAL/proxy/custom_trampolines_arm_to_x86.json9
-rw-r--r--android_api/libOpenMAXAL/proxy/custom_trampolines_riscv64_to_x86_64.json9
-rw-r--r--android_api/libOpenSLES/proxy/custom_trampolines_arm64_to_x86_64.json8
-rw-r--r--android_api/libOpenSLES/proxy/custom_trampolines_arm_to_x86.json8
-rw-r--r--android_api/libOpenSLES/proxy/custom_trampolines_riscv64_to_x86_64.json8
-rw-r--r--android_api/libaaudio/proxy/custom_trampolines_arm64_to_x86_64.json15
-rw-r--r--android_api/libaaudio/proxy/custom_trampolines_arm_to_x86.json15
-rw-r--r--android_api/libaaudio/proxy/custom_trampolines_riscv64_to_x86_64.json15
-rw-r--r--android_api/libamidi/proxy/custom_trampolines_arm64_to_x86_64.json23
-rw-r--r--android_api/libamidi/proxy/custom_trampolines_arm_to_x86.json23
-rw-r--r--android_api/libamidi/proxy/custom_trampolines_riscv64_to_x86_64.json23
-rw-r--r--android_api/libandroid/proxy/custom_trampolines_arm64_to_x86_64.json74
-rw-r--r--android_api/libandroid/proxy/custom_trampolines_arm_to_x86.json92
-rw-r--r--android_api/libandroid/proxy/custom_trampolines_riscv64_to_x86_64.json74
-rw-r--r--android_api/libandroid_runtime/proxy/custom_trampolines_arm64_to_x86_64.json19
-rw-r--r--android_api/libandroid_runtime/proxy/custom_trampolines_arm_to_x86.json19
-rw-r--r--android_api/libandroid_runtime/proxy/custom_trampolines_riscv64_to_x86_64.json19
-rw-r--r--android_api/libbinder_ndk/proxy/custom_trampolines_arm64_to_x86_64.json35
-rw-r--r--android_api/libbinder_ndk/proxy/custom_trampolines_arm_to_x86.json35
-rw-r--r--android_api/libbinder_ndk/proxy/custom_trampolines_riscv64_to_x86_64.json35
-rw-r--r--android_api/libc/proxy/custom_trampolines_arm64_to_x86_64.json591
-rw-r--r--android_api/libc/proxy/custom_trampolines_arm_to_x86.json577
-rw-r--r--android_api/libc/proxy/custom_trampolines_riscv64_to_x86_64.json573
-rw-r--r--android_api/libcamera2ndk/proxy/custom_trampolines_arm64_to_x86_64.json69
-rw-r--r--android_api/libcamera2ndk/proxy/custom_trampolines_arm_to_x86.json69
-rw-r--r--android_api/libcamera2ndk/proxy/custom_trampolines_riscv64_to_x86_64.json69
-rw-r--r--android_api/libjnigraphics/proxy/custom_trampolines_arm64_to_x86_64.json11
-rw-r--r--android_api/libjnigraphics/proxy/custom_trampolines_arm_to_x86.json11
-rw-r--r--android_api/libjnigraphics/proxy/custom_trampolines_riscv64_to_x86_64.json11
-rw-r--r--android_api/libmediandk/proxy/custom_trampolines_arm64_to_x86_64.json72
-rw-r--r--android_api/libmediandk/proxy/custom_trampolines_arm_to_x86.json72
-rw-r--r--android_api/libmediandk/proxy/custom_trampolines_riscv64_to_x86_64.json54
-rw-r--r--android_api/libnativehelper/proxy/custom_trampolines_arm64_to_x86_64.json23
-rw-r--r--android_api/libnativehelper/proxy/custom_trampolines_arm_to_x86.json23
-rw-r--r--android_api/libnativehelper/proxy/custom_trampolines_riscv64_to_x86_64.json23
-rw-r--r--android_api/libnativewindow/proxy/custom_trampolines_arm64_to_x86_64.json4
-rw-r--r--android_api/libnativewindow/proxy/custom_trampolines_arm_to_x86.json4
-rw-r--r--android_api/libnativewindow/proxy/custom_trampolines_riscv64_to_x86_64.json4
-rw-r--r--android_api/libneuralnetworks/proxy/custom_trampolines_arm64_to_x86_64.json4
-rw-r--r--android_api/libneuralnetworks/proxy/custom_trampolines_arm_to_x86.json4
-rw-r--r--android_api/libneuralnetworks/proxy/custom_trampolines_riscv64_to_x86_64.json4
-rw-r--r--android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_arm64_to_x86_64.json11
-rw-r--r--android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_arm_to_x86.json11
-rw-r--r--android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_riscv64_to_x86_64.json11
57 files changed, 3031 insertions, 0 deletions
diff --git a/android_api/libEGL/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libEGL/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..14ae291
--- /dev/null
+++ b/android_api/libEGL/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,11 @@
+{
+ "config": {
+ "ignore_variables": true
+ },
+ "symbols": {
+ "eglGetProcAddress": {
+ "call_method": "custom_trampoline_with_thunk"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libEGL/proxy/custom_trampolines_arm_to_x86.json b/android_api/libEGL/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..14ae291
--- /dev/null
+++ b/android_api/libEGL/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,11 @@
+{
+ "config": {
+ "ignore_variables": true
+ },
+ "symbols": {
+ "eglGetProcAddress": {
+ "call_method": "custom_trampoline_with_thunk"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libEGL/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libEGL/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..14ae291
--- /dev/null
+++ b/android_api/libEGL/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,11 @@
+{
+ "config": {
+ "ignore_variables": true
+ },
+ "symbols": {
+ "eglGetProcAddress": {
+ "call_method": "custom_trampoline_with_thunk"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libGLESv1_CM/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libGLESv1_CM/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..2033075
--- /dev/null
+++ b/android_api/libGLESv1_CM/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,4 @@
+{
+ "symbols": {},
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libGLESv1_CM/proxy/custom_trampolines_arm_to_x86.json b/android_api/libGLESv1_CM/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..2033075
--- /dev/null
+++ b/android_api/libGLESv1_CM/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,4 @@
+{
+ "symbols": {},
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libGLESv1_CM/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libGLESv1_CM/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..2033075
--- /dev/null
+++ b/android_api/libGLESv1_CM/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,4 @@
+{
+ "symbols": {},
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libGLESv2/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libGLESv2/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..9a73568
--- /dev/null
+++ b/android_api/libGLESv2/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,19 @@
+{
+ "symbols": {
+ "glDebugMessageCallbackKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetPointervKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetVkProcAddrNV": {
+ "is_custom_compatible": false,
+ "reason_for_incompatible": [
+ "Prototype hides the actual complexity"
+ ]
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libGLESv2/proxy/custom_trampolines_arm_to_x86.json b/android_api/libGLESv2/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..9a73568
--- /dev/null
+++ b/android_api/libGLESv2/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,19 @@
+{
+ "symbols": {
+ "glDebugMessageCallbackKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetPointervKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetVkProcAddrNV": {
+ "is_custom_compatible": false,
+ "reason_for_incompatible": [
+ "Prototype hides the actual complexity"
+ ]
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libGLESv2/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libGLESv2/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..9a73568
--- /dev/null
+++ b/android_api/libGLESv2/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,19 @@
+{
+ "symbols": {
+ "glDebugMessageCallbackKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetPointervKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetVkProcAddrNV": {
+ "is_custom_compatible": false,
+ "reason_for_incompatible": [
+ "Prototype hides the actual complexity"
+ ]
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libGLESv3/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libGLESv3/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..9a73568
--- /dev/null
+++ b/android_api/libGLESv3/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,19 @@
+{
+ "symbols": {
+ "glDebugMessageCallbackKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetPointervKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetVkProcAddrNV": {
+ "is_custom_compatible": false,
+ "reason_for_incompatible": [
+ "Prototype hides the actual complexity"
+ ]
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libGLESv3/proxy/custom_trampolines_arm_to_x86.json b/android_api/libGLESv3/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..9a73568
--- /dev/null
+++ b/android_api/libGLESv3/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,19 @@
+{
+ "symbols": {
+ "glDebugMessageCallbackKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetPointervKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetVkProcAddrNV": {
+ "is_custom_compatible": false,
+ "reason_for_incompatible": [
+ "Prototype hides the actual complexity"
+ ]
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libGLESv3/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libGLESv3/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..9a73568
--- /dev/null
+++ b/android_api/libGLESv3/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,19 @@
+{
+ "symbols": {
+ "glDebugMessageCallbackKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetPointervKHR": {
+ "call_method": "custom_trampoline",
+ "header": "gl2ext.h"
+ },
+ "glGetVkProcAddrNV": {
+ "is_custom_compatible": false,
+ "reason_for_incompatible": [
+ "Prototype hides the actual complexity"
+ ]
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libOpenMAXAL/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libOpenMAXAL/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..e4f20f0
--- /dev/null
+++ b/android_api/libOpenMAXAL/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,9 @@
+{
+ "symbols": {
+ "xaCreateEngine": {
+ "call_method": "custom_thunk",
+ "header": "OpenMAXAL.h"
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libOpenMAXAL/proxy/custom_trampolines_arm_to_x86.json b/android_api/libOpenMAXAL/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..e4f20f0
--- /dev/null
+++ b/android_api/libOpenMAXAL/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,9 @@
+{
+ "symbols": {
+ "xaCreateEngine": {
+ "call_method": "custom_thunk",
+ "header": "OpenMAXAL.h"
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libOpenMAXAL/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libOpenMAXAL/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..e4f20f0
--- /dev/null
+++ b/android_api/libOpenMAXAL/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,9 @@
+{
+ "symbols": {
+ "xaCreateEngine": {
+ "call_method": "custom_thunk",
+ "header": "OpenMAXAL.h"
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libOpenSLES/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libOpenSLES/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..4619ea0
--- /dev/null
+++ b/android_api/libOpenSLES/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,8 @@
+{
+ "symbols": {
+ "slCreateEngine": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libOpenSLES/proxy/custom_trampolines_arm_to_x86.json b/android_api/libOpenSLES/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..4619ea0
--- /dev/null
+++ b/android_api/libOpenSLES/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,8 @@
+{
+ "symbols": {
+ "slCreateEngine": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libOpenSLES/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libOpenSLES/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..4619ea0
--- /dev/null
+++ b/android_api/libOpenSLES/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,8 @@
+{
+ "symbols": {
+ "slCreateEngine": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libaaudio/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libaaudio/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..2078c7d
--- /dev/null
+++ b/android_api/libaaudio/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,15 @@
+{
+ "config": {
+ "ignore_variables": true
+ },
+ "symbols": {
+ "_ZN6aaudio18AAudioBinderClient16getAAudioServiceEv": {
+ "call_method": "ignore",
+ "reason": [
+ "This function returns android::sp<> which we do not support, ",
+ "since this is not part of public API we can ignore it"
+ ]
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libaaudio/proxy/custom_trampolines_arm_to_x86.json b/android_api/libaaudio/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..2078c7d
--- /dev/null
+++ b/android_api/libaaudio/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,15 @@
+{
+ "config": {
+ "ignore_variables": true
+ },
+ "symbols": {
+ "_ZN6aaudio18AAudioBinderClient16getAAudioServiceEv": {
+ "call_method": "ignore",
+ "reason": [
+ "This function returns android::sp<> which we do not support, ",
+ "since this is not part of public API we can ignore it"
+ ]
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libaaudio/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libaaudio/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..2078c7d
--- /dev/null
+++ b/android_api/libaaudio/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,15 @@
+{
+ "config": {
+ "ignore_variables": true
+ },
+ "symbols": {
+ "_ZN6aaudio18AAudioBinderClient16getAAudioServiceEv": {
+ "call_method": "ignore",
+ "reason": [
+ "This function returns android::sp<> which we do not support, ",
+ "since this is not part of public API we can ignore it"
+ ]
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libamidi/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libamidi/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..48fb746
--- /dev/null
+++ b/android_api/libamidi/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,23 @@
+{
+ "symbols": {},
+ "types": {
+ "struct AMidiDevice const*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMidiDevice*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct _JNIEnv*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "_JNIEnv is made on x86 side is passed to x86 libandroid_runtime without changes"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/android_api/libamidi/proxy/custom_trampolines_arm_to_x86.json b/android_api/libamidi/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..48fb746
--- /dev/null
+++ b/android_api/libamidi/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,23 @@
+{
+ "symbols": {},
+ "types": {
+ "struct AMidiDevice const*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMidiDevice*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct _JNIEnv*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "_JNIEnv is made on x86 side is passed to x86 libandroid_runtime without changes"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/android_api/libamidi/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libamidi/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..48fb746
--- /dev/null
+++ b/android_api/libamidi/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,23 @@
+{
+ "symbols": {},
+ "types": {
+ "struct AMidiDevice const*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMidiDevice*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct _JNIEnv*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "_JNIEnv is made on x86 side is passed to x86 libandroid_runtime without changes"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/android_api/libandroid/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libandroid/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..ceece83
--- /dev/null
+++ b/android_api/libandroid/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,74 @@
+{
+ "symbols": {
+ "AChoreographer_postFrameCallback": {
+ "call_method": "custom_trampoline",
+ "header": "android/choreographer.h"
+ },
+ "AChoreographer_postFrameCallbackDelayed": {
+ "call_method": "custom_trampoline",
+ "header": "android/choreographer.h"
+ },
+ "AInputQueue_attachLooper": {
+ "call_method": "custom_trampoline",
+ "header": "android/input.h"
+ },
+ "ALooper_addFd": {
+ "call_method": "custom_trampoline",
+ "header": "android/looper.h"
+ },
+ "ANativeActivity_finish": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_hideSoftInput": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_setWindowFlags": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_setWindowFormat": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_showSoftInput": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ASensorManager_createEventQueue": {
+ "call_method": "custom_trampoline",
+ "header": "android/sensor.h"
+ },
+ "AStorageManager_mountObb": {
+ "call_method": "custom_trampoline",
+ "header": "android/storage_manager.h"
+ },
+ "AStorageManager_unmountObb": {
+ "call_method": "custom_trampoline",
+ "header": "android/storage_manager.h"
+ },
+ "_ZN7android13IMountService10descriptorE": {
+ "call_method": "ignore",
+ "reason": "This variable is no part of public API"
+ },
+ "_ZN7android18IObbActionListener10descriptorE": {
+ "call_method": "ignore",
+ "reason": "This variable is no part of public API"
+ }
+ },
+ "types": {
+ "struct AInputEvent": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct _JNIEnv*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "_JNIEnv is made on x86 side is passed to x86 libandroid_runtime without changes"
+ ]
+ }
+ }
+}
diff --git a/android_api/libandroid/proxy/custom_trampolines_arm_to_x86.json b/android_api/libandroid/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..c757677
--- /dev/null
+++ b/android_api/libandroid/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,92 @@
+{
+ "symbols": {
+ "AChoreographer_postFrameCallback": {
+ "call_method": "custom_trampoline",
+ "header": "android/choreographer.h"
+ },
+ "AChoreographer_postFrameCallbackDelayed": {
+ "call_method": "custom_trampoline",
+ "header": "android/choreographer.h"
+ },
+ "AInputQueue_attachLooper": {
+ "call_method": "custom_trampoline",
+ "header": "android/input.h"
+ },
+ "ALooper_addFd": {
+ "call_method": "custom_trampoline",
+ "header": "android/looper.h"
+ },
+ "ANativeActivity_finish": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_hideSoftInput": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_setWindowFlags": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_setWindowFormat": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_showSoftInput": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ASensorManager_createEventQueue": {
+ "call_method": "custom_trampoline",
+ "header": "android/sensor.h"
+ },
+ "AStorageManager_mountObb": {
+ "call_method": "custom_trampoline",
+ "header": "android/storage_manager.h"
+ },
+ "AStorageManager_unmountObb": {
+ "call_method": "custom_trampoline",
+ "header": "android/storage_manager.h"
+ },
+ "_ZN7android13IMountService10descriptorE": {
+ "call_method": "ignore",
+ "reason": "This variable is no part of public API"
+ },
+ "_ZN7android18IObbActionListener10descriptorE": {
+ "call_method": "ignore",
+ "reason": "This variable is no part of public API"
+ }
+ },
+ "types": {
+ "struct AInputEvent": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct APerformanceHintSession": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct ASurfaceControlStats": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct ASurfaceTransactionStats": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct _JNIEnv*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "_JNIEnv is made on x86 side is passed to x86 libandroid_runtime without changes"
+ ]
+ }
+ }
+}
diff --git a/android_api/libandroid/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libandroid/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..ceece83
--- /dev/null
+++ b/android_api/libandroid/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,74 @@
+{
+ "symbols": {
+ "AChoreographer_postFrameCallback": {
+ "call_method": "custom_trampoline",
+ "header": "android/choreographer.h"
+ },
+ "AChoreographer_postFrameCallbackDelayed": {
+ "call_method": "custom_trampoline",
+ "header": "android/choreographer.h"
+ },
+ "AInputQueue_attachLooper": {
+ "call_method": "custom_trampoline",
+ "header": "android/input.h"
+ },
+ "ALooper_addFd": {
+ "call_method": "custom_trampoline",
+ "header": "android/looper.h"
+ },
+ "ANativeActivity_finish": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_hideSoftInput": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_setWindowFlags": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_setWindowFormat": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ANativeActivity_showSoftInput": {
+ "call_method": "custom_trampoline",
+ "header": "android/native_activity.h"
+ },
+ "ASensorManager_createEventQueue": {
+ "call_method": "custom_trampoline",
+ "header": "android/sensor.h"
+ },
+ "AStorageManager_mountObb": {
+ "call_method": "custom_trampoline",
+ "header": "android/storage_manager.h"
+ },
+ "AStorageManager_unmountObb": {
+ "call_method": "custom_trampoline",
+ "header": "android/storage_manager.h"
+ },
+ "_ZN7android13IMountService10descriptorE": {
+ "call_method": "ignore",
+ "reason": "This variable is no part of public API"
+ },
+ "_ZN7android18IObbActionListener10descriptorE": {
+ "call_method": "ignore",
+ "reason": "This variable is no part of public API"
+ }
+ },
+ "types": {
+ "struct AInputEvent": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct _JNIEnv*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "_JNIEnv is made on x86 side is passed to x86 libandroid_runtime without changes"
+ ]
+ }
+ }
+}
diff --git a/android_api/libandroid_runtime/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libandroid_runtime/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..bf25a81
--- /dev/null
+++ b/android_api/libandroid_runtime/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,19 @@
+{
+ "config": {
+ "force_incompatible": true,
+ "ignore_variables": true
+ },
+ "symbols": {
+ "_ZN7android10readLocaleEv": {
+ "call_method": "ignore",
+ "reason": [
+ "This method has 'incomplete' type as one of the parameters",
+ "(see http://b/109794097) for details"
+ ]
+ },
+ "_ZN7android14AndroidRuntime21registerNativeMethodsEP7_JNIEnvPKcPK15JNINativeMethodi": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libandroid_runtime/proxy/custom_trampolines_arm_to_x86.json b/android_api/libandroid_runtime/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..bf25a81
--- /dev/null
+++ b/android_api/libandroid_runtime/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,19 @@
+{
+ "config": {
+ "force_incompatible": true,
+ "ignore_variables": true
+ },
+ "symbols": {
+ "_ZN7android10readLocaleEv": {
+ "call_method": "ignore",
+ "reason": [
+ "This method has 'incomplete' type as one of the parameters",
+ "(see http://b/109794097) for details"
+ ]
+ },
+ "_ZN7android14AndroidRuntime21registerNativeMethodsEP7_JNIEnvPKcPK15JNINativeMethodi": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libandroid_runtime/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libandroid_runtime/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..bf25a81
--- /dev/null
+++ b/android_api/libandroid_runtime/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,19 @@
+{
+ "config": {
+ "force_incompatible": true,
+ "ignore_variables": true
+ },
+ "symbols": {
+ "_ZN7android10readLocaleEv": {
+ "call_method": "ignore",
+ "reason": [
+ "This method has 'incomplete' type as one of the parameters",
+ "(see http://b/109794097) for details"
+ ]
+ },
+ "_ZN7android14AndroidRuntime21registerNativeMethodsEP7_JNIEnvPKcPK15JNINativeMethodi": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libbinder_ndk/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libbinder_ndk/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..31e86a9
--- /dev/null
+++ b/android_api/libbinder_ndk/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,35 @@
+{
+ "symbols": {},
+ "types": {
+ "struct AIBinder const*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder_Class const*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder_Class*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder_DeathRecipient*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ }
+ }
+}
diff --git a/android_api/libbinder_ndk/proxy/custom_trampolines_arm_to_x86.json b/android_api/libbinder_ndk/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..31e86a9
--- /dev/null
+++ b/android_api/libbinder_ndk/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,35 @@
+{
+ "symbols": {},
+ "types": {
+ "struct AIBinder const*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder_Class const*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder_Class*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder_DeathRecipient*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ }
+ }
+}
diff --git a/android_api/libbinder_ndk/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libbinder_ndk/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..31e86a9
--- /dev/null
+++ b/android_api/libbinder_ndk/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,35 @@
+{
+ "symbols": {},
+ "types": {
+ "struct AIBinder const*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder_Class const*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder_Class*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AIBinder_DeathRecipient*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ }
+ }
+}
diff --git a/android_api/libc/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libc/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..81ed1d6
--- /dev/null
+++ b/android_api/libc/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,591 @@
+{
+ "config": {
+ "ignore_non_custom": true
+ },
+ "symbols": {
+ "__clone_for_fork": {
+ "call_method": "custom_thunk",
+ "header": "unistd.h",
+ "is_compatible": true,
+ "signature": "i"
+ },
+ "__get_thread_stack_top": {
+ "call_method": "custom_trampoline",
+ "header": "android_unsafe_frame_pointer_chase.h"
+ },
+ "__pthread_cleanup_pop": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "reason_for_compatible": [
+ "struct __pthread_cleanup_t has pointer to ",
+ "function. TODO(levarum): Is this an issue?"
+ ],
+ "signature": "vpi"
+ },
+ "__pthread_cleanup_push": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "vppp"
+ },
+ "__system_properties_init": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "i"
+ },
+ "__system_property_add": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipupu"
+ },
+ "__system_property_area_init": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "i"
+ },
+ "__system_property_area_serial": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "u"
+ },
+ "__system_property_find": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "pp"
+ },
+ "__system_property_find_nth": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "pu"
+ },
+ "__system_property_foreach": {
+ "call_method": "custom_trampoline",
+ "header": "sys/system_properties.h",
+ "signature": "ipp"
+ },
+ "__system_property_get": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "__system_property_read": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ippp"
+ },
+ "__system_property_read_callback": {
+ "call_method": "custom_trampoline",
+ "header": "sys/system_properties.h",
+ "signature": "vppp"
+ },
+ "__system_property_serial": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "up"
+ },
+ "__system_property_set": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "__system_property_set_filename": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ip"
+ },
+ "__system_property_update": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ippu"
+ },
+ "__system_property_wait": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipupp"
+ },
+ "__system_property_wait_any": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "uu"
+ },
+ "_longjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "vpi"
+ },
+ "_setjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "ip"
+ },
+ "android_getaddrinfofornet": {
+ "call_method": "default",
+ "comment": [
+ "This function could contact daemon on certain android devices. ",
+ "Also certain android functions in libandroid return data ",
+ "structures which are supposed to be freed with freeaddrinfo"
+ ],
+ "header": "resolv_netid.h",
+ "is_compatible": true,
+ "signature": "ipppuup"
+ },
+ "android_getaddrinfofornetcontext": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "resolv_netid.h",
+ "is_compatible": true,
+ "signature": "ippppp"
+ },
+ "android_mallopt": {
+ "call_method": "default",
+ "is_compatible": true,
+ "signature": "iipz"
+ },
+ "android_set_abort_message": {
+ "call_method": "default",
+ "header": "android/set_abort_message.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "clock_gettime": {
+ "call_method": "default",
+ "comment": "clock_gettime uses call to vdso symbol to avoid doing syscall, this is why we want to proxy it to the host library",
+ "header": "sys/time.h",
+ "is_compatible": true,
+ "signature": "iip"
+ },
+ "clock_getres": {
+ "call_method": "default",
+ "comment": "See description for clock_gettime",
+ "header": "sys/time.h",
+ "is_compatible": true,
+ "signature": "iip"
+ },
+ "environ": {
+ "call_method": "do_not_call",
+ "header": "unitstd.h",
+ "is_compatible": true
+ },
+ "freeaddrinfo": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "gai_strerror": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "pi"
+ },
+ "getaddrinfo": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "ipppp"
+ },
+ "gethostbyaddr": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "ppii"
+ },
+ "gethostbyname": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "pp"
+ },
+ "getnameinfo": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "ipipipii"
+ },
+ "gettimeofday": {
+ "call_method": "default",
+ "comment": "See description for clock_gettime",
+ "header": "sys/time.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "longjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "vpi"
+ },
+ "memset": {
+ "call_method": "default",
+ "comment": "performance optimization",
+ "is_compatible": true,
+ "signature": "ppii"
+ },
+ "memcpy": {
+ "call_method": "default",
+ "comment": "performance optimization",
+ "is_compatible": true,
+ "signature": "pppi"
+ },
+ "memcmp": {
+ "call_method": "default",
+ "comment": "performance optimization",
+ "is_compatible": true,
+ "signature": "ippi"
+ },
+ "native_bridge___cxa_thread_atexit_impl": {
+ "call_method": "custom_trampoline",
+ "header": "c++ abi"
+ },
+ "native_bridge_aligned_alloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "aligned_alloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pzz"
+ },
+ "native_bridge_calloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "calloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pzz"
+ },
+ "native_bridge_exit": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "exit",
+ "header": "stdlib.h",
+ "signature": "vi"
+ },
+ "native_bridge_free": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "free",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "native_bridge_mallinfo": {
+ "call_method": "custom_trampoline",
+ "header": "malloc.h"
+ },
+ "native_bridge_malloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pz"
+ },
+ "native_bridge_malloc_disable": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc_disable",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "v"
+ },
+ "native_bridge_malloc_enable": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc_enable",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "v"
+ },
+ "native_bridge_malloc_info_helper": {
+ "call_method": "custom_trampoline"
+ },
+ "native_bridge_malloc_iterate": {
+ "call_method": "custom_trampoline",
+ "is_compatible": true,
+ "signature": "izzpp"
+ },
+ "native_bridge_malloc_usable_size": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc_usable_size",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "zp"
+ },
+ "native_bridge_mallopt": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "mallopt",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "iii"
+ },
+ "native_bridge_memalign": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "memalign",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pzz"
+ },
+ "native_bridge_posix_memalign": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "posix_memalign",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "ipzz"
+ },
+ "native_bridge_realloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "realloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "ppz"
+ },
+ "pthread_attr_destroy": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ip"
+ },
+ "pthread_attr_getdetachstate": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getguardsize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getinheritsched": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getschedpolicy": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getscope": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getstack": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ippp"
+ },
+ "pthread_attr_getstacksize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_init": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ip"
+ },
+ "pthread_attr_setdetachstate": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setguardsize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipz"
+ },
+ "pthread_attr_setinheritsched": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_setschedpolicy": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setscope": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setstack": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ippz"
+ },
+ "pthread_attr_setstacksize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipz"
+ },
+ "pthread_create": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "ipppp"
+ },
+ "pthread_detach": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "il"
+ },
+ "pthread_exit": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "pthread_getattr_np": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "ilp"
+ },
+ "pthread_getcpuclockid": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilp"
+ },
+ "pthread_getname_np": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilpl"
+ },
+ "pthread_getschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilpp"
+ },
+ "pthread_getspecific": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "pi"
+ },
+ "pthread_gettid_np": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "il"
+ },
+ "pthread_join": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilp"
+ },
+ "pthread_key_create": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "ipp"
+ },
+ "pthread_key_delete": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ii"
+ },
+ "pthread_kill": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ili"
+ },
+ "pthread_setname_np": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilp"
+ },
+ "pthread_setschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilip"
+ },
+ "pthread_setschedprio": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ili"
+ },
+ "pthread_setspecific": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "iip"
+ },
+ "pthread_sigqueue": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilip"
+ },
+ "setjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "ip"
+ },
+ "siglongjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "vpi"
+ },
+ "sigsetjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "ipi"
+ },
+ "time": {
+ "call_method": "default",
+ "comment": "See description for clock_gettime",
+ "header": "sys/time.h",
+ "is_compatible": true,
+ "signature": "lp"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libc/proxy/custom_trampolines_arm_to_x86.json b/android_api/libc/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..6d3d1bd
--- /dev/null
+++ b/android_api/libc/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,577 @@
+{
+ "config": {
+ "ignore_non_custom": true
+ },
+ "symbols": {
+ "__clone_for_fork": {
+ "call_method": "custom_thunk",
+ "header": "unistd.h",
+ "is_compatible": true,
+ "signature": "i"
+ },
+ "__get_thread_stack_top": {
+ "call_method": "custom_trampoline",
+ "header": "android_unsafe_frame_pointer_chase.h"
+ },
+ "__pthread_cleanup_pop": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "reason_for_compatible": [
+ "struct __pthread_cleanup_t has pointer to ",
+ "function. TODO(levarum): Is this an issue?"
+ ],
+ "signature": "vpi"
+ },
+ "__pthread_cleanup_push": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "vppp"
+ },
+ "__system_properties_init": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "i"
+ },
+ "__system_property_add": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipupu"
+ },
+ "__system_property_area_init": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "i"
+ },
+ "__system_property_area_serial": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "u"
+ },
+ "__system_property_find": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "pp"
+ },
+ "__system_property_find_nth": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "pu"
+ },
+ "__system_property_foreach": {
+ "call_method": "custom_trampoline",
+ "header": "sys/system_properties.h",
+ "signature": "ipp"
+ },
+ "__system_property_get": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "__system_property_read": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ippp"
+ },
+ "__system_property_read_callback": {
+ "call_method": "custom_trampoline",
+ "header": "sys/system_properties.h",
+ "signature": "vppp"
+ },
+ "__system_property_serial": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "up"
+ },
+ "__system_property_set": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "__system_property_set_filename": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ip"
+ },
+ "__system_property_update": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ippu"
+ },
+ "__system_property_wait": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipupp"
+ },
+ "__system_property_wait_any": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "uu"
+ },
+ "_longjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "vpi"
+ },
+ "_setjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "ip"
+ },
+ "android_getaddrinfofornet": {
+ "call_method": "default",
+ "comment": [
+ "This function could contact daemon on certain android devices. ",
+ "Also certain android functions in libandroid return data ",
+ "structures which are supposed to be freed with freeaddrinfo"
+ ],
+ "header": "resolv_netid.h",
+ "is_compatible": true,
+ "signature": "ipppuup"
+ },
+ "android_getaddrinfofornetcontext": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "resolv_netid.h",
+ "is_compatible": true,
+ "signature": "ippppp"
+ },
+ "android_mallopt": {
+ "call_method": "default",
+ "is_compatible": true,
+ "signature": "iipz"
+ },
+ "android_set_abort_message": {
+ "call_method": "default",
+ "header": "android/set_abort_message.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "environ": {
+ "call_method": "do_not_call",
+ "header": "unitstd.h",
+ "is_compatible": true
+ },
+ "freeaddrinfo": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "gai_strerror": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "pi"
+ },
+ "getaddrinfo": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "ipppp"
+ },
+ "gethostbyaddr": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "ppii"
+ },
+ "gethostbyname": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "pp"
+ },
+ "getnameinfo": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "ipipipii"
+ },
+ "longjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "vpi"
+ },
+ "memset": {
+ "call_method": "default",
+ "comment": "performance optimization",
+ "is_compatible": true,
+ "signature": "ppii"
+ },
+ "memcpy": {
+ "call_method": "default",
+ "comment": "performance optimization",
+ "is_compatible": true,
+ "signature": "pppi"
+ },
+ "memcmp": {
+ "call_method": "default",
+ "comment": "performance optimization",
+ "is_compatible": true,
+ "signature": "ippi"
+ },
+ "native_bridge___cxa_thread_atexit_impl": {
+ "call_method": "custom_trampoline",
+ "header": "c++ abi"
+ },
+ "native_bridge_aligned_alloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "aligned_alloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pzz"
+ },
+ "native_bridge_calloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "calloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pzz"
+ },
+ "native_bridge_exit": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "exit",
+ "header": "stdlib.h",
+ "signature": "vi"
+ },
+ "native_bridge_free": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "free",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "native_bridge_mallinfo": {
+ "call_method": "custom_trampoline",
+ "header": "malloc.h"
+ },
+ "native_bridge_malloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pz"
+ },
+ "native_bridge_malloc_disable": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc_disable",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "v"
+ },
+ "native_bridge_malloc_enable": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc_enable",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "v"
+ },
+ "native_bridge_malloc_info_helper": {
+ "call_method": "custom_trampoline"
+ },
+ "native_bridge_malloc_iterate": {
+ "call_method": "custom_trampoline",
+ "is_compatible": true,
+ "signature": "izzpp"
+ },
+ "native_bridge_malloc_usable_size": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc_usable_size",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "zp"
+ },
+ "native_bridge_mallopt": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "mallopt",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "iii"
+ },
+ "native_bridge_memalign": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "memalign",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pzz"
+ },
+ "native_bridge_posix_memalign": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "posix_memalign",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "ipzz"
+ },
+ "native_bridge_pvalloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "pvalloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pz"
+ },
+ "native_bridge_realloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "realloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "ppz"
+ },
+ "native_bridge_valloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "valloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pz"
+ },
+ "pthread_attr_destroy": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ip"
+ },
+ "pthread_attr_getdetachstate": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getguardsize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getinheritsched": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getschedpolicy": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getscope": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getstack": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ippp"
+ },
+ "pthread_attr_getstacksize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_init": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ip"
+ },
+ "pthread_attr_setdetachstate": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setguardsize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipz"
+ },
+ "pthread_attr_setinheritsched": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_setschedpolicy": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setscope": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setstack": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ippz"
+ },
+ "pthread_attr_setstacksize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipz"
+ },
+ "pthread_create": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "ipppp"
+ },
+ "pthread_detach": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "il"
+ },
+ "pthread_exit": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "pthread_getattr_np": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "ilp"
+ },
+ "pthread_getcpuclockid": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilp"
+ },
+ "pthread_getname_np": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilpl"
+ },
+ "pthread_getschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilpp"
+ },
+ "pthread_getspecific": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "pi"
+ },
+ "pthread_gettid_np": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "il"
+ },
+ "pthread_join": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilp"
+ },
+ "pthread_key_create": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "ipp"
+ },
+ "pthread_key_delete": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ii"
+ },
+ "pthread_kill": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ili"
+ },
+ "pthread_setname_np": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilp"
+ },
+ "pthread_setschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilip"
+ },
+ "pthread_setschedprio": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ili"
+ },
+ "pthread_setspecific": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "iip"
+ },
+ "pthread_sigqueue": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilip"
+ },
+ "setjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "ip"
+ },
+ "siglongjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "vpi"
+ },
+ "sigsetjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "ipi"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libc/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libc/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..e57d8a7
--- /dev/null
+++ b/android_api/libc/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,573 @@
+{
+ "config": {
+ "ignore_non_custom": true
+ },
+ "symbols": {
+ "__clone_for_fork": {
+ "call_method": "custom_thunk",
+ "header": "unistd.h",
+ "is_compatible": true,
+ "signature": "i"
+ },
+ "__get_thread_stack_top": {
+ "call_method": "custom_trampoline",
+ "header": "android_unsafe_frame_pointer_chase.h"
+ },
+ "__pthread_cleanup_pop": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "reason_for_compatible": [
+ "struct __pthread_cleanup_t has pointer to ",
+ "function. TODO(levarum): Is this an issue?"
+ ],
+ "signature": "vpi"
+ },
+ "__pthread_cleanup_push": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "vppp"
+ },
+ "__system_properties_init": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "i"
+ },
+ "__system_property_add": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipupu"
+ },
+ "__system_property_area_init": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "i"
+ },
+ "__system_property_area_serial": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "u"
+ },
+ "__system_property_find": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "pp"
+ },
+ "__system_property_find_nth": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "pu"
+ },
+ "__system_property_foreach": {
+ "call_method": "custom_trampoline",
+ "header": "sys/system_properties.h",
+ "signature": "ipp"
+ },
+ "__system_property_get": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "__system_property_read": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ippp"
+ },
+ "__system_property_read_callback": {
+ "call_method": "custom_trampoline",
+ "header": "sys/system_properties.h",
+ "signature": "vppp"
+ },
+ "__system_property_serial": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "up"
+ },
+ "__system_property_set": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "__system_property_set_filename": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ip"
+ },
+ "__system_property_update": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ippu"
+ },
+ "__system_property_wait": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "ipupp"
+ },
+ "__system_property_wait_any": {
+ "call_method": "default",
+ "header": "sys/system_properties.h",
+ "is_compatible": true,
+ "signature": "uu"
+ },
+ "_longjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "vpi"
+ },
+ "_setjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "ip"
+ },
+ "android_getaddrinfofornet": {
+ "call_method": "default",
+ "comment": [
+ "This function could contact daemon on certain android devices. ",
+ "Also certain android functions in libandroid return data ",
+ "structures which are supposed to be freed with freeaddrinfo"
+ ],
+ "header": "resolv_netid.h",
+ "is_compatible": true,
+ "signature": "ipppuup"
+ },
+ "android_getaddrinfofornetcontext": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "resolv_netid.h",
+ "is_compatible": true,
+ "signature": "ippppp"
+ },
+ "android_mallopt": {
+ "call_method": "default",
+ "is_compatible": true,
+ "signature": "iipz"
+ },
+ "android_set_abort_message": {
+ "call_method": "default",
+ "header": "android/set_abort_message.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "clock_gettime": {
+ "call_method": "default",
+ "comment": "clock_gettime uses call to vdso symbol to avoid doing syscall, this is why we want to proxy it to the host library",
+ "header": "sys/time.h",
+ "is_compatible": true,
+ "signature": "iip"
+ },
+ "clock_getres": {
+ "call_method": "default",
+ "comment": "See description for clock_gettime",
+ "header": "sys/time.h",
+ "is_compatible": true,
+ "signature": "iip"
+ },
+ "environ": {
+ "call_method": "do_not_call",
+ "header": "unitstd.h",
+ "is_compatible": true
+ },
+ "freeaddrinfo": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "gai_strerror": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "pi"
+ },
+ "getaddrinfo": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "ipppp"
+ },
+ "gethostbyaddr": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "ppii"
+ },
+ "gethostbyname": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "pp"
+ },
+ "getnameinfo": {
+ "call_method": "default",
+ "comment": "See description for android_getaddrinfofornet",
+ "header": "netdb.h",
+ "is_compatible": true,
+ "signature": "ipipipii"
+ },
+ "gettimeofday": {
+ "call_method": "default",
+ "comment": "See description for clock_gettime",
+ "header": "sys/time.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "longjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "vpi"
+ },
+ "native_bridge___cxa_thread_atexit_impl": {
+ "call_method": "custom_trampoline",
+ "header": "c++ abi"
+ },
+ "native_bridge_aligned_alloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "aligned_alloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pzz"
+ },
+ "native_bridge_calloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "calloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pzz"
+ },
+ "native_bridge_exit": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "exit",
+ "header": "stdlib.h",
+ "signature": "vi"
+ },
+ "native_bridge_free": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "free",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "native_bridge_mallinfo": {
+ "call_method": "custom_trampoline",
+ "header": "malloc.h"
+ },
+ "native_bridge_malloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pz"
+ },
+ "native_bridge_malloc_disable": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc_disable",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "v"
+ },
+ "native_bridge_malloc_enable": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc_enable",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "v"
+ },
+ "native_bridge_malloc_info_helper": {
+ "call_method": "custom_trampoline"
+ },
+ "native_bridge_malloc_iterate": {
+ "call_method": "custom_trampoline",
+ "is_compatible": true,
+ "signature": "izzpp"
+ },
+ "native_bridge_malloc_usable_size": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "malloc_usable_size",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "zp"
+ },
+ "native_bridge_mallopt": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "mallopt",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "iii"
+ },
+ "native_bridge_memalign": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "memalign",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "pzz"
+ },
+ "native_bridge_posix_memalign": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "posix_memalign",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "ipzz"
+ },
+ "native_bridge_realloc": {
+ "call_method": "custom_thunk",
+ "custom_thunk": "realloc",
+ "header": "malloc.h",
+ "is_compatible": true,
+ "signature": "ppz"
+ },
+ "pthread_attr_destroy": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ip"
+ },
+ "pthread_attr_getdetachstate": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getguardsize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getinheritsched": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getschedpolicy": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getscope": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_getstack": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ippp"
+ },
+ "pthread_attr_getstacksize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_init": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ip"
+ },
+ "pthread_attr_setdetachstate": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setguardsize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipz"
+ },
+ "pthread_attr_setinheritsched": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipp"
+ },
+ "pthread_attr_setschedpolicy": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setscope": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipi"
+ },
+ "pthread_attr_setstack": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ippz"
+ },
+ "pthread_attr_setstacksize": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ipz"
+ },
+ "pthread_create": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "ipppp"
+ },
+ "pthread_detach": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "il"
+ },
+ "pthread_exit": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "vp"
+ },
+ "pthread_getattr_np": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "ilp"
+ },
+ "pthread_getcpuclockid": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilp"
+ },
+ "pthread_getname_np": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilpl"
+ },
+ "pthread_getschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilpp"
+ },
+ "pthread_getspecific": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "pi"
+ },
+ "pthread_gettid_np": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "il"
+ },
+ "pthread_join": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilp"
+ },
+ "pthread_key_create": {
+ "call_method": "custom_trampoline",
+ "header": "pthread.h",
+ "signature": "ipp"
+ },
+ "pthread_key_delete": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ii"
+ },
+ "pthread_kill": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ili"
+ },
+ "pthread_setname_np": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilp"
+ },
+ "pthread_setschedparam": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilip"
+ },
+ "pthread_setschedprio": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ili"
+ },
+ "pthread_setspecific": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "iip"
+ },
+ "pthread_sigqueue": {
+ "call_method": "default",
+ "header": "pthread.h",
+ "is_compatible": true,
+ "signature": "ilip"
+ },
+ "setjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "ip"
+ },
+ "siglongjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "vpi"
+ },
+ "sigsetjmp": {
+ "call_method": "custom_thunk",
+ "header": "setjump.h",
+ "signature": "ipi"
+ },
+ "time": {
+ "call_method": "default",
+ "comment": "See description for clock_gettime",
+ "header": "sys/time.h",
+ "is_compatible": true,
+ "signature": "lp"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libcamera2ndk/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libcamera2ndk/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..2889416
--- /dev/null
+++ b/android_api/libcamera2ndk/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,69 @@
+{
+ "symbols": {
+ "ACameraCaptureSession_capture": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_captureV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_capture": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_captureV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_setRepeatingRequest": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_setRepeatingRequestV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_setRepeatingRequest": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_setRepeatingRequestV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraDevice_createCaptureSession": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraDevice_createCaptureSessionWithSessionParameters": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_openCamera": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_registerAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_registerExtendedAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_unregisterAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_unregisterExtendedAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ }
+ },
+ "types": {
+ "struct ACameraCaptureSession": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct ACameraDevice": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct _JNIEnv*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "JNIEnv vtable is wrapped on startup"
+ ]
+ }
+ }
+}
diff --git a/android_api/libcamera2ndk/proxy/custom_trampolines_arm_to_x86.json b/android_api/libcamera2ndk/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..2889416
--- /dev/null
+++ b/android_api/libcamera2ndk/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,69 @@
+{
+ "symbols": {
+ "ACameraCaptureSession_capture": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_captureV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_capture": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_captureV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_setRepeatingRequest": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_setRepeatingRequestV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_setRepeatingRequest": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_setRepeatingRequestV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraDevice_createCaptureSession": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraDevice_createCaptureSessionWithSessionParameters": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_openCamera": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_registerAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_registerExtendedAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_unregisterAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_unregisterExtendedAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ }
+ },
+ "types": {
+ "struct ACameraCaptureSession": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct ACameraDevice": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct _JNIEnv*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "JNIEnv vtable is wrapped on startup"
+ ]
+ }
+ }
+}
diff --git a/android_api/libcamera2ndk/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libcamera2ndk/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..2889416
--- /dev/null
+++ b/android_api/libcamera2ndk/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,69 @@
+{
+ "symbols": {
+ "ACameraCaptureSession_capture": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_captureV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_capture": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_captureV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_setRepeatingRequest": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_logicalCamera_setRepeatingRequestV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_setRepeatingRequest": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraCaptureSession_setRepeatingRequestV2": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraDevice_createCaptureSession": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraDevice_createCaptureSessionWithSessionParameters": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_openCamera": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_registerAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_registerExtendedAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_unregisterAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ },
+ "ACameraManager_unregisterExtendedAvailabilityCallback": {
+ "call_method": "custom_thunk"
+ }
+ },
+ "types": {
+ "struct ACameraCaptureSession": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct ACameraDevice": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct _JNIEnv*": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "JNIEnv vtable is wrapped on startup"
+ ]
+ }
+ }
+}
diff --git a/android_api/libjnigraphics/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libjnigraphics/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..af2fb45
--- /dev/null
+++ b/android_api/libjnigraphics/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,11 @@
+{
+ "symbols": {
+ "AImageDecoder_setCrop": {
+ "call_method": "custom_trampoline"
+ },
+ "AImageDecoderFrameInfo_getFrameRect": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libjnigraphics/proxy/custom_trampolines_arm_to_x86.json b/android_api/libjnigraphics/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..af2fb45
--- /dev/null
+++ b/android_api/libjnigraphics/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,11 @@
+{
+ "symbols": {
+ "AImageDecoder_setCrop": {
+ "call_method": "custom_trampoline"
+ },
+ "AImageDecoderFrameInfo_getFrameRect": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libjnigraphics/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libjnigraphics/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..af2fb45
--- /dev/null
+++ b/android_api/libjnigraphics/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,11 @@
+{
+ "symbols": {
+ "AImageDecoder_setCrop": {
+ "call_method": "custom_trampoline"
+ },
+ "AImageDecoderFrameInfo_getFrameRect": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libmediandk/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libmediandk/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..1978150
--- /dev/null
+++ b/android_api/libmediandk/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,72 @@
+{
+ "symbols": {
+ "AImageReader_setBufferRemovedListener": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkImageReader.h"
+ },
+ "AImageReader_setImageListener": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkImageReader.h"
+ },
+ "AMediaCodec_dequeueOutputBuffer": {
+ "call_method": "default",
+ "is_custom_compatible": true,
+ "reason_for_compatible": [
+ "struct AMediaCodecBufferInfo differs in align ",
+ "and size between ARM and x86_32. ",
+ "TODO(levarum): Require custom thunk"
+ ]
+ },
+ "AMediaCodec_setAsyncNotifyCallback": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaCodec.h"
+ },
+ "AMediaDataSource_setClose": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaDataSource.h"
+ },
+ "AMediaDataSource_setGetSize": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaDataSource.h"
+ },
+ "AMediaDataSource_setReadAt": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaDataSource.h"
+ },
+ "AMediaMuxer_writeSampleData": {
+ "call_method": "default",
+ "is_custom_compatible": true,
+ "reason_for_compatible": [
+ "struct AMediaCodecBufferInfo differs in align ",
+ "and size between ARM and x86_32. ",
+ "TODO(levarum): Require custom thunk"
+ ]
+ }
+ },
+ "types": {
+ "struct AImageReader": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMediaCodec": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMediaDataSource": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMediaDrm": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ }
+ }
+}
diff --git a/android_api/libmediandk/proxy/custom_trampolines_arm_to_x86.json b/android_api/libmediandk/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..1978150
--- /dev/null
+++ b/android_api/libmediandk/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,72 @@
+{
+ "symbols": {
+ "AImageReader_setBufferRemovedListener": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkImageReader.h"
+ },
+ "AImageReader_setImageListener": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkImageReader.h"
+ },
+ "AMediaCodec_dequeueOutputBuffer": {
+ "call_method": "default",
+ "is_custom_compatible": true,
+ "reason_for_compatible": [
+ "struct AMediaCodecBufferInfo differs in align ",
+ "and size between ARM and x86_32. ",
+ "TODO(levarum): Require custom thunk"
+ ]
+ },
+ "AMediaCodec_setAsyncNotifyCallback": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaCodec.h"
+ },
+ "AMediaDataSource_setClose": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaDataSource.h"
+ },
+ "AMediaDataSource_setGetSize": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaDataSource.h"
+ },
+ "AMediaDataSource_setReadAt": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaDataSource.h"
+ },
+ "AMediaMuxer_writeSampleData": {
+ "call_method": "default",
+ "is_custom_compatible": true,
+ "reason_for_compatible": [
+ "struct AMediaCodecBufferInfo differs in align ",
+ "and size between ARM and x86_32. ",
+ "TODO(levarum): Require custom thunk"
+ ]
+ }
+ },
+ "types": {
+ "struct AImageReader": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMediaCodec": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMediaDataSource": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMediaDrm": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ }
+ }
+}
diff --git a/android_api/libmediandk/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libmediandk/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..7005637
--- /dev/null
+++ b/android_api/libmediandk/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,54 @@
+{
+ "symbols": {
+ "AImageReader_setBufferRemovedListener": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkImageReader.h"
+ },
+ "AImageReader_setImageListener": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkImageReader.h"
+ },
+ "AMediaCodec_setAsyncNotifyCallback": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaCodec.h"
+ },
+ "AMediaDataSource_setClose": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaDataSource.h"
+ },
+ "AMediaDataSource_setGetSize": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaDataSource.h"
+ },
+ "AMediaDataSource_setReadAt": {
+ "call_method": "custom_trampoline",
+ "header": "media/NdkMediaDataSource.h"
+ }
+ },
+ "types": {
+ "struct AImageReader": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMediaCodec": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMediaDataSource": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ },
+ "struct AMediaDrm": {
+ "force_compatible": true,
+ "reason_for_compatible": [
+ "It's opaque structure in public API"
+ ]
+ }
+ }
+}
diff --git a/android_api/libnativehelper/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libnativehelper/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..9292d47
--- /dev/null
+++ b/android_api/libnativehelper/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,23 @@
+{
+ "config": {
+ "ignore_variables": true
+ },
+ "symbols": {
+ "AFileDescriptor_create": {
+ "call_method": "custom_trampoline"
+ },
+ "AFileDescriptor_getFd": {
+ "call_method": "custom_trampoline"
+ },
+ "AFileDescriptor_setFd": {
+ "call_method": "custom_trampoline"
+ },
+ "JNI_CreateJavaVM": {
+ "call_method": "custom_trampoline"
+ },
+ "JNI_GetCreatedJavaVMs": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libnativehelper/proxy/custom_trampolines_arm_to_x86.json b/android_api/libnativehelper/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..9292d47
--- /dev/null
+++ b/android_api/libnativehelper/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,23 @@
+{
+ "config": {
+ "ignore_variables": true
+ },
+ "symbols": {
+ "AFileDescriptor_create": {
+ "call_method": "custom_trampoline"
+ },
+ "AFileDescriptor_getFd": {
+ "call_method": "custom_trampoline"
+ },
+ "AFileDescriptor_setFd": {
+ "call_method": "custom_trampoline"
+ },
+ "JNI_CreateJavaVM": {
+ "call_method": "custom_trampoline"
+ },
+ "JNI_GetCreatedJavaVMs": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libnativehelper/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libnativehelper/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..9292d47
--- /dev/null
+++ b/android_api/libnativehelper/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,23 @@
+{
+ "config": {
+ "ignore_variables": true
+ },
+ "symbols": {
+ "AFileDescriptor_create": {
+ "call_method": "custom_trampoline"
+ },
+ "AFileDescriptor_getFd": {
+ "call_method": "custom_trampoline"
+ },
+ "AFileDescriptor_setFd": {
+ "call_method": "custom_trampoline"
+ },
+ "JNI_CreateJavaVM": {
+ "call_method": "custom_trampoline"
+ },
+ "JNI_GetCreatedJavaVMs": {
+ "call_method": "custom_trampoline"
+ }
+ },
+ "types": {}
+}
diff --git a/android_api/libnativewindow/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libnativewindow/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..8c7affc
--- /dev/null
+++ b/android_api/libnativewindow/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,4 @@
+{
+ "symbols": {},
+ "types": {}
+}
diff --git a/android_api/libnativewindow/proxy/custom_trampolines_arm_to_x86.json b/android_api/libnativewindow/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..8c7affc
--- /dev/null
+++ b/android_api/libnativewindow/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,4 @@
+{
+ "symbols": {},
+ "types": {}
+}
diff --git a/android_api/libnativewindow/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libnativewindow/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..8c7affc
--- /dev/null
+++ b/android_api/libnativewindow/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,4 @@
+{
+ "symbols": {},
+ "types": {}
+}
diff --git a/android_api/libneuralnetworks/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libneuralnetworks/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..2033075
--- /dev/null
+++ b/android_api/libneuralnetworks/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,4 @@
+{
+ "symbols": {},
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libneuralnetworks/proxy/custom_trampolines_arm_to_x86.json b/android_api/libneuralnetworks/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..2033075
--- /dev/null
+++ b/android_api/libneuralnetworks/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,4 @@
+{
+ "symbols": {},
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libneuralnetworks/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libneuralnetworks/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..2033075
--- /dev/null
+++ b/android_api/libneuralnetworks/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,4 @@
+{
+ "symbols": {},
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_arm64_to_x86_64.json b/android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_arm64_to_x86_64.json
new file mode 100644
index 0000000..5c65780
--- /dev/null
+++ b/android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_arm64_to_x86_64.json
@@ -0,0 +1,11 @@
+{
+ "config": {
+ "force_incompatible": true,
+ "reason": [
+ "This library is used solely by webview.apk. Which means the guest ",
+ "copy of the library should never be called"
+ ]
+ },
+ "symbols": {},
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_arm_to_x86.json b/android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_arm_to_x86.json
new file mode 100644
index 0000000..5c65780
--- /dev/null
+++ b/android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_arm_to_x86.json
@@ -0,0 +1,11 @@
+{
+ "config": {
+ "force_incompatible": true,
+ "reason": [
+ "This library is used solely by webview.apk. Which means the guest ",
+ "copy of the library should never be called"
+ ]
+ },
+ "symbols": {},
+ "types": {}
+} \ No newline at end of file
diff --git a/android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_riscv64_to_x86_64.json b/android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_riscv64_to_x86_64.json
new file mode 100644
index 0000000..5c65780
--- /dev/null
+++ b/android_api/libwebviewchromium_plat_support/proxy/custom_trampolines_riscv64_to_x86_64.json
@@ -0,0 +1,11 @@
+{
+ "config": {
+ "force_incompatible": true,
+ "reason": [
+ "This library is used solely by webview.apk. Which means the guest ",
+ "copy of the library should never be called"
+ ]
+ },
+ "symbols": {},
+ "types": {}
+} \ No newline at end of file