diff --git a/libdl/libdl.c b/libdl/libdl.c
index 1d51c37..e8b01be 100644
--- a/libdl/libdl.c
+++ b/libdl/libdl.c
@@ -24,13 +24,16 @@
 int dladdr(const void *addr, Dl_info *info) { return 0; }
 int dlclose(void *handle) { return 0; }
 
-#ifdef __arm__
+#if defined(__arm__)
+
 void *dl_unwind_find_exidx(void *pc, int *pcount) { return 0; }
-#elif defined(__i386__) || defined(__sh__) || defined(__mips__)
+
+#elif defined(__i386__) || defined(__mips__)
+
 /* we munge the cb definition so we don't have to include any headers here.
  * It won't affect anything since these are just symbols anyway */
-int dl_iterate_phdr(int (*cb)(void *info, void *size, void *data),
-                    void *data) { return 0; }
+int dl_iterate_phdr(int (*cb)(void *info, void *size, void *data), void *data) { return 0; }
+
 #else
 #error Unsupported architecture. Only mips, arm and x86 are supported.
 #endif
diff --git a/linker/dlfcn.cpp b/linker/dlfcn.cpp
index 8486bfa..aefdd55 100644
--- a/linker/dlfcn.cpp
+++ b/linker/dlfcn.cpp
@@ -31,7 +31,7 @@
 #define likely(expr)   __builtin_expect (expr, 1)
 #define unlikely(expr) __builtin_expect (expr, 0)
 
-pthread_mutex_t dl_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
+static pthread_mutex_t gDlMutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
 
 static void set_dlerror(const char* msg, const char* detail) {
   if (detail != NULL) {
@@ -43,7 +43,7 @@
 }
 
 void *dlopen(const char* filename, int flag) {
-  ScopedPthreadMutexLocker locker(&dl_lock);
+  ScopedPthreadMutexLocker locker(&gDlMutex);
   soinfo* result = find_library(filename);
   if (result == NULL) {
     set_dlerror("dlopen failed", linker_get_error());
@@ -61,7 +61,7 @@
 }
 
 void* dlsym(void* handle, const char* symbol) {
-  ScopedPthreadMutexLocker locker(&dl_lock);
+  ScopedPthreadMutexLocker locker(&gDlMutex);
 
   if (unlikely(handle == 0)) {
     set_dlerror("dlsym library handle is null", NULL);
@@ -106,7 +106,7 @@
 }
 
 int dladdr(const void* addr, Dl_info* info) {
-  ScopedPthreadMutexLocker locker(&dl_lock);
+  ScopedPthreadMutexLocker locker(&gDlMutex);
 
   // Determine if this address can be found in any library currently mapped.
   soinfo* si = find_containing_library(addr);
@@ -131,7 +131,7 @@
 }
 
 int dlclose(void* handle) {
-  ScopedPthreadMutexLocker locker(&dl_lock);
+  ScopedPthreadMutexLocker locker(&gDlMutex);
   return soinfo_unload((soinfo*) handle);
 }
 
@@ -177,28 +177,28 @@
 #endif
 };
 
-/* Fake out a hash table with a single bucket.
- * A search of the hash table will look through
- * libdl_symtab starting with index [1], then
- * use libdl_chains to find the next index to
- * look at.  libdl_chains should be set up to
- * walk through every element in libdl_symtab,
- * and then end with 0 (sentinel value).
- *
- * I.e., libdl_chains should look like
- * { 0, 2, 3, ... N, 0 } where N is the number
- * of actual symbols, or nelems(libdl_symtab)-1
- * (since the first element of libdl_symtab is not
- * a real symbol).
- *
- * (see _elf_lookup())
- *
- * Note that adding any new symbols here requires
- * stubbing them out in libdl.
- */
+// Fake out a hash table with a single bucket.
+// A search of the hash table will look through
+// libdl_symtab starting with index [1], then
+// use libdl_chains to find the next index to
+// look at.  libdl_chains should be set up to
+// walk through every element in libdl_symtab,
+// and then end with 0 (sentinel value).
+//
+// That is, libdl_chains should look like
+// { 0, 2, 3, ... N, 0 } where N is the number
+// of actual symbols, or nelems(libdl_symtab)-1
+// (since the first element of libdl_symtab is not
+// a real symbol).
+//
+// (see soinfo_elf_lookup())
+//
+// Note that adding any new symbols here requires
+// stubbing them out in libdl.
 static unsigned libdl_buckets[1] = { 1 };
 static unsigned libdl_chains[7] = { 0, 2, 3, 4, 5, 6, 0 };
 
+// This is used by the dynamic linker. Every process gets these symbols for free.
 soinfo libdl_info = {
     name: "libdl.so",
 
