kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

commit f962942019b876ed343d1ba705c0c6fa96bd22bf
parent befdc837990519cf9a44cc602d96d1cfb23ad62f
Author: Ryan Sepassi <rsepassi@gmail.com>
Date:   Thu, 16 Jul 2026 11:23:21 -0700

test: verify Android NativeActivity shared images

Diffstat:
Mdoc/RELEASE_AUDIT_2026_6_0.md | 2+-
Mtest/tier1/cross/run.sh | 19+++++++++++++++++--
2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/doc/RELEASE_AUDIT_2026_6_0.md b/doc/RELEASE_AUDIT_2026_6_0.md @@ -492,7 +492,7 @@ Implementation checkpoint (updated 2026-07-16): | KIT-P1-012 | **Complete** | authenticated updater result cases included in `test-selfdist`: 107 pass, 0 fail | | KIT-P1-001 | **Complete** | `target_test`: 177 checks, 0 failures; `test-driver-targets`: 61 pass, 0 fail | | KIT-P0-004 | **Complete** | public ELF/Mach-O/COFF matrix 106/0, including dylib/TBD device/simulator/arm64e, import-library, pointer-width/endian boundaries; driver authority/inference/archive suite 15/0 | -| KIT-P1-002 | **Complete** | NDK r27d NativeActivity preprocess/compile/shared-link at API 21 and 35: 3 pass, 0 fail | +| KIT-P1-002 | **Complete** | NDK r27d NativeActivity preprocess/compile/shared-link at API 21 and 35; independent `llvm-readelf` confirms AArch64 `ET_DYN` plus exported `ANativeActivity_onCreate`: 3 pass, 0 fail | | KIT-P1-003 | **Complete** | `test-smoke-rv32`: 20 pass, 0 fail, including concurrent empty-cache/read-only/QEMU cases | | KIT-P1-004 | **Complete** | independent `llvm-readelf` rv32/rv64 soft/hard, mixed-ABI, and RVC merge oracle: 36 pass, 0 fail | | KIT-P0-003 | **Complete** | `test-driver-cc`: 162 pass, 0 fail, including 12 portable-C native/cross O0/O1/O2 cases | diff --git a/test/tier1/cross/run.sh b/test/tier1/cross/run.sh @@ -136,12 +136,16 @@ hosted_lane() { android_api_lane() { local sysroot="$1" api="$2" label="android-aa64:api$2" triple dir pp obj so + local readelf elf_header dynsym triple="aarch64-linux-android$api" dir="$WORK/$label" mkdir -p "$dir" pp="$dir/native_activity.i" obj="$dir/native_activity.o" so="$dir/libkit_native_activity.so" + readelf="$(dirname "$sysroot")/bin/llvm-readelf" + elf_header="$dir/readelf-header.log" + dynsym="$dir/readelf-dynsym.log" run_cmd "$label:cpp" "$dir/cpp.log" \ "$KIT" cpp -target "$triple" --sysroot "$sysroot" \ -DKIT_EXPECT_ANDROID_API="$api" "$CASES/native_activity.c" -o "$pp" || return 0 @@ -151,10 +155,21 @@ android_api_lane() { run_cmd "$label:ld" "$dir/ld.log" \ "$KIT" cc -target "$triple" --sysroot "$sysroot" -shared \ "$obj" -landroid -o "$so" || return 0 - if [ -s "$pp" ] && [ -s "$so" ]; then + if [ ! -x "$readelf" ]; then + kit_fail "$label:readelf" "NDK llvm-readelf missing at $readelf" + return 0 + fi + run_cmd "$label:elf-header" "$elf_header" \ + "$readelf" -h "$so" || return 0 + run_cmd "$label:dynsym" "$dynsym" \ + "$readelf" --dyn-syms --wide "$so" || return 0 + if [ -s "$pp" ] && [ -s "$so" ] && + grep -Eq 'Type:[[:space:]]+DYN[[:space:]]' "$elf_header" && + grep -Eq 'Machine:[[:space:]]+AArch64$' "$elf_header" && + grep -Eq 'FUNC[[:space:]]+GLOBAL[[:space:]]+DEFAULT[[:space:]]+[0-9]+[[:space:]]+ANativeActivity_onCreate$' "$dynsym"; then kit_pass "$label" else - kit_fail "$label" "preprocessed/shared artifact missing" + kit_fail "$label" "expected AArch64 ET_DYN export missing; see $elf_header and $dynsym" fi }