Merge "Switch to the arm-optimized-routines memcpy() and memmove()."
diff --git a/tests/Android.bp b/tests/Android.bp
index 71be058..9c6aec5 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -105,6 +105,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-rw_load_segment.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-rw_load_segment.so"],
         },
@@ -128,6 +131,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-unaligned_shdr_offset.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-unaligned_shdr_offset.so"],
         },
@@ -151,6 +157,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shentsize.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shentsize.so"],
         },
@@ -174,6 +183,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shstrndx.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shstrndx.so"],
         },
@@ -197,6 +209,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-empty_shdr_table.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-empty_shdr_table.so"],
         },
@@ -220,6 +235,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_offset.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_offset.so"],
         },
@@ -243,6 +261,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_content.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_content.so"],
         },
@@ -266,6 +287,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-textrels.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels.so"],
         },
@@ -289,6 +313,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels2.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels2.so"],
         },
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index c5d1218..939c092 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -1646,6 +1646,9 @@
 }
 
 TEST(dlfcn, dlopen_invalid_local_tls) {
+#if defined(__riscv)
+  // This is a test for bad gold behavior, and gold doesn't support riscv64.
+#else
   const std::string libpath = GetPrebuiltElfDir() + "/libtest_invalid-local-tls.so";
 
   void* handle = dlopen(libpath.c_str(), RTLD_NOW);
@@ -1658,6 +1661,7 @@
   std::string expected_dlerror = std::string("dlopen failed: unexpected TLS reference to ") +
                                  referent + " in \"" + libpath + "\"";
   ASSERT_SUBSTR(expected_dlerror.c_str(), dlerror());
+#endif
 }
 
 TEST(dlfcn, dlopen_df_1_global) {
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_empty.so b/tests/prebuilt-elf-files/riscv64/libtest_empty.so
new file mode 100755
index 0000000..f3218f7
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_empty.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so
new file mode 100755
index 0000000..9f15ff9
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so
new file mode 100755
index 0000000..32db3b9
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so
new file mode 100755
index 0000000..5ee9aab
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so
new file mode 100755
index 0000000..664d3df
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so
new file mode 100755
index 0000000..3e773c0
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so
new file mode 100755
index 0000000..d3bcd9a
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so
new file mode 100755
index 0000000..956dca8
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so
new file mode 100755
index 0000000..e663dae
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so
new file mode 100755
index 0000000..294f854
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so
Binary files differ