Welcome to the 64 bit world!

Close #854
This commit is contained in:
topjohnwu
2019-02-24 08:13:27 -05:00
parent ea129fb206
commit 6ca8db2f0c
8 changed files with 61 additions and 58 deletions

View File

@@ -12,7 +12,7 @@ android {
externalNativeBuild {
ndkBuild {
// Pass arguments to ndk-build.
arguments('B_MAGISK=1', 'B_INIT=1', 'B_BOOT=1',
arguments('B_MAGISK=1', 'B_INIT64=1', 'B_BOOT=1',
'MAGISK_DEBUG=1', 'MAGISK_VERSION=debug', 'MAGISK_VER_CODE=INT_MAX')
}
}

View File

@@ -19,7 +19,6 @@ LIBUTILS := jni/utils/include
ifdef B_MAGISK
# magisk main binary
include $(CLEAR_VARS)
LOCAL_MODULE := magisk
LOCAL_SHARED_LIBRARIES := libsqlite
@@ -56,11 +55,19 @@ include $(BUILD_EXECUTABLE)
endif
ifdef B_INIT
# magiskinit
include $(CLEAR_VARS)
ifdef B_INIT
LOCAL_MODULE := magiskinit
BB_INIT := 1
else ifdef B_INIT64
LOCAL_MODULE := magiskinit64
LOCAL_CPPFLAGS += -DUSE_64BIT
BB_INIT := 1
endif
ifdef BB_INIT
LOCAL_STATIC_LIBRARIES := libsepol libxz libutils
LOCAL_C_INCLUDES := \
jni/include \
@@ -85,7 +92,6 @@ endif
ifdef B_BOOT
# magiskboot
include $(CLEAR_VARS)
LOCAL_MODULE := magiskboot
LOCAL_STATIC_LIBRARIES := libmincrypt liblzma liblz4 libbz2 libfdt libutils
@@ -116,7 +122,6 @@ endif
ifdef B_BB
# Busybox
include jni/external/busybox/Android.mk
endif

View File

@@ -9,10 +9,15 @@ ifdef MAGISK_DEBUG
APP_CFLAGS += -D__MDBG
endif
# Build 64 bit binaries for magisk
ifdef B_MAGISK
APP_ABI += arm64-v8a x86_64
endif
# Busybox require some additional settings
ifdef B_BB
APP_CFLAGS := -Os
APP_SHORT_COMMANDS := true
NDK_TOOLCHAIN_VERSION := 4.9
APP_PLATFORM := android-22
APP_PLATFORM := android-21
endif

View File

@@ -44,7 +44,11 @@
#include <flags.h>
#include "binaries.h"
#ifdef USE_64BIT
#include "binaries_arch64.h"
#else
#include "binaries_arch.h"
#endif
#include "magiskrc.h"
#define DEFAULT_DT_DIR "/proc/device-tree/firmware/android"
@@ -367,12 +371,6 @@ static void setup_init_rc() {
fclose(rc);
}
static const char wrapper[] =
"#!/system/bin/sh\n"
"unset LD_LIBRARY_PATH\n"
"unset LD_PRELOAD\n"
"exec /sbin/magisk.bin \"${0##*/}\" \"$@\"\n";
static void setup_overlay() {
char buf[128];
int fd;
@@ -402,13 +400,9 @@ static void setup_overlay() {
fd = open("/sbin/magiskinit", O_WRONLY | O_CREAT, 0755);
write(fd, self, self_sz);
close(fd);
fd = open("/sbin/magisk", O_WRONLY | O_CREAT, 0755);
write(fd, wrapper, sizeof(wrapper));
close(fd);
dump_magisk("/sbin/magisk.bin", 0755);
patch_socket_name("/sbin/magisk.bin");
dump_magisk("/sbin/magisk", 0755);
patch_socket_name("/sbin/magisk");
setfilecon("/sbin/magisk", "u:object_r:" SEPOL_FILE_DOMAIN ":s0");
setfilecon("/sbin/magisk.bin", "u:object_r:" SEPOL_FILE_DOMAIN ":s0");
setfilecon("/sbin/magiskinit", "u:object_r:" SEPOL_FILE_DOMAIN ":s0");
// Create applet symlinks