diff --git a/lsplant/src/main/jni/art/runtime/art_method.hpp b/lsplant/src/main/jni/art/runtime/art_method.hpp index 8cfda2c..cbc1bab 100644 --- a/lsplant/src/main/jni/art/runtime/art_method.hpp +++ b/lsplant/src/main/jni/art/runtime/art_method.hpp @@ -182,6 +182,7 @@ public: auto sdk_int = GetAndroidApiLevel(); if (sdk_int < __ANDROID_API_R__) kAccPreCompiled = 0; + else if (sdk_int >= __ANDROID_API_S__) kAccPreCompiled = 0x00800000; if (sdk_int < __ANDROID_API_Q__) kAccFastInterpreterToInterpreterInvoke = 0; if (!RETRIEVE_FUNC_SYMBOL(GetMethodShorty, diff --git a/lsplant/src/main/jni/lsplant.cc b/lsplant/src/main/jni/lsplant.cc index 716bec3..3d6bebb 100644 --- a/lsplant/src/main/jni/lsplant.cc +++ b/lsplant/src/main/jni/lsplant.cc @@ -42,7 +42,7 @@ inline consteval auto operator""_uarr() { consteval inline auto GetTrampoline() { if constexpr (kArch == Arch::kArm) { - return std::make_tuple("\x00\x00\x9f\xe5\x20\xf0\x90\xe5\x78\x56\x34\x12"_uarr, + return std::make_tuple("\x00\x00\x9f\xe5\x00\xf0\x90\xe5\x78\x56\x34\x12"_uarr, // NOLINTNEXTLINE uint8_t{32u}, uintptr_t{8u}); } @@ -53,12 +53,12 @@ consteval inline auto GetTrampoline() { uint8_t{44u}, uintptr_t{12u}); } if constexpr (kArch == Arch::kX86) { - return std::make_tuple("\xb8\x78\x56\x34\x12\xff\x70\x20\xc3"_uarr, + return std::make_tuple("\xb8\x78\x56\x34\x12\xff\x70\x00\xc3"_uarr, // NOLINTNEXTLINE uint8_t{56u}, uintptr_t{1u}); } if constexpr (kArch == Arch::kX8664) { - return std::make_tuple("\x48\xbf\x78\x56\x34\x12\x78\x56\x34\x12\xff\x77\x20\xc3"_uarr, + return std::make_tuple("\x48\xbf\x78\x56\x34\x12\x78\x56\x34\x12\xff\x77\x00\xc3"_uarr, // NOLINTNEXTLINE uint8_t{96u}, uintptr_t{2u}); }