Bug #1: triples like armv7-pc-linux-musl uses wrong linker name ld-musl-armv7.so.1; the right name should be ld-musl-arm.so.1, disregarding the subarch field.
Bug #2: when compiler option -mhard-float is used, we should use the "hardfloat" linker, no matter whether the triple itself mentions "hardfloat".
This is an early return, no need for brackets not the "else" below. Ex: