Implement getTimeRecord natively in Win32, properly conditionalize the
[oota-llvm.git] / lib / Support / PluginLoader.cpp
index b973b16a508cecf7aa5d334b92d6156146774620..20bdce494962d21cf1cd57e1733aaa4694d0c57a 100644 (file)
@@ -1,4 +1,11 @@
 //===-- PluginLoader.cpp - Implement -load command line option ------------===//
+// 
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
 //
 // This file implements the -load <plugin> command line option processor.  When
 // linked into a program, this new command line option is available that allows
 //
 //===----------------------------------------------------------------------===//
 
+#include "Support/DynamicLinker.h"
 #include "Support/CommandLine.h"
-#include "Config/dlfcn.h"
-#include "Config/link.h"
+#include "Config/config.h"
 #include <iostream>
+using namespace llvm;
 
 namespace {
   struct PluginLoader {
     void operator=(const std::string &Filename) {
-      if (dlopen(Filename.c_str(), RTLD_NOW) == 0)
-        std::cerr << "Error opening '" << Filename << "': " << dlerror()
-                  << "\n  -load request ignored.\n";
+      std::string ErrorMessage;
+      if (LinkDynamicObject (Filename.c_str (), &ErrorMessage))
+        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.so"),
+LoadOpt("load", cl::ZeroOrMore, cl::value_desc("plugin" SHLIBEXT),
         cl::desc("Load the specified plugin"));