diff --git a/src/class_linker_test.cc b/src/class_linker_test.cc
index eb18280..8b0e1a1 100644
--- a/src/class_linker_test.cc
+++ b/src/class_linker_test.cc
@@ -863,7 +863,9 @@
   EXPECT_TRUE(s8->GetObject(NULL)->AsString()->Equals("android"));
   s8->SetObject(NULL, String::AllocFromModifiedUtf8("robot"));
 
-  EXPECT_EQ(false,                s0->GetBoolean(NULL));
+  // TODO: Remove EXPECT_FALSE when GCC can handle EXPECT_EQ
+  // http://code.google.com/p/googletest/issues/detail?id=322
+  EXPECT_FALSE(                   s0->GetBoolean(NULL));
   EXPECT_EQ(6,                    s1->GetByte(NULL));
   EXPECT_EQ('b',                  s2->GetChar(NULL));
   EXPECT_EQ(-535,                 s3->GetShort(NULL));
diff --git a/src/compiler/codegen/arm/Assemble.cc b/src/compiler/codegen/arm/Assemble.cc
index 43fb05e..9a1a30e 100644
--- a/src/compiler/codegen/arm/Assemble.cc
+++ b/src/compiler/codegen/arm/Assemble.cc
@@ -1566,7 +1566,7 @@
      */
 
     while (true) {
-        AssemblerStatus res = assembleInstructions(cUnit, NULL);
+        AssemblerStatus res = assembleInstructions(cUnit, 0);
         if (res == kSuccess) {
             break;
         } else {
diff --git a/src/dalvik_system_DexFile.cc b/src/dalvik_system_DexFile.cc
index 23247cf..7fce25f 100644
--- a/src/dalvik_system_DexFile.cc
+++ b/src/dalvik_system_DexFile.cc
@@ -97,7 +97,7 @@
     if (!IsValidZipFilename(sourceName.c_str()) || !IsValidDexFilename(outputName.c_str())) {
       LOG(ERROR) << "Bad filenames extracting dex '" << outputName.c_str()
                  << "' from zip '" << sourceName.c_str() << "'";
-      return NULL;
+      return 0;
     }
     // Generate the output oat file for the source dex file
     ClassLinker* class_linker = Runtime::Current()->GetClassLinker();
diff --git a/src/dex2oat.cc b/src/dex2oat.cc
index 2781aae..41adc74 100644
--- a/src/dex2oat.cc
+++ b/src/dex2oat.cc
@@ -574,7 +574,7 @@
       UniquePtr<ZipArchive> zip_archive(ZipArchive::OpenFromFd(zip_fd));
       if (zip_archive.get() == NULL) {
         LOG(ERROR) << "Failed to zip from file descriptor for " << zip_name;
-        return NULL;
+        return EXIT_FAILURE;
       }
       const DexFile* dex_file = DexFile::Open(*zip_archive.get(), zip_name);
       if (dex_file == NULL) {
diff --git a/src/dex_verifier.cc b/src/dex_verifier.cc
index 2f91dcd..9868656 100644
--- a/src/dex_verifier.cc
+++ b/src/dex_verifier.cc
@@ -1416,8 +1416,8 @@
   }
   uint32_t table_size = targets_offset + switch_count * 2;
   if (switch_insns[0] != expected_signature) {
-    Fail(VERIFY_ERROR_GENERIC) << "wrong signature for switch table (" << (void*) switch_insns[0]
-                               << ", wanted " << (void*) expected_signature << ")";
+    Fail(VERIFY_ERROR_GENERIC) << StringPrintf("wrong signature for switch table (%x, wanted %x)",
+                                               switch_insns[0], expected_signature);
     return false;
   }
   /* make sure the end of the switch is in range */
diff --git a/src/exception_test.cc b/src/exception_test.cc
index 559636f..eca1fa8 100644
--- a/src/exception_test.cc
+++ b/src/exception_test.cc
@@ -118,7 +118,7 @@
   fake_stack.push_back(0xEBAD6070);  // return pc
 
   // Pull Method* of NULL to terminate the trace
-  fake_stack.push_back(NULL);
+  fake_stack.push_back(0);
 
   // Set up thread to appear as if we called out of method_g_ at pc 3
   Thread* thread = Thread::Current();
diff --git a/src/jni_internal.cc b/src/jni_internal.cc
index e6c7410..597c58b 100644
--- a/src/jni_internal.cc
+++ b/src/jni_internal.cc
@@ -2356,6 +2356,8 @@
 
       return JNIInvalidRefType;
     }
+    LOG(FATAL) << "IndirectRefKind[" << kind << "]";
+    return JNIInvalidRefType;
   }
 };
 
@@ -2974,5 +2976,8 @@
   case JNIWeakGlobalRefType:
     os << "JNIWeakGlobalRefType";
     return os;
+  default:
+    os << "jobjectRefType[" << static_cast<int>(rhs) << "]";
+    return os;
   }
 }
diff --git a/src/jni_internal_test.cc b/src/jni_internal_test.cc
index d59fb3d..fabd813 100644
--- a/src/jni_internal_test.cc
+++ b/src/jni_internal_test.cc
@@ -644,9 +644,9 @@
     jfieldID fid = env_->GetStaticFieldID(c, field_name, sig); \
     EXPECT_TRUE(fid != NULL); \
     env_->SetStatic ## type ## Field(c, fid, value1); \
-    EXPECT_EQ(value1, env_->GetStatic ## type ## Field(c, fid)); \
+    EXPECT_TRUE(value1 == env_->GetStatic ## type ## Field(c, fid)); \
     env_->SetStatic ## type ## Field(c, fid, value2); \
-    EXPECT_EQ(value2, env_->GetStatic ## type ## Field(c, fid)); \
+    EXPECT_TRUE(value2 == env_->GetStatic ## type ## Field(c, fid)); \
   } while (false)
 
 #define EXPECT_PRIMITIVE_FIELD(instance, type, field_name, sig, value1, value2) \
@@ -654,9 +654,9 @@
     jfieldID fid = env_->GetFieldID(c, field_name, sig); \
     EXPECT_TRUE(fid != NULL); \
     env_->Set ## type ## Field(instance, fid, value1); \
-    EXPECT_EQ(value1, env_->Get ## type ## Field(instance, fid)); \
+    EXPECT_TRUE(value1 == env_->Get ## type ## Field(instance, fid)); \
     env_->Set ## type ## Field(instance, fid, value2); \
-    EXPECT_EQ(value2, env_->Get ## type ## Field(instance, fid)); \
+    EXPECT_TRUE(value2 == env_->Get ## type ## Field(instance, fid)); \
   } while (false)
 
 
