From 8ebc6207b435a6cefa12e32ee34c4b37b90ec5b5 Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Fri, 22 Aug 2025 00:53:55 -0700 Subject: [PATCH] Merge headers --- native/src/boot/bootimg.hpp | 2 -- native/src/boot/format.hpp | 44 ---------------------------------- native/src/boot/lib.rs | 4 +--- native/src/boot/magiskboot.hpp | 42 ++++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 49 deletions(-) delete mode 100644 native/src/boot/format.hpp diff --git a/native/src/boot/bootimg.hpp b/native/src/boot/bootimg.hpp index e167251ea..4c612e17a 100644 --- a/native/src/boot/bootimg.hpp +++ b/native/src/boot/bootimg.hpp @@ -5,8 +5,6 @@ #include #include -#include "format.hpp" - /****************** * Special Headers *****************/ diff --git a/native/src/boot/format.hpp b/native/src/boot/format.hpp deleted file mode 100644 index 7e23b4093..000000000 --- a/native/src/boot/format.hpp +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -enum class FileFormat : ::std::uint8_t; - -#define BUFFER_MATCH(buf, s) (memcmp(buf, s, sizeof(s) - 1) == 0) -#define BUFFER_CONTAIN(buf, sz, s) (memmem(buf, sz, s, sizeof(s) - 1) != nullptr) -#define CHECKED_MATCH(s) (len >= (sizeof(s) - 1) && BUFFER_MATCH(buf, s)) - -#define BOOT_MAGIC "ANDROID!" -#define VENDOR_BOOT_MAGIC "VNDRBOOT" -#define CHROMEOS_MAGIC "CHROMEOS" -#define GZIP1_MAGIC "\x1f\x8b" -#define GZIP2_MAGIC "\x1f\x9e" -#define LZOP_MAGIC "\x89""LZO" -#define XZ_MAGIC "\xfd""7zXZ" -#define BZIP_MAGIC "BZh" -#define LZ4_LEG_MAGIC "\x02\x21\x4c\x18" -#define LZ41_MAGIC "\x03\x21\x4c\x18" -#define LZ42_MAGIC "\x04\x22\x4d\x18" -#define MTK_MAGIC "\x88\x16\x88\x58" -#define DTB_MAGIC "\xd0\x0d\xfe\xed" -#define LG_BUMP_MAGIC "\x41\xa9\xe4\x67\x74\x4d\x1d\x1b\xa4\x29\xf2\xec\xea\x65\x52\x79" -#define DHTB_MAGIC "\x44\x48\x54\x42\x01\x00\x00\x00" -#define SEANDROID_MAGIC "SEANDROIDENFORCE" -#define TEGRABLOB_MAGIC "-SIGNED-BY-SIGNBLOB-" -#define NOOKHD_RL_MAGIC "Red Loader" -#define NOOKHD_GL_MAGIC "Green Loader" -#define NOOKHD_GR_MAGIC "Green Recovery" -#define NOOKHD_EB_MAGIC "eMMC boot.img+secondloader" -#define NOOKHD_ER_MAGIC "eMMC recovery.img+secondloader" -#define NOOKHD_PRE_HEADER_SZ 1048576 -#define ACCLAIM_MAGIC "BauwksBoot" -#define ACCLAIM_PRE_HEADER_SZ 262144 -#define AMONET_MICROLOADER_MAGIC "microloader" -#define AMONET_MICROLOADER_SZ 1024 -#define AVB_FOOTER_MAGIC "AVBf" -#define AVB_MAGIC "AVB0" -#define ZIMAGE_MAGIC "\x18\x28\x6f\x01" - -FileFormat check_fmt(const void *buf, size_t len); - -static inline FileFormat check_fmt(rust::Slice bytes) { - return check_fmt(bytes.data(), bytes.size()); -} diff --git a/native/src/boot/lib.rs b/native/src/boot/lib.rs index 1385bfde5..fb98f7d92 100644 --- a/native/src/boot/lib.rs +++ b/native/src/boot/lib.rs @@ -57,14 +57,12 @@ pub mod ffi { } unsafe extern "C++" { - include!("format.hpp"); - fn check_fmt(buf: &[u8]) -> FileFormat; - include!("magiskboot.hpp"); fn cleanup(); fn unpack(image: Utf8CStrRef, skip_decomp: bool, hdr: bool) -> i32; fn repack(src_img: Utf8CStrRef, out_img: Utf8CStrRef, skip_comp: bool); fn split_image_dtb(filename: Utf8CStrRef, skip_decomp: bool) -> i32; + fn check_fmt(buf: &[u8]) -> FileFormat; } extern "Rust" { diff --git a/native/src/boot/magiskboot.hpp b/native/src/boot/magiskboot.hpp index 5ea05ce89..076afb8f0 100644 --- a/native/src/boot/magiskboot.hpp +++ b/native/src/boot/magiskboot.hpp @@ -12,7 +12,49 @@ #define BOOTCONFIG_FILE "bootconfig" #define NEW_BOOT "new-boot.img" +#define BUFFER_MATCH(buf, s) (memcmp(buf, s, sizeof(s) - 1) == 0) +#define BUFFER_CONTAIN(buf, sz, s) (memmem(buf, sz, s, sizeof(s) - 1) != nullptr) +#define CHECKED_MATCH(s) (len >= (sizeof(s) - 1) && BUFFER_MATCH(buf, s)) + +#define BOOT_MAGIC "ANDROID!" +#define VENDOR_BOOT_MAGIC "VNDRBOOT" +#define CHROMEOS_MAGIC "CHROMEOS" +#define GZIP1_MAGIC "\x1f\x8b" +#define GZIP2_MAGIC "\x1f\x9e" +#define LZOP_MAGIC "\x89""LZO" +#define XZ_MAGIC "\xfd""7zXZ" +#define BZIP_MAGIC "BZh" +#define LZ4_LEG_MAGIC "\x02\x21\x4c\x18" +#define LZ41_MAGIC "\x03\x21\x4c\x18" +#define LZ42_MAGIC "\x04\x22\x4d\x18" +#define MTK_MAGIC "\x88\x16\x88\x58" +#define DTB_MAGIC "\xd0\x0d\xfe\xed" +#define LG_BUMP_MAGIC "\x41\xa9\xe4\x67\x74\x4d\x1d\x1b\xa4\x29\xf2\xec\xea\x65\x52\x79" +#define DHTB_MAGIC "\x44\x48\x54\x42\x01\x00\x00\x00" +#define SEANDROID_MAGIC "SEANDROIDENFORCE" +#define TEGRABLOB_MAGIC "-SIGNED-BY-SIGNBLOB-" +#define NOOKHD_RL_MAGIC "Red Loader" +#define NOOKHD_GL_MAGIC "Green Loader" +#define NOOKHD_GR_MAGIC "Green Recovery" +#define NOOKHD_EB_MAGIC "eMMC boot.img+secondloader" +#define NOOKHD_ER_MAGIC "eMMC recovery.img+secondloader" +#define NOOKHD_PRE_HEADER_SZ 1048576 +#define ACCLAIM_MAGIC "BauwksBoot" +#define ACCLAIM_PRE_HEADER_SZ 262144 +#define AMONET_MICROLOADER_MAGIC "microloader" +#define AMONET_MICROLOADER_SZ 1024 +#define AVB_FOOTER_MAGIC "AVBf" +#define AVB_MAGIC "AVB0" +#define ZIMAGE_MAGIC "\x18\x28\x6f\x01" + +enum class FileFormat : ::std::uint8_t; + int unpack(rust::Utf8CStr image, bool skip_decomp = false, bool hdr = false); void repack(rust::Utf8CStr src_img, rust::Utf8CStr out_img, bool skip_comp = false); int split_image_dtb(rust::Utf8CStr filename, bool skip_decomp = false); void cleanup(); +FileFormat check_fmt(const void *buf, size_t len); + +static inline FileFormat check_fmt(rust::Slice bytes) { + return check_fmt(bytes.data(), bytes.size()); +}