Implement cast fp -> bool
[oota-llvm.git] / lib / Support / PluginLoader.cpp
index c2e4e89813a85a63725a284387d158b16540758b..1e67b94f69dc9bec4e7a477921939ffb600865f7 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 <dlfcn.h>
-#include <link.h>
+#include "Config/dlfcn.h"
+#include "Config/link.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<string> >
-LoadOpt("load", cl::ZeroOrMore, cl::value_desc("plugin.so"),
+static cl::opt<PluginLoader, false, cl::parser<std::string> >
+LoadOpt("load", cl::ZeroOrMore, cl::value_desc("plugin" SHLIBEXT),
         cl::desc("Load the specified plugin"));