mirror of
https://github.com/LSPosed/LSPlant.git
synced 2025-05-04 20:42:02 +08:00
Preliminary riscv64 support
This commit is contained in:
parent
77d02b29ec
commit
25fff8a2a8
@ -2,7 +2,7 @@
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
@ -12,8 +12,8 @@ This project is part of LSPosed framework under GNU Lesser General Public Licens
|
||||
|
||||
## Features
|
||||
|
||||
+ Support Android 5.0 - 13 (API level 21 - 33)
|
||||
+ Support armeabi-v7a, arm64-v8a, x86, x86-64
|
||||
+ Support Android 5.0 - 14 (API level 21 - 34)
|
||||
+ Support armeabi-v7a, arm64-v8a, x86, x86-64, riscv64
|
||||
+ Support customized inline hook framework and ART symbol resolver
|
||||
|
||||
## Documentation
|
||||
|
@ -134,7 +134,7 @@ public:
|
||||
int sdk_int = GetAndroidApiLevel();
|
||||
|
||||
if (sdk_int >= __ANDROID_API_R__) {
|
||||
if constexpr (GetArch() != Arch::kX86 && GetArch() != Arch::kX8664) {
|
||||
if constexpr (GetArch() != Arch::kX86 && GetArch() != Arch::kX86_64) {
|
||||
// fixup static trampoline may have been inlined
|
||||
HookSyms(handler, AdjustThreadVisibilityCounter);
|
||||
}
|
||||
|
@ -18,18 +18,21 @@ enum class Arch {
|
||||
kArm,
|
||||
kArm64,
|
||||
kX86,
|
||||
kX8664,
|
||||
kX86_64,
|
||||
kRiscv64,
|
||||
};
|
||||
|
||||
consteval inline Arch GetArch() {
|
||||
#if defined(__i386__)
|
||||
return Arch::kX86;
|
||||
#elif defined(__x86_64__)
|
||||
return Arch::kX8664;
|
||||
return Arch::kX86_64;
|
||||
#elif defined(__arm__)
|
||||
return Arch::kArm;
|
||||
#elif defined(__aarch64__)
|
||||
return Arch::kArm64;
|
||||
#elif defined(__riscv)
|
||||
return Arch::kRiscv64;
|
||||
#else
|
||||
#error "unsupported architecture"
|
||||
#endif
|
||||
|
2
lsplant/src/main/jni/external/dex_builder
vendored
2
lsplant/src/main/jni/external/dex_builder
vendored
@ -1 +1 @@
|
||||
Subproject commit 5e926bd4e6e887f3a0d8d79b93c7e0eee2e92724
|
||||
Subproject commit 60251dde8d7dcb49b2a6249a0214437836cc8991
|
@ -64,11 +64,17 @@ consteval inline auto GetTrampoline() {
|
||||
// NOLINTNEXTLINE
|
||||
uint8_t{56u}, uintptr_t{1u});
|
||||
}
|
||||
if constexpr (kArch == Arch::kX8664) {
|
||||
if constexpr (kArch == Arch::kX86_64) {
|
||||
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});
|
||||
}
|
||||
if constexpr (kArch == Arch::kRiscv64) {
|
||||
return std::make_tuple(
|
||||
"\x17\x05\x00\x00\x03\x35\xc5\x00\x67\x00\x05\x00\x78\x56\x34\x12\x78\x56\x34\x12"_uarr,
|
||||
// NOLINTNEXTLINE
|
||||
uint8_t{84u}, uintptr_t{12u});
|
||||
}
|
||||
}
|
||||
|
||||
auto [trampoline, entry_point_offset, art_method_offset] = GetTrampoline();
|
||||
|
Loading…
x
Reference in New Issue
Block a user