diff options
-rw-r--r-- | build/Android.gtest.mk | 7 | ||||
-rw-r--r-- | dexlayout/Android.bp | 20 | ||||
-rw-r--r-- | dexlayout/dexdiag.cc | 9 | ||||
-rw-r--r-- | dexlayout/dexdiag_test.cc | 111 |
4 files changed, 5 insertions, 142 deletions
diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk index f27db0eed9..ed34a8df5f 100644 --- a/build/Android.gtest.mk +++ b/build/Android.gtest.mk @@ -170,12 +170,6 @@ ART_GTEST_dex2oat_test_TARGET_DEPS := \ # TODO: document why this is needed. ART_GTEST_proxy_test_HOST_DEPS := $(HOST_CORE_IMAGE_DEFAULT_64) $(HOST_CORE_IMAGE_DEFAULT_32) -# The dexdiag test requires the dexdiag utility. -ART_GTEST_dexdiag_test_HOST_DEPS := \ - $(HOST_OUT_EXECUTABLES)/dexdiag -ART_GTEST_dexdiag_test_TARGET_DEPS := \ - dexdiag - # The dexdump test requires an image and the dexdump utility. # TODO: rename into dexdump when migration completes ART_GTEST_dexdump_test_HOST_DEPS := \ @@ -247,7 +241,6 @@ ART_TEST_MODULES := \ art_compiler_tests \ art_compiler_host_tests \ art_dex2oat_tests \ - art_dexdiag_tests \ art_dexdump_tests \ art_dexlayout_tests \ art_dexlist_tests \ diff --git a/dexlayout/Android.bp b/dexlayout/Android.bp index 75f134ead4..e26d051d9d 100644 --- a/dexlayout/Android.bp +++ b/dexlayout/Android.bp @@ -19,7 +19,7 @@ art_cc_defaults { "dexlayout.cc", "dex_ir.cc", "dex_ir_builder.cc", - "dex_verify.cc", + "dex_verify.cc", "dex_visualize.cc", "dex_writer.cc", ], @@ -59,27 +59,13 @@ art_cc_test { art_cc_binary { name: "dexdiag", - host_supported: true, + host_supported: false, srcs: ["dexdiag.cc"], cflags: ["-Wall"], shared_libs: [ "libart", "libart-dexlayout", + "libpagemap", ], - target: { - android: { - shared_libs: [ - "libpagemap", - ] - }, - } } -art_cc_test { - name: "art_dexdiag_tests", - host_supported: true, - defaults: [ - "art_gtest_defaults", - ], - srcs: ["dexdiag_test.cc"], -} diff --git a/dexlayout/dexdiag.cc b/dexlayout/dexdiag.cc index b2d98e1ddb..211bfdf9ec 100644 --- a/dexlayout/dexdiag.cc +++ b/dexlayout/dexdiag.cc @@ -27,9 +27,7 @@ #include "dex_file.h" #include "dex_ir.h" #include "dex_ir_builder.h" -#ifdef ART_TARGET_ANDROID #include "pagemap/pagemap.h" -#endif #include "runtime.h" #include "vdex_file.h" @@ -37,6 +35,8 @@ namespace art { using android::base::StringPrintf; +static constexpr size_t kLineLength = 32; + static bool g_show_key = false; static bool g_verbose = false; static bool g_show_statistics = false; @@ -96,7 +96,6 @@ static void PrintLetterKey() { } } -#ifdef ART_TARGET_ANDROID static char PageTypeChar(uint16_t type) { if (kDexSectionInfoMap.find(type) == kDexSectionInfoMap.end()) { return '-'; @@ -127,7 +126,6 @@ static void ProcessPageMap(uint64_t* pagemap, size_t end, const std::vector<dex_ir::DexFileSection>& sections, PageCount* page_counts) { - static constexpr size_t kLineLength = 32; for (size_t page = start; page < end; ++page) { char type_char = '.'; if (PM_PAGEMAP_PRESENT(pagemap[page])) { @@ -321,7 +319,6 @@ static bool DisplayMappingIfFromVdexFile(pm_map_t* map) { free(pagemap); return true; } -#endif static void Usage(const char* cmd) { @@ -355,7 +352,6 @@ static int DexDiagMain(int argc, char* argv[]) { InitLogging(argv, Runtime::Aborter); MemMap::Init(); -#ifdef ART_TARGET_ANDROID pid_t pid; char* endptr; pid = (pid_t)strtol(argv[argc - 1], &endptr, 10); @@ -395,7 +391,6 @@ static int DexDiagMain(int argc, char* argv[]) { return EXIT_FAILURE; } } -#endif if (g_show_key) { PrintLetterKey(); diff --git a/dexlayout/dexdiag_test.cc b/dexlayout/dexdiag_test.cc deleted file mode 100644 index 34c4daeb4d..0000000000 --- a/dexlayout/dexdiag_test.cc +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <string> -#include <vector> - -#include "common_runtime_test.h" - -#include "runtime/os.h" -#include "runtime/exec_utils.h" - -namespace art { - -static const char* kDexDiagKey = "-k"; -static const char* kDexDiagVerbose = "-v"; -static const char* kDexDiagSummary = "-s"; -static const char* kDexDiagBinaryName = "dexdiag"; - -class DexDiagTest : public CommonRuntimeTest { - protected: - virtual void SetUp() { - CommonRuntimeTest::SetUp(); - } - - // Path to the dexdiag(d?)[32|64] binary. - std::string GetDexDiagFilePath() { - std::string root = GetTestAndroidRoot(); - - root += "/bin/"; - root += kDexDiagBinaryName; - - std::string root32 = root + "32"; - // If we have both a 32-bit and a 64-bit build, the 32-bit file will have a 32 suffix. - if (OS::FileExists(root32.c_str()) && !Is64BitInstructionSet(kRuntimeISA)) { - return root32; - } else { - // This is a 64-bit build or only a single build exists. - return root; - } - } - - // Run dexdiag with a custom boot image location. - bool Exec(pid_t this_pid, const std::vector<std::string>& args, std::string* error_msg) { - // Invoke 'dexdiag' against the current process. - // This should succeed because we have a runtime and so it should - // be able to map in the boot.art and do a diff for it. - std::vector<std::string> exec_argv; - - // Build the command line "dexdiag <args> this_pid". - std::string executable_path = GetDexDiagFilePath(); - EXPECT_TRUE(OS::FileExists(executable_path.c_str())) << executable_path - << " should be a valid file path"; - exec_argv.push_back(executable_path); - for (const auto& arg : args) { - exec_argv.push_back(arg); - } - exec_argv.push_back(std::to_string(this_pid)); - - return ::art::Exec(exec_argv, error_msg); - } -}; - -// We can't run these tests on the host, as they will fail when trying to open -// /proc/pid/pagemap. -// On the target, we invoke 'dexdiag' against the current process. -// This should succeed because we have a runtime and so dexdiag should -// be able to find the map for, e.g., boot.vdex and friends. -#if defined (ART_TARGET) -TEST_F(DexDiagTest, DexDiagLetterKeyTest) { -#else -TEST_F(DexDiagTest, DexDiagLetterKeyTest) { -#endif - std::string error_msg; - ASSERT_TRUE(Exec(getpid(), { kDexDiagKey }, &error_msg)) << "Failed to execute -- because: " - << error_msg; -} - -#if defined (ART_TARGET) -TEST_F(DexDiagTest, DexDiagSummaryTest) { -#else -TEST_F(DexDiagTest, DISABLED_DexDiagSummaryTest) { -#endif - std::string error_msg; - ASSERT_TRUE(Exec(getpid(), { kDexDiagSummary }, &error_msg)) << "Failed to execute -- because: " - << error_msg; -} - -#if defined (ART_TARGET) -TEST_F(DexDiagTest, DexDiagVerboseTest) { -#else -TEST_F(DexDiagTest, DISABLED_DexDiagVerboseTest) { -#endif - std::string error_msg; - ASSERT_TRUE(Exec(getpid(), { kDexDiagVerbose }, &error_msg)) << "Failed to execute -- because: " - << error_msg; -} - -} // namespace art |