Index: base/native_library_posix.cc |
diff --git a/base/native_library_posix.cc b/base/native_library_posix.cc |
index 2dc434b7be25af2395a80b313defa3e8be08616f..00bd7238b57724fd85e905a7f53019a831505f5b 100644 |
--- a/base/native_library_posix.cc |
+++ b/base/native_library_posix.cc |
@@ -19,16 +19,22 @@ std::string NativeLibraryLoadError::ToString() const { |
} |
// static |
-NativeLibrary LoadNativeLibrary(const FilePath& library_path, |
- NativeLibraryLoadError* error) { |
+NativeLibrary LoadNativeLibraryWithOptions(const FilePath& library_path, |
+ const NativeLibraryOptions& options, |
+ NativeLibraryLoadError* error) { |
// dlopen() opens the file off disk. |
ThreadRestrictions::AssertIOAllowed(); |
- // We deliberately do not use RTLD_DEEPBIND. For the history why, please |
- // refer to the bug tracker. Some useful bug reports to read include: |
+ // We deliberately do not use RTLD_DEEPBIND by default. For the history why, |
+ // please refer to the bug tracker. Some useful bug reports to read include: |
// http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892, |
// and http://crbug.com/40794. |
- void* dl = dlopen(library_path.value().c_str(), RTLD_LAZY); |
+ int flags = RTLD_LAZY; |
+#if !defined(OS_ANDROID) |
+ if (options.prefer_own_symbols) |
+ flags |= RTLD_DEEPBIND; |
Primiano Tucci (use gerrit)
2016/08/24 22:14:09
are you sue you don't need also RTLD_GLOBAL?
Can
Ken Rockot(use gerrit already)
2016/08/24 23:23:57
We may want this behavior but it might be worth ke
|
+#endif |
+ void* dl = dlopen(library_path.value().c_str(), flags); |
if (!dl && error) |
error->message = dlerror(); |