diff --git a/compiler/elf_writer_test.cc b/compiler/elf_writer_test.cc
index eca67a8..95e5f9f 100644
--- a/compiler/elf_writer_test.cc
+++ b/compiler/elf_writer_test.cc
@@ -29,9 +29,19 @@
   }
 };
 
-#define EXPECT_ELF_FILE_ADDRESS(ef, value, name, build_map) \
-  EXPECT_EQ(value, reinterpret_cast<void*>(ef->FindSymbolAddress(::llvm::ELF::SHT_DYNSYM, name, build_map))); \
-  EXPECT_EQ(value, ef->FindDynamicSymbolAddress(name)); \
+#define EXPECT_ELF_FILE_ADDRESS(ef, expected_value, symbol_name, build_map) \
+  do { \
+    void* addr = reinterpret_cast<void*>(ef->FindSymbolAddress(::llvm::ELF::SHT_DYNSYM, \
+                                                               symbol_name, \
+                                                               build_map)); \
+    EXPECT_NE(nullptr, addr); \
+    EXPECT_LT(static_cast<uintptr_t>(ART_BASE_ADDRESS), reinterpret_cast<uintptr_t>(addr)); \
+    if (expected_value == nullptr) { \
+      expected_value = addr; \
+    }                        \
+    EXPECT_EQ(expected_value, addr); \
+    EXPECT_EQ(expected_value, ef->FindDynamicSymbolAddress(symbol_name)); \
+  } while (false)
 
 TEST_F(ElfWriterTest, dlsym) {
   std::string elf_filename;
@@ -45,22 +55,31 @@
   LOG(INFO) << "elf_filename=" << elf_filename;
 
   UnreserveImageSpace();
-  void* dl_oat_so = dlopen(elf_filename.c_str(), RTLD_NOW);
-  ASSERT_TRUE(dl_oat_so != NULL) << dlerror();
-  void* dl_oatdata = dlsym(dl_oat_so, "oatdata");
-  ASSERT_TRUE(dl_oatdata != NULL);
+  void* dl_oatdata = NULL;
+  void* dl_oatexec = NULL;
+  void* dl_oatlastword = NULL;
 
-  OatHeader* dl_oat_header = reinterpret_cast<OatHeader*>(dl_oatdata);
-  ASSERT_TRUE(dl_oat_header->IsValid());
-  void* dl_oatexec = dlsym(dl_oat_so, "oatexec");
-  ASSERT_TRUE(dl_oatexec != NULL);
-  ASSERT_LT(dl_oatdata, dl_oatexec);
+#if defined(ART_USE_PORTABLE_COMPILER)
+  {
+    // We only use dlopen for loading with portable. See OatFile::Open.
+    void* dl_oat_so = dlopen(elf_filename.c_str(), RTLD_NOW);
+    ASSERT_TRUE(dl_oat_so != NULL) << dlerror();
+    dl_oatdata = dlsym(dl_oat_so, "oatdata");
+    ASSERT_TRUE(dl_oatdata != NULL);
 
-  void* dl_oatlastword = dlsym(dl_oat_so, "oatlastword");
-  ASSERT_TRUE(dl_oatlastword != NULL);
-  ASSERT_LT(dl_oatexec, dl_oatlastword);
+    OatHeader* dl_oat_header = reinterpret_cast<OatHeader*>(dl_oatdata);
+    ASSERT_TRUE(dl_oat_header->IsValid());
+    dl_oatexec = dlsym(dl_oat_so, "oatexec");
+    ASSERT_TRUE(dl_oatexec != NULL);
+    ASSERT_LT(dl_oatdata, dl_oatexec);
 
-  ASSERT_EQ(0, dlclose(dl_oat_so));
+    dl_oatlastword = dlsym(dl_oat_so, "oatlastword");
+    ASSERT_TRUE(dl_oatlastword != NULL);
+    ASSERT_LT(dl_oatexec, dl_oatlastword);
+
+    ASSERT_EQ(0, dlclose(dl_oat_so));
+  }
+#endif
 
   UniquePtr<File> file(OS::OpenFileForReading(elf_filename.c_str()));
   ASSERT_TRUE(file.get() != NULL);
