diff --git a/tools/driver/Makefile b/tools/driver/Makefile
index 0ba65e5..9ad719f 100644
--- a/tools/driver/Makefile
+++ b/tools/driver/Makefile
@@ -15,10 +15,7 @@
 # FIXME: It is unfortunate we need to pull in the bitcode reader and
 # writer just to get the serializer stuff used by clangBasic.
 LINK_COMPONENTS := system support bitreader bitwriter
-
-# FIXME: We shouldn't need clangLex.a here; we do because the
-# TextDiagnosticPrinter is pulling it in. :(
-USEDLIBS = clangDriver.a clangFrontend.a clangLex.a clangBasic.a
+USEDLIBS = clangDriver.a clangBasic.a
 
 # This tool has no plugins, optimize startup time.
 TOOL_NO_EXPORTS = 1
diff --git a/tools/driver/driver.cpp b/tools/driver/driver.cpp
index 0724fbd..fac4403 100644
--- a/tools/driver/driver.cpp
+++ b/tools/driver/driver.cpp
@@ -17,8 +17,7 @@
 #include "clang/Driver/Option.h"
 #include "clang/Driver/Options.h"
 
-#include "clang/Frontend/TextDiagnosticPrinter.h"
-
+#include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/OwningPtr.h"
 #include "llvm/Config/config.h"
 #include "llvm/Support/ManagedStatic.h"
@@ -29,20 +28,52 @@
 using namespace clang;
 using namespace clang::driver;
 
+class DriverDiagnosticPrinter : public DiagnosticClient {
+  std::string ProgName;
+  llvm::raw_ostream &OS;
+
+public:
+  DriverDiagnosticPrinter(const std::string _ProgName, 
+                          llvm::raw_ostream &_OS)
+    : ProgName(_ProgName),
+      OS(_OS) {}
+
+  virtual void HandleDiagnostic(Diagnostic::Level DiagLevel,
+                                const DiagnosticInfo &Info);
+};
+
+void DriverDiagnosticPrinter::HandleDiagnostic(Diagnostic::Level Level,
+                                               const DiagnosticInfo &Info) {
+  OS << ProgName << ": ";
+
+  switch (Level) {
+  case Diagnostic::Ignored: assert(0 && "Invalid diagnostic type");
+  case Diagnostic::Note:    OS << "note: "; break;
+  case Diagnostic::Warning: OS << "warning: "; break;
+  case Diagnostic::Error:   OS << "error: "; break;
+  case Diagnostic::Fatal:   OS << "fatal error: "; break;
+  }
+  
+  llvm::SmallString<100> OutStr;
+  Info.FormatDiagnostic(OutStr);
+  OS.write(OutStr.begin(), OutStr.size());
+  OS << '\n';
+}
+
 int main(int argc, const char **argv) {
   llvm::sys::PrintStackTraceOnErrorSignal();
   llvm::PrettyStackTraceProgram X(argc, argv);
 
-  llvm::OwningPtr<DiagnosticClient> 
-    DiagClient(new TextDiagnosticPrinter(llvm::errs()));
-
-  Diagnostic Diags(DiagClient.get());
-
   // FIXME: We should use GetMainExecutable here, probably, but we may
   // want to handle symbolic links slightly differently. The problem
   // is that the path derived from this will influence search paths.
   llvm::sys::Path Path(argv[0]);
 
+  llvm::OwningPtr<DiagnosticClient> 
+    DiagClient(new DriverDiagnosticPrinter(Path.getBasename(), llvm::errs()));
+
+  Diagnostic Diags(DiagClient.get());
+
   // FIXME: Use the triple of the host, not the triple that we were
   // compiled on.
   llvm::OwningPtr<Driver> TheDriver(new Driver(Path.getBasename().c_str(),
