Update clang toolchain.

Updates to r339409 and required the linker script to keep sections in
positions that don't distrupt the entry code.

Change-Id: I38d8a13b6d7586ac8cab0b3b8e82b8df16d0aa10
diff --git a/build/image/image.ld b/build/image/image.ld
index cb32f98..cede756 100644
--- a/build/image/image.ld
+++ b/build/image/image.ld
@@ -44,21 +44,35 @@
 	.rodata : {
 		*(.rodata.*)
 	}
-	/* .rela contains Elf64_Rela entries which contain 8-byte fields so
-	 * should be 8-byte aligned. */
+	/*
+	 * .rela contains Elf64_Rela entries which contain 8-byte fields so
+	 * should be 8-byte aligned.
+	 */
 	. = ALIGN(8);
 	rela_begin = .;
 	.rela : {
 		*(.rela.*)
 	}
 	rela_end = .;
-	/* The hftest framework adds test descriptors in the .hftest section
+	/*
+	 * The linker doesn't allow .dynsym and .dynstr to be discarded, see
+	 * /DISCARD/ below, so make sure they don't get in the way.
+	 */
+	.dynsym : {
+		*(.dynsym.*)
+	}
+	.dynstr : {
+		*(.dynstr.*)
+	}
+	/*
+	 * The hftest framework adds test descriptors in the .hftest section
 	 * which is examined at runtime to discover the available tests. The
 	 * input sections are named after the test they include so sorting here
 	 * means they are stored sorted by the name of the test suite and then
 	 * by test case names. To ensure tests aren't accidentally included in
 	 * images that are not meant to have them, the assertion checks for a
-	 * marker to signal tests are allowed. */
+	 * marker to signal tests are allowed.
+	 */
 	. = ALIGN(8);
 	hftest_begin = .;
 	.hftest : {
@@ -79,11 +93,20 @@
 	.data : {
 		*(.data)
 	}
-	/* Global offset table used for relocations. This is where relocation
-	 * fix-ups are applied. */
+	/*
+	 * Global offset table used for relocations. This is where relocation
+	 * fix-ups are applied.
+	 */
 	.got : {
 		*(.got.*)
 	}
+	/*
+	 * The linker doesn't allow .dynamic to be discarded, see /DISCARD/
+	 * below, so make sure it doesn't get in the way.
+	 */
+	.dynamic : {
+		*(.dynamic.*)
+	}
 	/* The entry point code assumes that .bss is 16-byte aligned. */
 	. = ALIGN(16);
 	bss_begin = .;
@@ -118,7 +141,9 @@
 	. = ALIGN(4096);
 	bin_end = .;
 
-	/* Note the size of the image. This includes everything up to the .bss
-	 * as that is initialized to zero by the entry code. */
+	/*
+	 * Note the size of the image. This includes everything up to the .bss
+	 * as that is initialized to zero by the entry code.
+	 */
 	image_size = ABSOLUTE(bss_begin - ORIGIN_ADDRESS);
 }
diff --git a/prebuilts b/prebuilts
index 5e1ddfa..cdfcccc 160000
--- a/prebuilts
+++ b/prebuilts
@@ -1 +1 @@
-Subproject commit 5e1ddfae19f7052e9e27b1bf2c2d8ea3c9bcf5b0
+Subproject commit cdfccccb1ea3e050b07dc59f87e214ee979da2ae