More MIPS fixes. The vm-tests and oat tests all work on the emulator.

- Changed the base address of the art image for MIPS to allow enough
  space for CTS to run on the target.
- Fixed exception delivery to jump without linking, and to preserve the
  value of $gp.
- Added dumping of /proc/self/maps whenever mmap fails, and cleaned up
  other debugging output (not MIPS related).

Change-Id: I4e92e992ee6a6167e901db8ad90a6062bbc5168a
diff --git a/src/mem_map.cc b/src/mem_map.cc
index 653eb3f..f322773 100644
--- a/src/mem_map.cc
+++ b/src/mem_map.cc
@@ -87,8 +87,11 @@
 
   byte* actual = reinterpret_cast<byte*>(mmap(addr, page_aligned_byte_count, prot, flags, fd.get(), 0));
   if (actual == MAP_FAILED) {
+    std::string maps;
+    ReadFileToString("/proc/self/maps", &maps);
     PLOG(ERROR) << "mmap(" << reinterpret_cast<void*>(addr) << ", " << page_aligned_byte_count
-                << ", " << prot << ", " << flags << ", " << fd.get() << ", 0) failed for " << name;
+                << ", " << prot << ", " << flags << ", " << fd.get() << ", 0) failed for " << name
+                << "\n" << maps;
     return NULL;
   }
   return new MemMap(name, actual, byte_count, actual, page_aligned_byte_count, prot);
@@ -110,7 +113,11 @@
                                               fd,
                                               page_aligned_offset));
   if (actual == MAP_FAILED) {
-    PLOG(ERROR) << "mmap failed";
+    std::string maps;
+    ReadFileToString("/proc/self/maps", &maps);
+    PLOG(ERROR) << "mmap(" << reinterpret_cast<void*>(addr) << ", " << page_aligned_byte_count
+                << ", " << prot << ", " << flags << ", " << fd << ", " << page_aligned_offset
+                << ") failed\n" << maps;
     return NULL;
   }
   return new MemMap("file", actual + page_offset, byte_count, actual, page_aligned_byte_count,