The the minimal sysroot we provide with the gcc-linaro-arm-linux-gnueabihf-2012.05-20120523_linux contains libraries that reference the ld-linux.so.3 loader (DT_NEEDED):
gcc-linaro-arm-linux-gnueabihf-2012.05-20120523_linux/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf/libbz2.so.1.0.4
gcc-linaro-arm-linux-gnueabihf-2012.05-20120523_linux/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf/libz.so.1.2.3.4
gcc-linaro-arm-linux-gnueabihf-2012.05-20120523_linux/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf/libselinux.so.1
This raises a couple of questions:
1) Where do these files come from? (Afair we configure crosstoolng to use some prebuilt libs. Are they copied from Ubuntu?)
2) Why are they using symbols exported by the loader at all? (they might be pulled in accidentally)
3) Why do we provide libselinux.so.1 in a minimal sysroot?
Since the sysroot is taken from Ubuntu it sounds like an Ubuntu bug to me. I don't know why any regular library would pull in symbols from the loader. Maybe those symbols are meant to be provided by something else and just got satisfied by the loader accidentally. Which leads to the question: What happened during the build? I guess checking Ubuntu package build logs for the final link step is not enough as the linker doesn't list what symbol a satisfied by which lib and therefore causing a DT_NEEDED entry.