Merge "Add locale aware APIs."
diff --git a/benchmarks/property_benchmark.cpp b/benchmarks/property_benchmark.cpp
index 6d17ec7..0b0c47f 100644
--- a/benchmarks/property_benchmark.cpp
+++ b/benchmarks/property_benchmark.cpp
@@ -156,3 +156,30 @@
     StopBenchmarkTiming();
 }
 BENCHMARK(BM_property_find)->TEST_NUM_PROPS;
+
+static void BM_property_read(int iters, int nprops)
+{
+    StopBenchmarkTiming();
+
+    LocalPropertyTestState pa(nprops);
+
+    if (!pa.valid)
+        return;
+
+    srandom(iters * nprops);
+    const prop_info** pinfo = new const prop_info*[iters];
+    char propvalue[PROP_VALUE_MAX];
+
+    for (int i = 0; i < iters; i++) {
+        pinfo[i] = __system_property_find(pa.names[random() % nprops]);
+    }
+
+    StartBenchmarkTiming();
+    for (int i = 0; i < iters; i++) {
+        __system_property_read(pinfo[i], 0, propvalue);
+    }
+    StopBenchmarkTiming();
+
+    delete[] pinfo;
+}
+BENCHMARK(BM_property_read)->TEST_NUM_PROPS;
diff --git a/linker/arch/arm/begin.S b/linker/arch/arm/begin.S
index e259902..8cb599b 100644
--- a/linker/arch/arm/begin.S
+++ b/linker/arch/arm/begin.S
@@ -26,20 +26,12 @@
  * SUCH DAMAGE.
  */
 
-	.text
-	.align 4
-	.type _start,#function
-	.globl _start
+#include <private/bionic_asm.h>
 
-_start:
-	mov	r0, sp
-	mov	r1, #0
-	bl	__linker_init
+ENTRY(_start)
+  mov r0, sp
+  bl __linker_init
 
-	/* linker init returns the _entry address in the main image */
-	mov	pc, r0
-
-	.section .ctors, "wa"
-	.globl __CTOR_LIST__
-__CTOR_LIST__:
-	.long -1
+  /* linker init returns the _entry address in the main image */
+  mov pc, r0
+END(_start)
diff --git a/linker/arch/arm64/begin.S b/linker/arch/arm64/begin.S
index c96ede7..a6ea583 100644
--- a/linker/arch/arm64/begin.S
+++ b/linker/arch/arm64/begin.S
@@ -30,8 +30,7 @@
 
 ENTRY(_start)
   mov x0, sp
-  mov x1, xzr
-  bl  __linker_init
+  bl __linker_init
 
   /* linker init returns the _entry address in the main image */
   br x0
diff --git a/linker/arch/mips/begin.S b/linker/arch/mips/begin.S
index b782947..4a855e6 100644
--- a/linker/arch/mips/begin.S
+++ b/linker/arch/mips/begin.S
@@ -100,8 +100,3 @@
     addu    $sp, 4*4        /* restore sp */
     j    $t9
     .end    __start
-
-    .section .ctors, "wa"
-    .globl __CTOR_LIST__
-__CTOR_LIST__:
-    .long -1
diff --git a/linker/arch/mips64/begin.S b/linker/arch/mips64/begin.S
index 9e741c0..6827a2c 100644
--- a/linker/arch/mips64/begin.S
+++ b/linker/arch/mips64/begin.S
@@ -120,9 +120,3 @@
     move	t9, v0
     j		t9
     .end    __start
-
-/* FIXME:Is this still needed? */
-    .section .ctors, "wa"
-    .globl __CTOR_LIST__
-__CTOR_LIST__:
-    .long -1
diff --git a/linker/arch/x86_64/begin.S b/linker/arch/x86_64/begin.S
index aff4660..7945a31 100644
--- a/linker/arch/x86_64/begin.S
+++ b/linker/arch/x86_64/begin.S
@@ -29,7 +29,6 @@
 #include <private/bionic_asm.h>
 
 ENTRY(_start)
-  /* Pass elfdata to __linker_init. */
   mov %rsp, %rdi
   call __linker_init