Merge pull request #215 from haberman/coverage-fixes

Coverage fixes
diff --git a/README.md b/README.md
index f655fde..096d7a8 100644
--- a/README.md
+++ b/README.md
@@ -34,13 +34,27 @@
 
 ## Building Bloaty
 
-Building Bloaty requires CMake and ``protoc``, the protobuf compiler. On Ubuntu, install them with:
+Building Bloaty requires CMake.  On Ubuntu, install this with:
 
 ```
-$ sudo apt install cmake protobuf-compiler
+$ sudo apt install cmake
 ```
 
-Bloaty bundles ``libprotobuf``, ``re2``, ``capstone``, and ``pkg-config`` as Git submodules, but it will prefer the system's versions of those dependencies if available. All other dependencies are included as Git submodules. To build, run:
+and on macOS, this can be installed using homebrew with:
+```
+$ brew install cmake
+```
+
+
+Bloaty bundles ``libprotobuf``, ``re2``, ``capstone``, and ``pkg-config`` as Git submodules, and uses ``protoc`` build from libprotobuf, but it will prefer the system's versions of those dependencies if available. All other dependencies are included as Git submodules.
+
+If the Git repository hasn't been cloned with the `--recursive`, the submodules can be checked out with:
+
+```
+$ git submodule update --init --recursive
+```
+
+To build, run:
 
 ```
 $ cmake .
diff --git a/src/bloaty.cc b/src/bloaty.cc
index 068de28..791f8a2 100644
--- a/src/bloaty.cc
+++ b/src/bloaty.cc
@@ -1454,7 +1454,7 @@
   auto iter = all_known_sources_.find(source.base_data_source());
 
   if (iter == all_known_sources_.end()) {
-    THROWF("custom data source '$0': no such base source '$1'", source.name(),
+    THROWF("custom data source '$0': no such base source '$1'.\nTry --list-sources to see valid sources.", source.name(),
            source.base_data_source());
   } else if (!iter->second->munger->IsEmpty()) {
     THROWF("custom data source '$0' tries to depend on custom data source '$1'",
@@ -1473,7 +1473,7 @@
   source_names_.emplace_back(name);
   auto it = all_known_sources_.find(name);
   if (it == all_known_sources_.end()) {
-    THROWF("no such data source: $0", name);
+    THROWF("no such data source: $0.\nTry --list-sources to see valid sources.", name);
   }
 
   sources_.emplace_back(it->second.get());