ファイルが確かに存在していてファイルの形式がELFで正しいターゲットアーキなのにも関わらずexecするとENOENT(file not found)で失敗してしまうという問題にはまった。アクセス権がないとか実行ビットが立ってないとかならEPERM(permission denied)になるはずなのでそっち系ではない。straceしてもそれっぽい原因が見つからない。Linux kernelのコードを追おうかと思ったけど、さすがに思いとどまってググってるとドンピシャで見つかった。
https://github.com/hiboma/hiboma/blob/master/execve%E3%81%8B%E3%82%99ENOENT%E3%82%92%E8%BF%94%E3%81%99%E3%82%B1%E3%83%BC%E3%82%B9.mdローダが無い場合に do_execve -> search_binary_handler で ENOENT 返すケースがある
readelf -e してまさにこのパターンであること確認。/lib64/ld-linux-aarch64.so を向いていた。ln -s /lib64 /lib して解決。先にググってよかった。