I've found the problem, it has nothing to do with cross-gcc. The issue lies with the native gcc 6.2 which has been configured with --enable-default-pie, which (at least on arm) breaks its ability to link any code produced by earlier compilers.
Bug#844780: gcc-6-arm-linux-gnueabihf: cross-compiled code fails to link on target with native gcc-6
- Bug#844780: gcc-6-arm-linux-gnueabihf: cross-compiled co... Matthijs van Duin
- Bug#844780: gcc-6-arm-linux-gnueabihf: cross-compil... Matthijs van Duin