Hi Guillem, > I think this is a problem at least in supermin itself. The new dpkg > options enable PIE by default everywhere, but supermin build system is > using file(1) to determine whether the resulting init object has been > statically linked or not. PIE makes binaries look like shared > libraries so I'm assuming file(1) on several of those architecture > might be confused here?
There might be an issue with file(1) as well, but the "init" binary that was produced on PowerPC cannot even be executed: ,---- | (sid_powerpc-dchroot)bengen@partch:~/supermin-5.1.17$ ./init/init | -bash: ./init/init: No such file or directory `---- This probably happens because the linker specified the wrong dynamic linker, where there should be no dynamic linker at all. As per readelf -l init/init: ,---- | (sid_powerpc-dchroot)bengen@partch:~/supermin-5.1.17$ readelf -l init/init | [...] | INTERP 0x000154 0x00000154 0x00000154 0x00011 0x00011 R 0x1 | [Requesting program interpreter: /usr/lib/ld.so.1] | [...] `---- Building the without -specs=/usr/share/dpkg/pie-link.specs produces a proper static binary that is recognized as such by file(1), without an INTERP directive. The same problem (non-static binary with wrong INTERP entry)), same fix (stripping out pie-link.specs) also applies on ppc64 and sparc64. There must be something wrong with the way that gcc calls ld or with ld itself on those architectures. Cheers, -Hilko