[core] Add no-rtti & no-exceptions to cppflags (#335)

This commit is contained in:
LoveSy 2021-03-12 00:47:30 +08:00 committed by GitHub
parent 0ec737b78c
commit 4fa8839bae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 18 additions and 15 deletions

View File

@ -90,8 +90,8 @@ android {
externalNativeBuild { externalNativeBuild {
cmake { cmake {
abiFilters("arm64-v8a", "armeabi-v7a", "x86", "x86_64") abiFilters("arm64-v8a", "armeabi-v7a", "x86", "x86_64")
cppFlags("-std=c++17 -ffixed-x18 -Qunused-arguments -frtti -fomit-frame-pointer -fpie -fPIC") cppFlags("-std=c++20 -ffixed-x18 -Qunused-arguments -fno-rtti -fno-exceptions -fomit-frame-pointer -fpie -fPIC")
cFlags("-std=gnu99 -ffixed-x18 -Qunused-arguments -frtti -fomit-frame-pointer -fpie -fPIC") cFlags("-std=c11 -ffixed-x18 -Qunused-arguments -fno-rtti -fno-exceptions -fomit-frame-pointer -fpie -fPIC")
arguments("-DRIRU_MODULE_API_VERSION=$moduleMaxRiruApiVersion", arguments("-DRIRU_MODULE_API_VERSION=$moduleMaxRiruApiVersion",
"-DRIRU_MODULE_VERSION=$verCode", "-DRIRU_MODULE_VERSION=$verCode",
"-DRIRU_MODULE_VERSION_NAME:STRING=\"$verName\"") "-DRIRU_MODULE_VERSION_NAME:STRING=\"$verName\"")

View File

@ -26,8 +26,6 @@
#include <dl_util.h> #include <dl_util.h>
#include <art/runtime/jni_env_ext.h> #include <art/runtime/jni_env_ext.h>
#include "jni/pending_hooks.h" #include "jni/pending_hooks.h"
#include <fstream>
#include <sstream>
#include "context.h" #include "context.h"
#include "native_hook.h" #include "native_hook.h"
#include "jni/logger.h" #include "jni/logger.h"
@ -59,12 +57,15 @@ namespace lspd {
void Context::PreLoadDex(const std::string &dex_path) { void Context::PreLoadDex(const std::string &dex_path) {
if (LIKELY(!dex.empty())) return; if (LIKELY(!dex.empty())) return;
std::ifstream is(dex_path); FILE *f = fopen(dex_path.c_str(), "rb");
if (!is.good()) { fseek(f, 0, SEEK_END);
LOGE("Failed to read dex"); dex.resize(ftell(f));
return; rewind(f);
if (dex.size() != fread(dex.data(), 1, dex.size(), f)) {
LOGE("Read dex failed");
dex.resize(0);
} }
dex.assign(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>()); fclose(f);
LOGI("Loaded %s with size %zu", dex_path.c_str(), dex.size()); LOGI("Loaded %s with size %zu", dex_path.c_str(), dex.size());
} }

View File

@ -70,7 +70,7 @@ namespace lspd {
jclass class_linker_class_ = nullptr; jclass class_linker_class_ = nullptr;
jmethodID post_fixup_static_mid_ = nullptr; jmethodID post_fixup_static_mid_ = nullptr;
bool skip_ = false; bool skip_ = false;
std::vector<signed char> dex{}; std::vector<char> dex{};
Context() {} Context() {}

View File

@ -21,7 +21,6 @@
#include "logger.h" #include "logger.h"
#include "native_util.h" #include "native_util.h"
#include "jni_helper.h" #include "jni_helper.h"
#include <fstream>
#include <fcntl.h> #include <fcntl.h>
namespace lspd { namespace lspd {

View File

@ -23,17 +23,20 @@ RIRU_MODULE_API_VERSION=%%%RIRU_MODULE_API_VERSION%%%
RIRU_MODULE_MIN_API_VERSION=%%%RIRU_MODULE_MIN_API_VERSION%%% RIRU_MODULE_MIN_API_VERSION=%%%RIRU_MODULE_MIN_API_VERSION%%%
RIRU_MODULE_MIN_RIRU_VERSION_NAME="%%%RIRU_MODULE_MIN_RIRU_VERSION_NAME%%%" RIRU_MODULE_MIN_RIRU_VERSION_NAME="%%%RIRU_MODULE_MIN_RIRU_VERSION_NAME%%%"
if [ "$MAGISK_VER_CODE" -ge 21000 ]; then
MAGISK_CURRENT_RIRU_MODULE_PATH=$(magisk --path)/.magisk/modules/riru-core
else
MAGISK_CURRENT_RIRU_MODULE_PATH=/sbin/.magisk/modules/riru-core
fi
check_riru_version() { check_riru_version() {
RIRU_CORE_MODULES_PATH=/data/adb/modules/riru-core if [ ! -f "$MAGISK_CURRENT_RIRU_MODULE_PATH/api_version" ] && [ ! -f "/data/adb/riru/api_version" ] && [ ! -f "/data/adb/riru/api_version.new" ]; then
RIRU_CORE_MODULES_UPDATE_PATH=/data/adb/modules_update/riru-core
if [ ! -f "$RIRU_CORE_MODULES_UPDATE_PATH/api_version" ] && [ ! -f "$RIRU_CORE_MODULES_PATH/api_version" ]; then
ui_print "*********************************************************" ui_print "*********************************************************"
ui_print "! Riru $RIRU_MODULE_MIN_RIRU_VERSION_NAME or above is required" ui_print "! Riru $RIRU_MODULE_MIN_RIRU_VERSION_NAME or above is required"
ui_print "! Please install Riru from Magisk Manager or https://github.com/RikkaApps/Riru/releases" ui_print "! Please install Riru from Magisk Manager or https://github.com/RikkaApps/Riru/releases"
abort "*********************************************************" abort "*********************************************************"
fi fi
RIRU_API=$(cat "$RIRU_CORE_MODULES_UPDATE_PATH/api_version") || RIRU_API=$(cat "$RIRU_CORE_MODULES_PATH/api_version") || RIRU_API=0 RIRU_API=$(cat "$MAGISK_CURRENT_RIRU_MODULE_PATH/api_version") || RIRU_API=$(cat "/data/adb/riru/api_version.new") || RIRU_API=$(cat "/data/adb/riru/api_version") || RIRU_API=0
[ "$RIRU_API" -eq "$RIRU_API" ] || RIRU_API=0 [ "$RIRU_API" -eq "$RIRU_API" ] || RIRU_API=0
ui_print "- Riru API version: $RIRU_API" ui_print "- Riru API version: $RIRU_API"
if [ "$RIRU_API" -lt $RIRU_MODULE_MIN_API_VERSION ]; then if [ "$RIRU_API" -lt $RIRU_MODULE_MIN_API_VERSION ]; then