Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f8753c6 authored by Dimitry Ivanov's avatar Dimitry Ivanov Committed by Gerrit Code Review
Browse files

Merge "Add PreloadPublicNativeLibraries function"

parents d458730b 6f800229
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -25,6 +25,9 @@

namespace android {

__attribute__((visibility("default")))
void PreloadPublicNativeLibraries();

__attribute__((visibility("default")))
void* OpenNativeLibrary(JNIEnv* env, int32_t target_sdk_version, const char* path,
                        jobject class_loader, bool is_shared, jstring library_path,
+8 −4
Original line number Diff line number Diff line
@@ -57,9 +57,7 @@ static const char* kPublicNativeLibraries = "libandroid.so:"

class LibraryNamespaces {
 public:
  LibraryNamespaces() : initialized_(false) {
    PreloadPublicLibraries();
  }
  LibraryNamespaces() : initialized_(false) { }

  android_namespace_t* GetOrCreate(JNIEnv* env, jobject class_loader,
                                   bool is_shared,
@@ -111,7 +109,6 @@ class LibraryNamespaces {
    return it != namespaces_.end() ? it->second : nullptr;
  }

 private:
  void PreloadPublicLibraries() {
    // android_init_namespaces() expects all the public libraries
    // to be loaded so that they can be found by soname alone.
@@ -121,6 +118,7 @@ class LibraryNamespaces {
    }
  }

 private:
  bool InitPublicNamespace(const char* library_path) {
    // Some apps call dlopen from generated code unknown to linker in which
    // case linker uses anonymous namespace. See b/25844435 for details.
@@ -139,6 +137,12 @@ class LibraryNamespaces {
static LibraryNamespaces* g_namespaces = new LibraryNamespaces;
#endif

void PreloadPublicNativeLibraries() {
#if defined(__ANDROID__)
  g_namespaces->PreloadPublicLibraries();
#endif
}


void* OpenNativeLibrary(JNIEnv* env, int32_t target_sdk_version, const char* path,
                        jobject class_loader, bool is_shared, jstring java_library_path,