[llvm-rtdyld] Fail early if we can't load dynamic libraries.
[oota-llvm.git] / tools / llvm-rtdyld / llvm-rtdyld.cpp
index 689fb101f9ce45bb3e71201e7581da9f689ef90e..97a9b28863e0d154505b522d575407b80aef86ad 100644 (file)
@@ -250,10 +250,9 @@ static void loadDylibs() {
     if (sys::fs::is_regular_file(Dylib)) {
       std::string ErrMsg;
       if (sys::DynamicLibrary::LoadLibraryPermanently(Dylib.c_str(), &ErrMsg))
-        llvm::errs() << "Error loading '" << Dylib << "': "
-                     << ErrMsg << "\n";
+        report_fatal_error("Error loading '" + Dylib + "': " + ErrMsg);
     } else
-      llvm::errs() << "Dylib not found: '" << Dylib << "'.\n";
+      report_fatal_error("Dylib not found: '" + Dylib + "'.");
   }
 }
 
@@ -610,19 +609,23 @@ static int linkAndVerify() {
 
   std::unique_ptr<MCSubtargetInfo> STI(
     TheTarget->createMCSubtargetInfo(TripleName, MCPU, ""));
-  assert(STI && "Unable to create subtarget info!");
+  if (!STI)
+    return Error("Unable to create subtarget info!");
 
   std::unique_ptr<MCRegisterInfo> MRI(TheTarget->createMCRegInfo(TripleName));
-  assert(MRI && "Unable to create target register info!");
+  if (!MRI)
+    return Error("Unable to create target register info!");
 
   std::unique_ptr<MCAsmInfo> MAI(TheTarget->createMCAsmInfo(*MRI, TripleName));
-  assert(MAI && "Unable to create target asm info!");
+  if (!MAI)
+    return Error("Unable to create target asm info!");
 
   MCContext Ctx(MAI.get(), MRI.get(), nullptr);
 
   std::unique_ptr<MCDisassembler> Disassembler(
     TheTarget->createMCDisassembler(*STI, Ctx));
-  assert(Disassembler && "Unable to create disassembler!");
+  if (!Disassembler)
+    return Error("Unable to create disassembler!");
 
   std::unique_ptr<MCInstrInfo> MII(TheTarget->createMCInstrInfo());