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:
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
}