ldd started to show me “not a dynamic executable”

Solution 1:

Bug 1616609, ldd reports incorrectly "not a dynamic executable" when the executable's loader is not present , is probably the cause of the problem (as steeldriver suggested). Reinstall the libc6-x32 package to get it back. Do consider adding yourself to the bug, maybe it'll be fixed one day -- a patch is even suggested.

Solution 2:

So this worked for me. ldd is a script. Near the top (line 29 on my arm Debian 10) it bases all the library searching on RTLDLIST=/lib/ld-linux-aarch64.so.1. After installing arm 32 bit libraries (dpkg --add-architecture armhf; apt update; etc), I took a look in /lib and saw ld-linux-armhf.so.3 right next to ld-linux-aarch64.so.1. So then this stopped ldd saying "not a dynamic executable":

  1. copy /usr/bin/ldd to /usr/bin/ldd32
  2. edit /usr/bin/ldd32
  3. replace RTLDLIST=/lib/ld-linux-aarch64.so.1 with RTLDLIST=/lib/ld-linux-armhf.so.3
  4. ldd32 <32 bit binary>