From e10bde00db138456694ad3e48549ba1e4c9ee91f Mon Sep 17 00:00:00 2001 From: luojitong Date: Wed, 23 Dec 2020 18:44:33 +0800 Subject: [PATCH] fixbug: jit_load of Android10 is with empty param --- .../src/main/cpp/utils/hide_api.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/sandhook-hooklib/src/main/cpp/utils/hide_api.cpp b/sandhook-hooklib/src/main/cpp/utils/hide_api.cpp index e6a86480..bdaf2de0 100644 --- a/sandhook-hooklib/src/main/cpp/utils/hide_api.cpp +++ b/sandhook-hooklib/src/main/cpp/utils/hide_api.cpp @@ -13,7 +13,6 @@ extern int SDK_INT; extern "C" { - void* (*jitLoad)(bool*) = nullptr; void* jitCompilerHandle = nullptr; bool (*jitCompileMethod)(void*, void*, void*, bool) = nullptr; bool (*jitCompileMethodQ)(void*, void*, void*, bool, bool) = nullptr; @@ -77,11 +76,17 @@ extern "C" { bool)>(getSymCompat(jit_lib_path, "jit_compile_method")); } - jitLoad = reinterpret_cast(getSymCompat(jit_lib_path, "jit_load")); - bool generate_debug_info = false; - - if (jitLoad != nullptr) { - jitCompilerHandle = (jitLoad)(&generate_debug_info); + auto jit_load = getSymCompat(jit_lib_path, "jit_load"); + if (jit_load) { + if (SDK_INT >= ANDROID_Q) { + // Android 10:void* jit_load() + // Android 11: JitCompilerInterface* jit_load() + jitCompilerHandle = reinterpret_cast(jit_load)(); + } else { + // void* jit_load(bool* generate_debug_info) + bool generate_debug_info = false; + jitCompilerHandle = reinterpret_cast(jit_load)(&generate_debug_info); + } } else { jitCompilerHandle = getGlobalJitCompiler(); }