diff options
author | Sijie Chen <sijiec@google.com> | 2023-12-07 18:09:25 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-12-07 18:09:25 +0000 |
commit | 07c3a5ea320a4ef874ea346197f08ddeae311502 (patch) | |
tree | 2efea52eeb47a9e4874ff454cfd7533b2b765dcb | |
parent | 0f07004dbb4e450bc190b2fca8729dfea80f7f8c (diff) | |
parent | e9b287f87530be82fe4d62b6145b6456b21ccb4b (diff) | |
download | native_bridge_support-07c3a5ea320a4ef874ea346197f08ddeae311502.tar.gz |
Merge "[Berberis] Add libbinder_ndk library" into main am: e9b287f875
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/native_bridge_support/+/2844253
Change-Id: I1bf8a1c52b6c5f626f2b96e185a27cdd3242f5a2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | libbinder_ndk/Android.bp | 7 | ||||
-rw-r--r-- | libbinder_ndk/proxy/libbinder_ndk_trampolines.cc | 50 | ||||
-rw-r--r-- | libbinder_ndk/proxy/trampolines_arm64_to_x86_64-inl.h | 151 | ||||
-rw-r--r-- | libbinder_ndk/proxy/trampolines_arm_to_x86-inl.h | 151 | ||||
-rw-r--r-- | libbinder_ndk/proxy/trampolines_riscv64_to_x86_64-inl.h | 151 |
5 files changed, 510 insertions, 0 deletions
diff --git a/libbinder_ndk/Android.bp b/libbinder_ndk/Android.bp index 9fc977d..87b44b7 100644 --- a/libbinder_ndk/Android.bp +++ b/libbinder_ndk/Android.bp @@ -39,3 +39,10 @@ cc_library { "libutils", ], } + +filegroup { + name: "native_bridge_proxy_libbinder_ndk_files", + srcs: [ + "proxy/libbinder_ndk_trampolines.cc", + ], +} diff --git a/libbinder_ndk/proxy/libbinder_ndk_trampolines.cc b/libbinder_ndk/proxy/libbinder_ndk_trampolines.cc new file mode 100644 index 0000000..0eb0eb9 --- /dev/null +++ b/libbinder_ndk/proxy/libbinder_ndk_trampolines.cc @@ -0,0 +1,50 @@ +/* +* Copyright (C) 2023 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include <dlfcn.h> + +#include <android/binder_ibinder.h> + +#include "berberis/guest_abi/function_wrappers.h" +#include "berberis/proxy_loader/proxy_library_builder.h" + +namespace berberis { + +namespace { + +#if defined(NATIVE_BRIDGE_GUEST_ARCH_ARM) && defined(__i386__) + +#include "trampolines_arm_to_x86-inl.h" // generated file NOLINT [build/include] + +#elif defined(NATIVE_BRIDGE_GUEST_ARCH_ARM64) && defined(__x86_64__) + +#include "trampolines_arm64_to_x86_64-inl.h" // generated file NOLINT [build/include] + +#elif defined(NATIVE_BRIDGE_GUEST_ARCH_RISCV64) && defined(__x86_64__) + +#include "trampolines_riscv64_to_x86_64-inl.h" // generated file NOLINT [build/include] + +#else + +#error "Unknown guest/host arch combination" + +#endif + +DEFINE_INIT_PROXY_LIBRARY("libbinder_ndk.so") + +} // namespace + +} // namespace berberis diff --git a/libbinder_ndk/proxy/trampolines_arm64_to_x86_64-inl.h b/libbinder_ndk/proxy/trampolines_arm64_to_x86_64-inl.h new file mode 100644 index 0000000..6e728ca --- /dev/null +++ b/libbinder_ndk/proxy/trampolines_arm64_to_x86_64-inl.h @@ -0,0 +1,151 @@ +// clang-format off +const KnownTrampoline kKnownTrampolines[] = { +{"ABinderProcess_handlePolledCommands", GetTrampolineFunc<auto(void) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_isThreadPoolStarted", GetTrampolineFunc<auto(void) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_joinThreadPool", GetTrampolineFunc<auto(void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_setThreadPoolMaxThreadCount", GetTrampolineFunc<auto(uint32_t) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_setupPolling", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_startThreadPool", GetTrampolineFunc<auto(void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_define", GetTrampolineFunc<auto(void*, auto(*)(void*) -> void*, auto(*)(void*) -> void, auto(*)(void*, uint32_t, void*, void*) -> int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_disableInterfaceTokenHeader", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_getDescriptor", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_setHandleShellCommand", GetTrampolineFunc<auto(void*, auto(*)(void*, int32_t, int32_t, int32_t, void*, uint32_t) -> int32_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_setOnDump", GetTrampolineFunc<auto(void*, auto(*)(void*, int32_t, void*, uint32_t) -> int32_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_DeathRecipient_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_DeathRecipient_new", GetTrampolineFunc<auto(auto(*)(void*) -> void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_DeathRecipient_setOnUnlinked", GetTrampolineFunc<auto(void*, auto(*)(void*) -> void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_clone", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_lt", GetTrampolineFunc<auto(void*, void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_new", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_promote", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_associateClass", GetTrampolineFunc<auto(void*, void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_debugGetRefCount", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_decStrong", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_dump", GetTrampolineFunc<auto(void*, int32_t, void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_forceDowngradeToSystemStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_forceDowngradeToVendorStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_fromJavaBinder", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getCallingPid", GetTrampolineFunc<auto(void) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getCallingSid", GetTrampolineFunc<auto(void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getCallingUid", GetTrampolineFunc<auto(void) -> uint32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getClass", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getExtension", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getUserData", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_incStrong", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_isAlive", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_isHandlingTransaction", GetTrampolineFunc<auto(void) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_isRemote", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_linkToDeath", GetTrampolineFunc<auto(void*, void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_lt", GetTrampolineFunc<auto(void*, void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_markSystemStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_markVendorStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_markVintfStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_new", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_ping", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_prepareTransaction", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setExtension", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setInheritRt", GetTrampolineFunc<auto(void*, uint8_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setMinSchedulerPolicy", GetTrampolineFunc<auto(void*, int32_t, int32_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setRequestingSid", GetTrampolineFunc<auto(void*, uint8_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_toJavaBinder", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_transact", GetTrampolineFunc<auto(void*, uint32_t, void*, void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_unlinkToDeath", GetTrampolineFunc<auto(void*, void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_appendFrom", GetTrampolineFunc<auto(void*, void*, int32_t, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_create", GetTrampolineFunc<auto(void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_fromJavaParcel", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_getAllowFds", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_getDataPosition", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_getDataSize", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_markSensitive", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_marshal", GetTrampolineFunc<auto(void*, void*, uint64_t, uint64_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readBool", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readBoolArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t) -> uint8_t, auto(*)(void*, uint64_t, uint8_t) -> void) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readByte", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readByteArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readChar", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readCharArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readDouble", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readDoubleArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readFloat", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readFloatArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt32", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt32Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt64", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt64Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readParcelFileDescriptor", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readParcelableArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t) -> uint8_t, auto(*)(void*, void*, uint64_t) -> int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readStatusHeader", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readString", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readStringArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t) -> uint8_t, auto(*)(void*, uint64_t, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readStrongBinder", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint32", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint32Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint64", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint64Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_reset", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_setDataPosition", GetTrampolineFunc<auto(void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_unmarshal", GetTrampolineFunc<auto(void*, void*, uint64_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeBool", GetTrampolineFunc<auto(void*, uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeBoolArray", GetTrampolineFunc<auto(void*, void*, int32_t, auto(*)(void*, uint64_t) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeByte", GetTrampolineFunc<auto(void*, int8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeByteArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeChar", GetTrampolineFunc<auto(void*, uint16_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeCharArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeDouble", GetTrampolineFunc<auto(void*, double) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeDoubleArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeFloat", GetTrampolineFunc<auto(void*, float) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeFloatArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt32", GetTrampolineFunc<auto(void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt32Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt64", GetTrampolineFunc<auto(void*, int64_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt64Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeParcelFileDescriptor", GetTrampolineFunc<auto(void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeParcelableArray", GetTrampolineFunc<auto(void*, void*, int32_t, auto(*)(void*, void*, uint64_t) -> int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeStatusHeader", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeString", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeStringArray", GetTrampolineFunc<auto(void*, void*, int32_t, auto(*)(void*, uint64_t, void*) -> void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeStrongBinder", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint32", GetTrampolineFunc<auto(void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint32Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint64", GetTrampolineFunc<auto(void*, uint64_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint64Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_NotificationRegistration_delete", DoBadTrampoline, reinterpret_cast<void*>(DoBadThunk)}, +{"AServiceManager_addService", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_addServiceWithFlags", GetTrampolineFunc<auto(void*, void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_checkService", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_forEachDeclaredInstance", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, void*) -> void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_forceLazyServicesPersist", GetTrampolineFunc<auto(uint8_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_getService", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_getUpdatableApexName", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, void*) -> void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_isDeclared", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_isUpdatableViaApex", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_reRegister", GetTrampolineFunc<auto(void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_registerForServiceNotifications", DoBadTrampoline, reinterpret_cast<void*>(DoBadThunk)}, +{"AServiceManager_registerLazyService", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_setActiveServicesCallback", GetTrampolineFunc<auto(auto(*)(uint8_t, void*) -> uint8_t, void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_tryUnregister", GetTrampolineFunc<auto(void) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_waitForService", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_deleteDescription", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromExceptionCode", GetTrampolineFunc<auto(int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromExceptionCodeWithMessage", GetTrampolineFunc<auto(int32_t, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromServiceSpecificError", GetTrampolineFunc<auto(int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromServiceSpecificErrorWithMessage", GetTrampolineFunc<auto(int32_t, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromStatus", GetTrampolineFunc<auto(int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getDescription", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getExceptionCode", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getMessage", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getServiceSpecificError", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getStatus", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_isOk", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_newOk", GetTrampolineFunc<auto(void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"_Z25AIBinder_toPlatformBinderP8AIBinder", DoBadTrampoline, reinterpret_cast<void*>(DoBadThunk)}, +{"_Z26AParcel_viewPlatformParcelP7AParcel", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"_Z26AParcel_viewPlatformParcelPK7AParcel", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"_Z27AIBinder_fromPlatformBinderRKN7android2spINS_7IBinderEEE", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +}; // kKnownTrampolines +const KnownVariable kKnownVariables[] = { +}; // kKnownVariables +// clang-format on diff --git a/libbinder_ndk/proxy/trampolines_arm_to_x86-inl.h b/libbinder_ndk/proxy/trampolines_arm_to_x86-inl.h new file mode 100644 index 0000000..1d99397 --- /dev/null +++ b/libbinder_ndk/proxy/trampolines_arm_to_x86-inl.h @@ -0,0 +1,151 @@ +// clang-format off +const KnownTrampoline kKnownTrampolines[] = { +{"ABinderProcess_handlePolledCommands", GetTrampolineFunc<auto(void) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_isThreadPoolStarted", GetTrampolineFunc<auto(void) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_joinThreadPool", GetTrampolineFunc<auto(void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_setThreadPoolMaxThreadCount", GetTrampolineFunc<auto(uint32_t) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_setupPolling", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_startThreadPool", GetTrampolineFunc<auto(void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_define", GetTrampolineFunc<auto(void*, auto(*)(void*) -> void*, auto(*)(void*) -> void, auto(*)(void*, uint32_t, void*, void*) -> int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_disableInterfaceTokenHeader", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_getDescriptor", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_setHandleShellCommand", GetTrampolineFunc<auto(void*, auto(*)(void*, int32_t, int32_t, int32_t, void*, uint32_t) -> int32_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_setOnDump", GetTrampolineFunc<auto(void*, auto(*)(void*, int32_t, void*, uint32_t) -> int32_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_DeathRecipient_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_DeathRecipient_new", GetTrampolineFunc<auto(auto(*)(void*) -> void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_DeathRecipient_setOnUnlinked", GetTrampolineFunc<auto(void*, auto(*)(void*) -> void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_clone", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_lt", GetTrampolineFunc<auto(void*, void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_new", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_promote", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_associateClass", GetTrampolineFunc<auto(void*, void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_debugGetRefCount", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_decStrong", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_dump", GetTrampolineFunc<auto(void*, int32_t, void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_forceDowngradeToSystemStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_forceDowngradeToVendorStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_fromJavaBinder", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getCallingPid", GetTrampolineFunc<auto(void) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getCallingSid", GetTrampolineFunc<auto(void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getCallingUid", GetTrampolineFunc<auto(void) -> uint32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getClass", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getExtension", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getUserData", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_incStrong", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_isAlive", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_isHandlingTransaction", GetTrampolineFunc<auto(void) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_isRemote", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_linkToDeath", GetTrampolineFunc<auto(void*, void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_lt", GetTrampolineFunc<auto(void*, void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_markSystemStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_markVendorStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_markVintfStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_new", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_ping", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_prepareTransaction", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setExtension", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setInheritRt", GetTrampolineFunc<auto(void*, uint8_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setMinSchedulerPolicy", GetTrampolineFunc<auto(void*, int32_t, int32_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setRequestingSid", GetTrampolineFunc<auto(void*, uint8_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_toJavaBinder", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_transact", GetTrampolineFunc<auto(void*, uint32_t, void*, void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_unlinkToDeath", GetTrampolineFunc<auto(void*, void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_appendFrom", GetTrampolineFunc<auto(void*, void*, int32_t, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_create", GetTrampolineFunc<auto(void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_fromJavaParcel", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_getAllowFds", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_getDataPosition", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_getDataSize", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_markSensitive", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_marshal", GetTrampolineFunc<auto(void*, void*, uint32_t, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readBool", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readBoolArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t) -> uint8_t, auto(*)(void*, uint32_t, uint8_t) -> void) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readByte", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readByteArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readChar", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readCharArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readDouble", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readDoubleArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readFloat", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readFloatArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt32", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt32Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt64", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt64Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readParcelFileDescriptor", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readParcelableArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t) -> uint8_t, auto(*)(void*, void*, uint32_t) -> int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readStatusHeader", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readString", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readStringArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t) -> uint8_t, auto(*)(void*, uint32_t, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readStrongBinder", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint32", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint32Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint64", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint64Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_reset", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_setDataPosition", GetTrampolineFunc<auto(void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_unmarshal", GetTrampolineFunc<auto(void*, void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeBool", GetTrampolineFunc<auto(void*, uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeBoolArray", GetTrampolineFunc<auto(void*, void*, int32_t, auto(*)(void*, uint32_t) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeByte", GetTrampolineFunc<auto(void*, int8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeByteArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeChar", GetTrampolineFunc<auto(void*, uint16_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeCharArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeDouble", GetTrampolineFunc<auto(void*, double) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeDoubleArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeFloat", GetTrampolineFunc<auto(void*, float) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeFloatArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt32", GetTrampolineFunc<auto(void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt32Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt64", GetTrampolineFunc<auto(void*, int64_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt64Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeParcelFileDescriptor", GetTrampolineFunc<auto(void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeParcelableArray", GetTrampolineFunc<auto(void*, void*, int32_t, auto(*)(void*, void*, uint32_t) -> int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeStatusHeader", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeString", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeStringArray", GetTrampolineFunc<auto(void*, void*, int32_t, auto(*)(void*, uint32_t, void*) -> void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeStrongBinder", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint32", GetTrampolineFunc<auto(void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint32Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint64", GetTrampolineFunc<auto(void*, uint64_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint64Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_NotificationRegistration_delete", DoBadTrampoline, reinterpret_cast<void*>(DoBadThunk)}, +{"AServiceManager_addService", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_addServiceWithFlags", GetTrampolineFunc<auto(void*, void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_checkService", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_forEachDeclaredInstance", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, void*) -> void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_forceLazyServicesPersist", GetTrampolineFunc<auto(uint8_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_getService", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_getUpdatableApexName", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, void*) -> void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_isDeclared", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_isUpdatableViaApex", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_reRegister", GetTrampolineFunc<auto(void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_registerForServiceNotifications", DoBadTrampoline, reinterpret_cast<void*>(DoBadThunk)}, +{"AServiceManager_registerLazyService", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_setActiveServicesCallback", GetTrampolineFunc<auto(auto(*)(uint8_t, void*) -> uint8_t, void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_tryUnregister", GetTrampolineFunc<auto(void) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_waitForService", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_deleteDescription", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromExceptionCode", GetTrampolineFunc<auto(int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromExceptionCodeWithMessage", GetTrampolineFunc<auto(int32_t, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromServiceSpecificError", GetTrampolineFunc<auto(int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromServiceSpecificErrorWithMessage", GetTrampolineFunc<auto(int32_t, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromStatus", GetTrampolineFunc<auto(int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getDescription", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getExceptionCode", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getMessage", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getServiceSpecificError", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getStatus", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_isOk", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_newOk", GetTrampolineFunc<auto(void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"_Z25AIBinder_toPlatformBinderP8AIBinder", DoBadTrampoline, reinterpret_cast<void*>(DoBadThunk)}, +{"_Z26AParcel_viewPlatformParcelP7AParcel", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"_Z26AParcel_viewPlatformParcelPK7AParcel", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"_Z27AIBinder_fromPlatformBinderRKN7android2spINS_7IBinderEEE", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +}; // kKnownTrampolines +const KnownVariable kKnownVariables[] = { +}; // kKnownVariables +// clang-format on diff --git a/libbinder_ndk/proxy/trampolines_riscv64_to_x86_64-inl.h b/libbinder_ndk/proxy/trampolines_riscv64_to_x86_64-inl.h new file mode 100644 index 0000000..6e728ca --- /dev/null +++ b/libbinder_ndk/proxy/trampolines_riscv64_to_x86_64-inl.h @@ -0,0 +1,151 @@ +// clang-format off +const KnownTrampoline kKnownTrampolines[] = { +{"ABinderProcess_handlePolledCommands", GetTrampolineFunc<auto(void) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_isThreadPoolStarted", GetTrampolineFunc<auto(void) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_joinThreadPool", GetTrampolineFunc<auto(void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_setThreadPoolMaxThreadCount", GetTrampolineFunc<auto(uint32_t) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_setupPolling", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"ABinderProcess_startThreadPool", GetTrampolineFunc<auto(void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_define", GetTrampolineFunc<auto(void*, auto(*)(void*) -> void*, auto(*)(void*) -> void, auto(*)(void*, uint32_t, void*, void*) -> int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_disableInterfaceTokenHeader", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_getDescriptor", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_setHandleShellCommand", GetTrampolineFunc<auto(void*, auto(*)(void*, int32_t, int32_t, int32_t, void*, uint32_t) -> int32_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Class_setOnDump", GetTrampolineFunc<auto(void*, auto(*)(void*, int32_t, void*, uint32_t) -> int32_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_DeathRecipient_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_DeathRecipient_new", GetTrampolineFunc<auto(auto(*)(void*) -> void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_DeathRecipient_setOnUnlinked", GetTrampolineFunc<auto(void*, auto(*)(void*) -> void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_clone", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_lt", GetTrampolineFunc<auto(void*, void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_new", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_Weak_promote", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_associateClass", GetTrampolineFunc<auto(void*, void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_debugGetRefCount", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_decStrong", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_dump", GetTrampolineFunc<auto(void*, int32_t, void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_forceDowngradeToSystemStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_forceDowngradeToVendorStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_fromJavaBinder", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getCallingPid", GetTrampolineFunc<auto(void) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getCallingSid", GetTrampolineFunc<auto(void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getCallingUid", GetTrampolineFunc<auto(void) -> uint32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getClass", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getExtension", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_getUserData", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_incStrong", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_isAlive", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_isHandlingTransaction", GetTrampolineFunc<auto(void) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_isRemote", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_linkToDeath", GetTrampolineFunc<auto(void*, void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_lt", GetTrampolineFunc<auto(void*, void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_markSystemStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_markVendorStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_markVintfStability", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_new", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_ping", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_prepareTransaction", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setExtension", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setInheritRt", GetTrampolineFunc<auto(void*, uint8_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setMinSchedulerPolicy", GetTrampolineFunc<auto(void*, int32_t, int32_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_setRequestingSid", GetTrampolineFunc<auto(void*, uint8_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_toJavaBinder", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_transact", GetTrampolineFunc<auto(void*, uint32_t, void*, void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AIBinder_unlinkToDeath", GetTrampolineFunc<auto(void*, void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_appendFrom", GetTrampolineFunc<auto(void*, void*, int32_t, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_create", GetTrampolineFunc<auto(void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_fromJavaParcel", GetTrampolineFunc<auto(void*, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_getAllowFds", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_getDataPosition", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_getDataSize", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_markSensitive", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_marshal", GetTrampolineFunc<auto(void*, void*, uint64_t, uint64_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readBool", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readBoolArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t) -> uint8_t, auto(*)(void*, uint64_t, uint8_t) -> void) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readByte", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readByteArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readChar", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readCharArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readDouble", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readDoubleArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readFloat", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readFloatArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt32", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt32Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt64", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readInt64Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readParcelFileDescriptor", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readParcelableArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t) -> uint8_t, auto(*)(void*, void*, uint64_t) -> int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readStatusHeader", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readString", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readStringArray", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t) -> uint8_t, auto(*)(void*, uint64_t, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readStrongBinder", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint32", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint32Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint64", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_readUint64Array", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, int32_t, void*) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_reset", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_setDataPosition", GetTrampolineFunc<auto(void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_unmarshal", GetTrampolineFunc<auto(void*, void*, uint64_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeBool", GetTrampolineFunc<auto(void*, uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeBoolArray", GetTrampolineFunc<auto(void*, void*, int32_t, auto(*)(void*, uint64_t) -> uint8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeByte", GetTrampolineFunc<auto(void*, int8_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeByteArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeChar", GetTrampolineFunc<auto(void*, uint16_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeCharArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeDouble", GetTrampolineFunc<auto(void*, double) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeDoubleArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeFloat", GetTrampolineFunc<auto(void*, float) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeFloatArray", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt32", GetTrampolineFunc<auto(void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt32Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt64", GetTrampolineFunc<auto(void*, int64_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeInt64Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeParcelFileDescriptor", GetTrampolineFunc<auto(void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeParcelableArray", GetTrampolineFunc<auto(void*, void*, int32_t, auto(*)(void*, void*, uint64_t) -> int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeStatusHeader", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeString", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeStringArray", GetTrampolineFunc<auto(void*, void*, int32_t, auto(*)(void*, uint64_t, void*) -> void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeStrongBinder", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint32", GetTrampolineFunc<auto(void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint32Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint64", GetTrampolineFunc<auto(void*, uint64_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AParcel_writeUint64Array", GetTrampolineFunc<auto(void*, void*, int32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_NotificationRegistration_delete", DoBadTrampoline, reinterpret_cast<void*>(DoBadThunk)}, +{"AServiceManager_addService", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_addServiceWithFlags", GetTrampolineFunc<auto(void*, void*, uint32_t) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_checkService", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_forEachDeclaredInstance", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, void*) -> void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_forceLazyServicesPersist", GetTrampolineFunc<auto(uint8_t) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_getService", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_getUpdatableApexName", GetTrampolineFunc<auto(void*, void*, auto(*)(void*, void*) -> void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_isDeclared", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_isUpdatableViaApex", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_reRegister", GetTrampolineFunc<auto(void) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_registerForServiceNotifications", DoBadTrampoline, reinterpret_cast<void*>(DoBadThunk)}, +{"AServiceManager_registerLazyService", GetTrampolineFunc<auto(void*, void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_setActiveServicesCallback", GetTrampolineFunc<auto(auto(*)(uint8_t, void*) -> uint8_t, void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_tryUnregister", GetTrampolineFunc<auto(void) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AServiceManager_waitForService", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_delete", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_deleteDescription", GetTrampolineFunc<auto(void*) -> void>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromExceptionCode", GetTrampolineFunc<auto(int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromExceptionCodeWithMessage", GetTrampolineFunc<auto(int32_t, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromServiceSpecificError", GetTrampolineFunc<auto(int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromServiceSpecificErrorWithMessage", GetTrampolineFunc<auto(int32_t, void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_fromStatus", GetTrampolineFunc<auto(int32_t) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getDescription", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getExceptionCode", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getMessage", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getServiceSpecificError", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_getStatus", GetTrampolineFunc<auto(void*) -> int32_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_isOk", GetTrampolineFunc<auto(void*) -> uint8_t>(), reinterpret_cast<void*>(NULL)}, +{"AStatus_newOk", GetTrampolineFunc<auto(void) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"_Z25AIBinder_toPlatformBinderP8AIBinder", DoBadTrampoline, reinterpret_cast<void*>(DoBadThunk)}, +{"_Z26AParcel_viewPlatformParcelP7AParcel", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"_Z26AParcel_viewPlatformParcelPK7AParcel", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +{"_Z27AIBinder_fromPlatformBinderRKN7android2spINS_7IBinderEEE", GetTrampolineFunc<auto(void*) -> void*>(), reinterpret_cast<void*>(NULL)}, +}; // kKnownTrampolines +const KnownVariable kKnownVariables[] = { +}; // kKnownVariables +// clang-format on |