| Index: tools/generate_library_loader/generate_library_loader.py
|
| diff --git a/tools/generate_library_loader/generate_library_loader.py b/tools/generate_library_loader/generate_library_loader.py
|
| index 866e005547da72d3598dace7aa01072440b4322a..ebf0ab11a105c20a08c4aec871289a37f1268c08 100755
|
| --- a/tools/generate_library_loader/generate_library_loader.py
|
| +++ b/tools/generate_library_loader/generate_library_loader.py
|
| @@ -31,18 +31,13 @@ HEADER_TEMPLATE = """// This is generated file. Do not modify directly.
|
|
|
| #include <string>
|
|
|
| -#include "base/basictypes.h"
|
| -#include "base/compiler_specific.h"
|
| -#if defined(%(unique_prefix)s_DLOPEN)
|
| -#include "base/native_library.h"
|
| -#endif
|
| -
|
| class %(class_name)s {
|
| public:
|
| %(class_name)s();
|
| ~%(class_name)s();
|
|
|
| - bool Load(const std::string& library_name) WARN_UNUSED_RESULT;
|
| + bool Load(const std::string& library_name)
|
| + __attribute__((warn_unused_result));
|
|
|
| bool loaded() const { return loaded_; }
|
|
|
| @@ -52,12 +47,14 @@ class %(class_name)s {
|
| void CleanUp(bool unload);
|
|
|
| #if defined(%(unique_prefix)s_DLOPEN)
|
| - base::NativeLibrary library_;
|
| + void* library_;
|
| #endif
|
|
|
| bool loaded_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(%(class_name)s);
|
| + // Disallow copy constructor and assignment operator.
|
| + %(class_name)s(const %(class_name)s&);
|
| + void operator=(const %(class_name)s&);
|
| };
|
|
|
| #endif // %(unique_prefix)s
|
| @@ -73,6 +70,8 @@ IMPL_TEMPLATE = """// This is generated file. Do not modify directly.
|
|
|
| #include "%(generated_header_name)s"
|
|
|
| +#include <dlfcn.h>
|
| +
|
| // Put these sanity checks here so that they fire at most once
|
| // (to avoid cluttering the build output).
|
| #if !defined(%(unique_prefix)s_DLOPEN) && !defined(%(unique_prefix)s_DT_NEEDED)
|
| @@ -82,9 +81,6 @@ IMPL_TEMPLATE = """// This is generated file. Do not modify directly.
|
| #error both %(unique_prefix)s_DLOPEN and %(unique_prefix)s_DT_NEEDED defined
|
| #endif
|
|
|
| -#include "base/files/file_path.h"
|
| -#include "base/logging.h"
|
| -
|
| %(class_name)s::%(class_name)s() : loaded_(false) {
|
| }
|
|
|
| @@ -93,13 +89,11 @@ IMPL_TEMPLATE = """// This is generated file. Do not modify directly.
|
| }
|
|
|
| bool %(class_name)s::Load(const std::string& library_name) {
|
| - if (loaded_) {
|
| - NOTREACHED();
|
| + if (loaded_)
|
| return false;
|
| - }
|
|
|
| #if defined(%(unique_prefix)s_DLOPEN)
|
| - library_ = base::LoadNativeLibrary(base::FilePath(library_name), NULL);
|
| + library_ = dlopen(library_name.c_str(), RTLD_LAZY);
|
| if (!library_)
|
| return false;
|
| #endif
|
| @@ -113,7 +107,7 @@ bool %(class_name)s::Load(const std::string& library_name) {
|
| void %(class_name)s::CleanUp(bool unload) {
|
| #if defined(%(unique_prefix)s_DLOPEN)
|
| if (unload) {
|
| - base::UnloadNativeLibrary(library_);
|
| + dlclose(library_);
|
| library_ = NULL;
|
| }
|
| #endif
|
| @@ -126,8 +120,7 @@ IMPL_MEMBER_INIT_TEMPLATE = """
|
| #if defined(%(unique_prefix)s_DLOPEN)
|
| %(function_name)s =
|
| reinterpret_cast<typeof(this->%(function_name)s)>(
|
| - base::GetFunctionPointerFromNativeLibrary(
|
| - library_, "%(function_name)s"));
|
| + dlsym(library_, "%(function_name)s"));
|
| #endif
|
| #if defined(%(unique_prefix)s_DT_NEEDED)
|
| %(function_name)s = &::%(function_name)s;
|
|
|