[linux-x86] GCC 4.9 aarch64 prebuilt based on 051414 snapshot.

Change-Id: I66a5aea973216f918580f8dfcc710c0d19a023e8
diff --git a/aarch64-linux-android/lib/ldscripts/aarch64linux32.xu b/aarch64-linux-android/lib/ldscripts/aarch64linux32.xu
index 10b1a3e..3e7f010 100644
--- a/aarch64-linux-android/lib/ldscripts/aarch64linux32.xu
+++ b/aarch64-linux-android/lib/ldscripts/aarch64linux32.xu
@@ -59,8 +59,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
-  /* Adjust the address for the data segment.  We want to adjust up to
-     the same address within the page on the next page up.  */
+  /* Adjust the address for the data segment.  For 32 bits we want to align
+  at exactly a page boundary to make life easier for apriori. */
   /* Exception handling  */
   .eh_frame     0 : ONLY_IF_RW { KEEP (*(.eh_frame)) }
   .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
@@ -68,6 +68,11 @@
   /* Thread Local Storage sections  */
   .tdata	0 : { *(.tdata) }
   .tbss		0 : { *(.tbss) }
+  /* Ensure the __preinit_array_start label is properly aligned.  We
+     could instead move the label definition inside the section, but
+     the linker would then create the section even if it turns out to
+     be empty, which isn't pretty.  */
+  . = ALIGN(32 / 8);
   .preinit_array   0 :
   {
     KEEP (*(.preinit_array))
@@ -89,9 +94,7 @@
    *(COMMON)
    /* Align here to ensure that the .bss section occupies space up to
       _end.  Align after .bss to ensure correct alignment even if the
-      .bss section disappears because there are no input sections.
-      FIXME: Why do we need it? When there is no .bss section, we don't
-      pad the .data section.  */
+      .bss section disappears because there are no input sections.  */
   }
   /* Stabs debugging sections.  */
   .stab          0 : { *(.stab) }