Sync linker with internal branch

This change includes dlwarning implementation and
the compatibility greylist for apps targeting pre-N.

Change-Id: Ibf02a07cc58cbbb1a5aef4ac34558c5d43e4305f
Test: Run bionic-unit-tests --gtest_filter=dl*:Dl*
diff --git a/libdl/libdl.arm.map b/libdl/libdl.arm.map
index 20efa9a..2cd49c5 100644
--- a/libdl/libdl.arm.map
+++ b/libdl/libdl.arm.map
@@ -21,6 +21,7 @@
 
 LIBC_PLATFORM {
   global:
+    android_dlwarning;
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
diff --git a/libdl/libdl.arm64.map b/libdl/libdl.arm64.map
index daf5a86..74e029c 100644
--- a/libdl/libdl.arm64.map
+++ b/libdl/libdl.arm64.map
@@ -20,6 +20,7 @@
 
 LIBC_PLATFORM {
   global:
+    android_dlwarning;
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
diff --git a/libdl/libdl.c b/libdl/libdl.c
index fa5237f..b62ee5c 100644
--- a/libdl/libdl.c
+++ b/libdl/libdl.c
@@ -69,3 +69,5 @@
                                                      const char* permitted_when_isolated_path __unused) {
   return 0;
 }
+
+void android_dlwarning(void* obj, void (*f)(void*, const char*)) { f(obj, 0); }
diff --git a/libdl/libdl.map.txt b/libdl/libdl.map.txt
index 79bced3..962692e 100644
--- a/libdl/libdl.map.txt
+++ b/libdl/libdl.map.txt
@@ -35,6 +35,7 @@
 
 LIBC_PLATFORM {
   global:
+    android_dlwarning;
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
diff --git a/libdl/libdl.mips.map b/libdl/libdl.mips.map
index daf5a86..74e029c 100644
--- a/libdl/libdl.mips.map
+++ b/libdl/libdl.mips.map
@@ -20,6 +20,7 @@
 
 LIBC_PLATFORM {
   global:
+    android_dlwarning;
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
diff --git a/libdl/libdl.mips64.map b/libdl/libdl.mips64.map
index daf5a86..74e029c 100644
--- a/libdl/libdl.mips64.map
+++ b/libdl/libdl.mips64.map
@@ -20,6 +20,7 @@
 
 LIBC_PLATFORM {
   global:
+    android_dlwarning;
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
diff --git a/libdl/libdl.x86.map b/libdl/libdl.x86.map
index daf5a86..74e029c 100644
--- a/libdl/libdl.x86.map
+++ b/libdl/libdl.x86.map
@@ -20,6 +20,7 @@
 
 LIBC_PLATFORM {
   global:
+    android_dlwarning;
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
diff --git a/libdl/libdl.x86_64.map b/libdl/libdl.x86_64.map
index daf5a86..74e029c 100644
--- a/libdl/libdl.x86_64.map
+++ b/libdl/libdl.x86_64.map
@@ -20,6 +20,7 @@
 
 LIBC_PLATFORM {
   global:
+    android_dlwarning;
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;