Arm32 dynamic function dispatch

Test: Run bionic unit test.
Test: Use gdb to make sure the right function is selected.

Change-Id: I34ccd83d472c13993f75672b1aac2b2eae65c499
diff --git a/libc/arch-arm/denver/bionic/memcpy.S b/libc/arch-arm/denver/bionic/memcpy.S
index f082542..5edee1e 100644
--- a/libc/arch-arm/denver/bionic/memcpy.S
+++ b/libc/arch-arm/denver/bionic/memcpy.S
@@ -65,14 +65,14 @@
         // arch. The code generated is exactly the same.
         .arch armv7-a
 
-ENTRY(__memcpy)
+ENTRY(__memcpy_denver)
         pld     [r1, #64]
         push    {r0, lr}
         .cfi_def_cfa_offset 8
         .cfi_rel_offset r0, 0
         .cfi_rel_offset lr, 4
-END(__memcpy)
+END(__memcpy_denver)
 
-#define MEMCPY_BASE         __memcpy_base
-#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned
+#define MEMCPY_BASE         __memcpy_base_denver
+#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned_denver
 #include "memcpy_base.S"
diff --git a/libc/arch-arm/denver/bionic/memmove.S b/libc/arch-arm/denver/bionic/memmove.S
index 74d2b31..13c90ef 100644
--- a/libc/arch-arm/denver/bionic/memmove.S
+++ b/libc/arch-arm/denver/bionic/memmove.S
@@ -29,6 +29,14 @@
 
 #include <private/bionic_asm.h>
 
+#ifndef MEMMOVE
+# define MEMMOVE memmove_denver
+#endif
+
+#ifndef MEMCPY
+# define MEMCPY __memcpy_denver
+#endif
+
         .text
         .syntax unified
         .fpu    neon
@@ -40,7 +48,7 @@
 #define PREFETCH_DISTANCE_MID   (CACHE_LINE_SIZE*4)
 #define PREFETCH_DISTANCE_FAR   (CACHE_LINE_SIZE*16)
 
-ENTRY(memmove)
+ENTRY(MEMMOVE)
         cmp         r2, #0
         cmpne       r0, r1
         bxeq        lr
@@ -50,7 +58,7 @@
         bhi         .L_reversed_memcpy
 
 .L_jump_to_memcpy:
-        b           __memcpy
+        b           MEMCPY
 
 .L_reversed_memcpy:
         push        {r0, lr}
@@ -277,6 +285,4 @@
 
         pop         {r0, pc}
 
-END(memmove)
-
-ALIAS_SYMBOL(memcpy, memmove)
+END(MEMMOVE)
diff --git a/libc/arch-arm/denver/bionic/memset.S b/libc/arch-arm/denver/bionic/memset.S
index 88ffe5c..198ecf3 100644
--- a/libc/arch-arm/denver/bionic/memset.S
+++ b/libc/arch-arm/denver/bionic/memset.S
@@ -39,7 +39,7 @@
         .fpu        neon
         .syntax     unified
 
-ENTRY(__memset_chk)
+ENTRY(__memset_chk_denver)
         cmp         r2, r3
         bls         memset
 
@@ -49,9 +49,9 @@
         .cfi_rel_offset lr, 0
 
         bl          __memset_chk_fail
-END(__memset_chk)
+END(__memset_chk_denver)
 
-ENTRY(memset)
+ENTRY(memset_denver)
         pldw        [r0]
         mov         r3, r0
 
@@ -183,4 +183,4 @@
         strbcs      r1, [r3]
 2:
         bx          lr
-END(memset)
+END(memset_denver)