diff options
author | Andreas Gampe <agampe@google.com> | 2014-09-09 19:53:48 -0700 |
---|---|---|
committer | Andreas Gampe <agampe@google.com> | 2014-09-10 15:50:42 -0700 |
commit | 928f72bd75c385ba2708c58521171a77264d4486 (patch) | |
tree | 86f7fa7a21e3f6d21c9cab2d4fffe4aaa42dc458 /runtime/mem_map_test.cc | |
parent | dab9ed52f2df7189b81ccf3237b030ff638a492a (diff) | |
download | art-928f72bd75c385ba2708c58521171a77264d4486.zip art-928f72bd75c385ba2708c58521171a77264d4486.tar.gz art-928f72bd75c385ba2708c58521171a77264d4486.tar.bz2 |
ART: Fix things for valgrind
Wire up valgrind gtests. Add valgrind-test-art-host, currently
only depending on valgrind-test-art-host-gtest32.
Fix an Alloc setting to allow running valgrind.
Refactor the fault handler to manage (and correctly release) the
handlers.
Fix minor failure-case leaks exposed by tests.
Failing tests:
The optimizing compiler is leaking non-arena-ed structures
(e.g., assembler buffers), as code generators are not destroyed.
The solution has been moved to a follow-up CL.
Note: All 64b tests are failing as we cannot allocate a heap.
Change-Id: I7f854cfd098d9f68107ce492363e7dba9a82b9fa
Diffstat (limited to 'runtime/mem_map_test.cc')
-rw-r--r-- | runtime/mem_map_test.cc | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/runtime/mem_map_test.cc b/runtime/mem_map_test.cc index 69f618c..e54d0e0 100644 --- a/runtime/mem_map_test.cc +++ b/runtime/mem_map_test.cc @@ -18,6 +18,8 @@ #include <memory> +#include <valgrind.h> + #include "gtest/gtest.h" namespace art { @@ -198,17 +200,20 @@ TEST_F(MemMapTest, RemapAtEnd32bit) { #endif TEST_F(MemMapTest, MapAnonymousExactAddr32bitHighAddr) { - uintptr_t start_addr = ART_BASE_ADDRESS + 0x1000000; - std::string error_msg; - std::unique_ptr<MemMap> map(MemMap::MapAnonymous("MapAnonymousExactAddr32bitHighAddr", - reinterpret_cast<byte*>(start_addr), - 0x21000000, - PROT_READ | PROT_WRITE, - true, - &error_msg)); - ASSERT_TRUE(map.get() != nullptr) << error_msg; - ASSERT_TRUE(error_msg.empty()); - ASSERT_EQ(reinterpret_cast<uintptr_t>(BaseBegin(map.get())), start_addr); + // This test may not work under valgrind. + if (RUNNING_ON_VALGRIND == 0) { + uintptr_t start_addr = ART_BASE_ADDRESS + 0x1000000; + std::string error_msg; + std::unique_ptr<MemMap> map(MemMap::MapAnonymous("MapAnonymousExactAddr32bitHighAddr", + reinterpret_cast<byte*>(start_addr), + 0x21000000, + PROT_READ | PROT_WRITE, + true, + &error_msg)); + ASSERT_TRUE(map.get() != nullptr) << error_msg; + ASSERT_TRUE(error_msg.empty()); + ASSERT_EQ(reinterpret_cast<uintptr_t>(BaseBegin(map.get())), start_addr); + } } TEST_F(MemMapTest, MapAnonymousOverflow) { |