MG_ But why doesn't chroot say "missing library"?
It could if there were an ENOLOADER error in the system. But, there isn't, so when chroot does an exec() of /bin/bash, the kernel will try to load the "interpreter" specified in the binary first, and when that can't be found must return ENOENT -- which is what the exec() in chroot fails with.
MG_ If I copy /bin/ls to /usr/local/bin/aaa in the chroot and mess the content up wirh an editor, chroot says: Shared object has no run-time symbol table. That's better... It's found but can't be executed.
Well, this is very different. Here, ld.elf_so does run. It examines the binary, finds things missing, or messed up, and can print an appropriate error.
FWIW, I think ldd on NetBSD should list the dynamic loader which'll be used, too--just like the GNU ldd on Linux.