Use prebuilt 'as' for building Linux kernel module.

Due to how the Linux Makefile works we do this by setting LD, from
which it figures out the GCC toolchain directory to pass to Clang.

We also need to set a bunch of other tools to be used when `make
update-prebuilts` builds the entire kernel.

Bug: 132428451
Change-Id: I7af2051f80531934e730d90d0dd7e924e4a60724
diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile
index 2edda7e..1eb6b2d 100644
--- a/build/docker/Dockerfile
+++ b/build/docker/Dockerfile
@@ -26,7 +26,6 @@
 RUN 	apt-get update \
 	&& apt-get install -y \
 		bc                             `# for Linux headers` \
-		binutils-aarch64-linux-gnu \
 		bison \
 		build-essential \
 		cpio \
diff --git a/build/linux/linux.gni b/build/linux/linux.gni
index de0f8a3..5712932 100644
--- a/build/linux/linux.gni
+++ b/build/linux/linux.gni
@@ -63,6 +63,15 @@
 
     # TODO: Build with toolchain cc instead of a hardcoded one.
     "CC=" + rebase_path("//prebuilts/linux-x64/clang/bin/clang"),
+    "LD=" +
+        rebase_path("//prebuilts/linux-x64/gcc/bin/aarch64-linux-android-ld"),
+    "AR=" +
+        rebase_path("//prebuilts/linux-x64/gcc/bin/aarch64-linux-android-ar"),
+    "NM=" + rebase_path("//prebuilts/linux-x64/clang/bin/llvm-nm"),
+    "OBJCOPY=" + rebase_path(
+            "//prebuilts/linux-x64/gcc/bin/aarch64-linux-android-objcopy"),
+    "OBJDUMP=" + rebase_path("//prebuilts/linux-x64/clang/bin/llvm-objdump"),
+    "STRIP=" + rebase_path("//prebuilts/linux-x64/clang/bin/llvm-strip"),
     "ARCH=arm64",
     "CROSS_COMPILE=aarch64-linux-gnu-",
 
@@ -150,6 +159,15 @@
       "O=" +
           rebase_path(get_label_info(invoker.kernel_target, "target_out_dir")),
       "CC=" + rebase_path("//prebuilts/linux-x64/clang/bin/clang"),
+      "LD=" +
+          rebase_path("//prebuilts/linux-x64/gcc/bin/aarch64-linux-android-ld"),
+      "AR=" +
+          rebase_path("//prebuilts/linux-x64/gcc/bin/aarch64-linux-android-ar"),
+      "NM=" + rebase_path("//prebuilts/linux-x64/clang/bin/llvm-nm"),
+      "OBJCOPY=" + rebase_path(
+              "//prebuilts/linux-x64/gcc/bin/aarch64-linux-android-objcopy"),
+      "OBJDUMP=" + rebase_path("//prebuilts/linux-x64/clang/bin/llvm-objdump"),
+      "STRIP=" + rebase_path("//prebuilts/linux-x64/clang/bin/llvm-strip"),
       "ARCH=arm64",
       "CROSS_COMPILE=aarch64-linux-gnu-",
     ]
diff --git a/docs/GettingStarted.md b/docs/GettingStarted.md
index af17b0e..8f4d920 100644
--- a/docs/GettingStarted.md
+++ b/docs/GettingStarted.md
@@ -22,7 +22,7 @@
 Install prerequisites:
 
 ```shell
-sudo apt install make binutils-aarch64-linux-gnu libssl-dev flex bison
+sudo apt install make libssl-dev flex bison
 ```
 
 By default, the hypervisor is built with clang for a few target platforms along
diff --git a/prebuilts b/prebuilts
index 80621bb..52c2969 160000
--- a/prebuilts
+++ b/prebuilts
@@ -1 +1 @@
-Subproject commit 80621bb84d78cda9aab9799d6afd5eeb8cf5e647
+Subproject commit 52c2969f621c443130e93da7ae16eea8d8fe620b