diff --git a/tools/lto-bugpoint/LTOBugPoint.cpp b/tools/lto-bugpoint/LTOBugPoint.cpp
index 83ed134..925ab9e 100644
--- a/tools/lto-bugpoint/LTOBugPoint.cpp
+++ b/tools/lto-bugpoint/LTOBugPoint.cpp
@@ -13,7 +13,12 @@
 //===----------------------------------------------------------------------===//
 
 #include "LTOBugPoint.h"
+#include "llvm/Support/SystemUtils.h"
+#include "llvm/System/Path.h"
+#include <iostream>
 
+/// LTOBugPoint -- Constructor. Popuate list of linker options and
+/// list of linker input files.
 LTOBugPoint::LTOBugPoint(std::istream &args, std::istream &ins) {
 
   // Read linker options. Order is important here.
@@ -26,3 +31,27 @@
   while(getline(ins, inFile))
     LinkerInputFiles.push_back(inFile);
 }
+
+/// findTroubleMakers - Find minimum set of input files that causes error
+/// identified by the script.
+bool
+LTOBugPoint::findTroubleMakers(llvm::SmallVector<std::string, 4> &TroubleMakers,
+			       std::string &Script) {
+
+  // First, build native object files set.
+  bool bitcodeFileSeen = false;
+  for(llvm::SmallVector<std::string, 16>::iterator I = LinkerInputFiles.begin(),
+	E = LinkerInputFiles.end(); I != E; ++I) {
+    std::string &path = *I;
+    if (llvm::sys::Path(path.c_str()).isBitcodeFile()) 
+      bitcodeFileSeen = true;
+  }
+
+  if (!bitcodeFileSeen) {
+    std::cerr << "lto-bugpoint: Error: Unable to help!"; 
+    std::cerr << " Need at least one input file that contains llvm bitcode\n";
+    return false;
+  }
+
+  return true;
+}
diff --git a/tools/lto-bugpoint/LTOBugPoint.h b/tools/lto-bugpoint/LTOBugPoint.h
index 57b99c1..b73b267 100644
--- a/tools/lto-bugpoint/LTOBugPoint.h
+++ b/tools/lto-bugpoint/LTOBugPoint.h
@@ -21,10 +21,22 @@
 
   LTOBugPoint(std::istream &args, std::istream &ins);
 
+  /// findTroubleMakers - Find minimum set of input files that causes error
+  /// identified by the script.
+  bool findTroubleMakers(llvm::SmallVector<std::string, 4> &TroubleMakers,
+			std::string &Script);
  private:
   /// LinkerInputFiles - This is a list of linker input files. Once populated
   /// this list is not modified.
   llvm::SmallVector<std::string, 16> LinkerInputFiles;
+
+  /// LinkerOptions - List of linker command line options.
   llvm::SmallVector<std::string, 16> LinkerOptions;
 
+  /// NativeInputFiles - This is a list of input files that are not llvm
+  /// bitcode files. The order in this list is important. The a file
+  /// in LinkerInputFiles at index 4 is a llvm bitcode file then the file
+  /// at index 4 in NativeInputFiles is corresponding native object file.
+  llvm::SmallVector<std::string, 16> NativeInputFiles;
+
 };
diff --git a/tools/lto-bugpoint/Makefile b/tools/lto-bugpoint/Makefile
index e7f8061..c63eb6b 100644
--- a/tools/lto-bugpoint/Makefile
+++ b/tools/lto-bugpoint/Makefile
@@ -10,6 +10,8 @@
 
 TOOLNAME = lto-bugpoint
 
+LINK_COMPONENTS := system
+
 REQUIRES_EH := 1
 
 include $(LEVEL)/Makefile.common
diff --git a/tools/lto-bugpoint/lto-bugpoint.cpp b/tools/lto-bugpoint/lto-bugpoint.cpp
index 8633415..01adb57 100644
--- a/tools/lto-bugpoint/lto-bugpoint.cpp
+++ b/tools/lto-bugpoint/lto-bugpoint.cpp
@@ -47,16 +47,13 @@
 
     // Third argument is absolute path to the validation script. This
     // script is used to validate LTO error under investigation.
-    std::istream *ValidationScriptFile = new std::ifstream(argv[3], input_mode);
-    if (!ValidationScriptFile->good()) {
-      std::cerr << argv[0] << ": error opening " << argv[3] << "!\n";
-      delete LinkerArgsFile;
-      delete LinkerInputsFile;
-      return 1;
-    }
-
+    std::string ValidationScript = argv[3];
     LTOBugPoint bugFinder(*LinkerArgsFile, *LinkerInputsFile);
 
+    llvm::SmallVector<std::string, 4> TroubleMakers;
+    if (!bugFinder.findTroubleMakers(TroubleMakers, ValidationScript))
+      return 1;
+
     return 0;
   } catch (const std::string& msg) {
     std::cerr << argv[0] << ": " << msg << "\n";
