xcompile: only enforce BFD linker on x86

The ARM linker scripts work fine with the gold linker.
This also requires to enhance the LINKER_SUFFIX variable
with a platform suffix so that it can be different on
ARMv7 and x86

BUG=none
BRANCH=none
TEST=boot tested on pit

Change-Id: I7d3b57991b1e40d0305be3fc4bc63d322392d98e
Signed-off-by: Stefan Reinauer <reinauer@google.com>
Reviewed-on: https://chromium-review.googlesource.com/168771
Reviewed-by: Ronald Minnich <rminnich@chromium.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
diff --git a/util/xcompile/xcompile b/util/xcompile/xcompile
index ff12217..43b98e3 100644
--- a/util/xcompile/xcompile
+++ b/util/xcompile/xcompile
@@ -94,10 +94,6 @@
 	testcc "$CC"   "$CFLAGS -Wno-unused-but-set-variable " &&
 		CFLAGS="$CFLAGS -Wno-unused-but-set-variable "
 
-	# Use bfd linker instead of gold if available:
-	testcc "$CC"   "$CFLAGS -fuse-ld=bfd" &&
-		CFLAGS="$CFLAGS -fuse-ld=bfd" && LINKER_SUFFIX='.bfd'
-
 	testcc "$CC"   "$CFLAGS -Wa,--divide" &&
 		CFLAGS="$CFLAGS -Wa,--divide"
 	testcc "$CC"   "$CFLAGS -fno-stack-protector"&&
@@ -106,10 +102,15 @@
 		CFLAGS="$CFLAGS -Wl,--build-id=none"
 
 	case "$architecture" in
+	x86 )
+		# Use bfd linker instead of gold if available:
+		testcc "$CC"   "$CFLAGS -fuse-ld=bfd" &&
+			CFLAGS="$CFLAGS -fuse-ld=bfd" && LINKER_SUFFIX_i386='.bfd'
+		;;
 	armv7 )
 		ARMFLAGS=""
-		testcc "$CC" "$CFLAGS $ARMFLAGS"&&CFLAGS="$CFLAGS $ARMFLAGS"
-			;;
+		testcc "$CC" "$CFLAGS $ARMFLAGS" && CFLAGS="$CFLAGS $ARMFLAGS"
+		;;
 	esac
 }
 
@@ -118,7 +119,7 @@
 # elf${TWIDTH}-${TBFDARCH} toolchain (${GCCPREFIX}gcc)
 CC_${TARCH}:=${GCCPREFIX}gcc ${CFLAGS}
 AS_${TARCH}:=${GCCPREFIX}as ${ASFLAGS}
-LD_${TARCH}:=${GCCPREFIX}ld${LINKER_SUFFIX} ${LDFLAGS}
+LD_${TARCH}:=${GCCPREFIX}ld$(eval echo \${LINKER_SUFFIX_${TARCH}}) ${LDFLAGS}
 NM_${TARCH}:=${GCCPREFIX}nm
 OBJCOPY_${TARCH}:=${GCCPREFIX}objcopy
 OBJDUMP_${TARCH}:=${GCCPREFIX}objdump