Update PPC readme. Remove things that are done or aren't ppc specific
[oota-llvm.git] / lib / Support / PluginLoader.cpp
index 1e67b94f69dc9bec4e7a477921939ffb600865f7..39e3c0afa538216fa139ac0525497823f437cc87 100644 (file)
@@ -7,35 +7,29 @@
 // 
 //===----------------------------------------------------------------------===//
 //
-// This file implements the -load <plugin> command line option processor.  When
-// linked into a program, this new command line option is available that allows
-// users to load shared objects into the running program.
-//
-// Note that there are no symbols exported by the .o file generated for this
-// .cpp file.  Because of this, a program must link against support.o instead of
-// support.a: otherwise this translation unit will not be included.
+// This file implements the -load <plugin> command line option handler.
 //
 //===----------------------------------------------------------------------===//
 
-#include "Support/DynamicLinker.h"
-#include "Support/CommandLine.h"
-#include "Config/dlfcn.h"
-#include "Config/link.h"
+#define DONT_GET_PLUGIN_LOADER_OPTION
+#include "llvm/Support/PluginLoader.h"
+#include "llvm/System/DynamicLibrary.h"
 #include <iostream>
+
 using namespace llvm;
 
-namespace {
-  struct PluginLoader {
-    void operator=(const std::string &Filename) {
-      std::string ErrorMessage;
-      if (LinkDynamicObject (Filename.c_str (), &ErrorMessage))
-        std::cerr << "Error opening '" << Filename << "': " << ErrorMessage
-                  << "\n  -load request ignored.\n";   
+void PluginLoader::operator=(const std::string &Filename) {
+  std::string ErrorMessage;
+  try {
+    sys::DynamicLibrary::LoadLibraryPermanently(Filename.c_str());
+  } catch (const std::string& errmsg) {
+    if (errmsg.empty()) {
+      ErrorMessage = "Unknown";
+    } else {
+      ErrorMessage = errmsg;
     }
-  };
+  }
+  if (!ErrorMessage.empty())
+    std::cerr << "Error opening '" << Filename << "': " << ErrorMessage
+              << "\n  -load request ignored.\n";       
 }
-
-// This causes operator= above to be invoked for every -load option.
-static cl::opt<PluginLoader, false, cl::parser<std::string> >
-LoadOpt("load", cl::ZeroOrMore, cl::value_desc("plugin" SHLIBEXT),
-        cl::desc("Load the specified plugin"));