Introducing linker namespaces

Bug: http://b/22548808
Change-Id: Ia3af3c0a167f1d16447a3d83bb045d143319b1e1
diff --git a/libdl/libdl.arm.map b/libdl/libdl.arm.map
index 9e58704..3417f99 100644
--- a/libdl/libdl.arm.map
+++ b/libdl/libdl.arm.map
@@ -14,10 +14,16 @@
     *;
 };
 
+LIBC_N {
+  global:
+    android_init_public_namespace;
+    android_create_namespace;
+} LIBC;
+
 LIBC_PRIVATE {
   global:
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
     android_update_LD_LIBRARY_PATH;
-} LIBC;
+} LIBC_N;
diff --git a/libdl/libdl.arm64.map b/libdl/libdl.arm64.map
index e83b501..b7e9aec 100644
--- a/libdl/libdl.arm64.map
+++ b/libdl/libdl.arm64.map
@@ -13,10 +13,16 @@
     *;
 };
 
+LIBC_N {
+  global:
+    android_init_public_namespace;
+    android_create_namespace;
+} LIBC;
+
 LIBC_PRIVATE {
   global:
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
     android_update_LD_LIBRARY_PATH;
-} LIBC;
+} LIBC_N;
diff --git a/libdl/libdl.c b/libdl/libdl.c
index 9a858a3..3cde5eb 100644
--- a/libdl/libdl.c
+++ b/libdl/libdl.c
@@ -33,12 +33,26 @@
 _Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr pc __unused, int* pcount __unused) { return 0; }
 #endif
 
-int dl_iterate_phdr(int (*cb)(struct dl_phdr_info* info, size_t size, void* data) __unused, void* data __unused) { return 0; }
+int dl_iterate_phdr(int (*cb)(struct dl_phdr_info* info, size_t size, void* data) __unused,
+                    void* data __unused) {
+  return 0;
+}
 
 void android_get_LD_LIBRARY_PATH(char* buffer __unused, size_t buffer_size __unused) { }
 void android_update_LD_LIBRARY_PATH(const char* ld_library_path __unused) { }
 
-void* android_dlopen_ext(const char* filename __unused, int flag __unused, const android_dlextinfo* extinfo __unused) { return 0; }
+void* android_dlopen_ext(const char* filename __unused, int flag __unused,
+                         const android_dlextinfo* extinfo __unused) {
+  return 0;
+}
 
 void android_set_application_target_sdk_version(uint32_t target __unused) { }
 uint32_t android_get_application_target_sdk_version() { return 0; }
+
+bool android_init_public_namespace(const char* paths __unused) { return false; }
+struct android_namespace_t* android_create_namespace(const char* name __unused,
+                                                     const char* ld_library_path __unused,
+                                                     const char* default_library_path __unused,
+                                                     bool isolated __unused) {
+  return 0;
+}
diff --git a/libdl/libdl.map.txt b/libdl/libdl.map.txt
index f71f40b..421d825 100644
--- a/libdl/libdl.map.txt
+++ b/libdl/libdl.map.txt
@@ -28,10 +28,16 @@
     *;
 };
 
+LIBC_N {
+  global:
+    android_init_public_namespace;
+    android_create_namespace;
+} LIBC;
+
 LIBC_PRIVATE {
   global:
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
     android_update_LD_LIBRARY_PATH;
-} LIBC;
+} LIBC_N;
diff --git a/libdl/libdl.mips.map b/libdl/libdl.mips.map
index e83b501..b7e9aec 100644
--- a/libdl/libdl.mips.map
+++ b/libdl/libdl.mips.map
@@ -13,10 +13,16 @@
     *;
 };
 
+LIBC_N {
+  global:
+    android_init_public_namespace;
+    android_create_namespace;
+} LIBC;
+
 LIBC_PRIVATE {
   global:
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
     android_update_LD_LIBRARY_PATH;
-} LIBC;
+} LIBC_N;
diff --git a/libdl/libdl.mips64.map b/libdl/libdl.mips64.map
index e83b501..b7e9aec 100644
--- a/libdl/libdl.mips64.map
+++ b/libdl/libdl.mips64.map
@@ -13,10 +13,16 @@
     *;
 };
 
+LIBC_N {
+  global:
+    android_init_public_namespace;
+    android_create_namespace;
+} LIBC;
+
 LIBC_PRIVATE {
   global:
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
     android_update_LD_LIBRARY_PATH;
-} LIBC;
+} LIBC_N;
diff --git a/libdl/libdl.x86.map b/libdl/libdl.x86.map
index e83b501..b7e9aec 100644
--- a/libdl/libdl.x86.map
+++ b/libdl/libdl.x86.map
@@ -13,10 +13,16 @@
     *;
 };
 
+LIBC_N {
+  global:
+    android_init_public_namespace;
+    android_create_namespace;
+} LIBC;
+
 LIBC_PRIVATE {
   global:
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
     android_update_LD_LIBRARY_PATH;
-} LIBC;
+} LIBC_N;
diff --git a/libdl/libdl.x86_64.map b/libdl/libdl.x86_64.map
index e83b501..b7e9aec 100644
--- a/libdl/libdl.x86_64.map
+++ b/libdl/libdl.x86_64.map
@@ -13,10 +13,16 @@
     *;
 };
 
+LIBC_N {
+  global:
+    android_init_public_namespace;
+    android_create_namespace;
+} LIBC;
+
 LIBC_PRIVATE {
   global:
     android_get_application_target_sdk_version;
     android_set_application_target_sdk_version;
     android_get_LD_LIBRARY_PATH;
     android_update_LD_LIBRARY_PATH;
-} LIBC;
+} LIBC_N;