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-co... Matthijs van Duin
- Bug#844780: gcc-6-arm-linux-gnueabihf: cro... Matthijs van Duin
- Bug#844780: marked as done (gcc-6-arm-linu... Debian Bug Tracking System