diff options
author | Dan Albert <danalbert@google.com> | 2014-09-30 22:10:10 -0700 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2015-01-30 08:57:51 -0800 |
commit | 31fb26054349db03b3f1627fe975ed099ade69dd (patch) | |
tree | 1584fbca9d5099a25ca857531b846f5b05b61de9 | |
parent | 28acb6feb50951645c37c077bd3897ea760ca322 (diff) | |
download | art-31fb26054349db03b3f1627fe975ed099ade69dd.tar.gz art-31fb26054349db03b3f1627fe975ed099ade69dd.tar.bz2 art-31fb26054349db03b3f1627fe975ed099ade69dd.zip |
Add options for building/testing with coverage.
acov --clean
mm -B NATIVE_COVERAGE=true ART_COVERAGE=true test-art-host
acov --host
-B is needed because you need to be sure you rebuild *all* of ART with
coverage.
Change-Id: Ib94ef610bd1b44dc45624877710ed733051b7a50
-rw-r--r-- | build/Android.common.mk | 15 | ||||
-rw-r--r-- | build/Android.common_build.mk | 10 | ||||
-rw-r--r-- | build/Android.executable.mk | 2 | ||||
-rw-r--r-- | build/Android.gtest.mk | 2 | ||||
-rw-r--r-- | compiler/Android.mk | 3 | ||||
-rw-r--r-- | dalvikvm/Android.mk | 2 | ||||
-rw-r--r-- | disassembler/Android.mk | 1 | ||||
-rw-r--r-- | runtime/Android.mk | 2 | ||||
-rw-r--r-- | sigchainlib/Android.mk | 2 |
9 files changed, 35 insertions, 4 deletions
diff --git a/build/Android.common.mk b/build/Android.common.mk index 1f040d69e3..0f756eff2d 100644 --- a/build/Android.common.mk +++ b/build/Android.common.mk @@ -20,6 +20,21 @@ ART_ANDROID_COMMON_MK = true ART_TARGET_SUPPORTED_ARCH := arm arm64 mips mips64 x86 x86_64 ART_HOST_SUPPORTED_ARCH := x86 x86_64 +ART_COVERAGE := false + +ifeq ($(ART_COVERAGE),true) +# https://gcc.gnu.org/onlinedocs/gcc/Cross-profiling.html +GCOV_PREFIX := /data/local/tmp/gcov +# GCOV_PREFIX_STRIP is an integer that defines how many levels should be +# stripped off the beginning of the path. We want the paths in $GCOV_PREFIX to +# be relative to $ANDROID_BUILD_TOP so we can just adb pull from the top and not +# have to worry about placing things ourselves. +GCOV_PREFIX_STRIP := $(shell echo $(ANDROID_BUILD_TOP) | grep -o / | wc -l) +GCOV_ENV := GCOV_PREFIX=$(GCOV_PREFIX) GCOV_PREFIX_STRIP=$(GCOV_PREFIX_STRIP) +else +GCOV_ENV := +endif + ifeq (,$(filter $(TARGET_ARCH),$(ART_TARGET_SUPPORTED_ARCH))) $(warning unsupported TARGET_ARCH=$(TARGET_ARCH)) endif diff --git a/build/Android.common_build.mk b/build/Android.common_build.mk index ad4c98772d..3000cdf087 100644 --- a/build/Android.common_build.mk +++ b/build/Android.common_build.mk @@ -238,10 +238,14 @@ art_target_non_debug_cflags := $(art_non_debug_cflags) ifeq ($(HOST_OS),linux) # Larger frame-size for host clang builds today - ifndef SANITIZE_HOST - art_host_non_debug_cflags += -Wframe-larger-than=2700 + ifneq ($(ART_COVERAGE),true) + ifneq ($(NATIVE_COVERAGE),true) + ifndef SANITIZE_HOST + art_host_non_debug_cflags += -Wframe-larger-than=2700 + endif + art_target_non_debug_cflags += -Wframe-larger-than=1728 + endif endif - art_target_non_debug_cflags += -Wframe-larger-than=1728 endif ifndef LIBART_IMG_HOST_BASE_ADDRESS diff --git a/build/Android.executable.mk b/build/Android.executable.mk index 4bb2cb1a81..dfea6e191e 100644 --- a/build/Android.executable.mk +++ b/build/Android.executable.mk @@ -129,6 +129,8 @@ define build-art-executable endif endif + LOCAL_NATIVE_COVERAGE := $(ART_COVERAGE) + ifeq ($$(art_target_or_host),target) include $(BUILD_EXECUTABLE) ART_TARGET_EXECUTABLES := $(ART_TARGET_EXECUTABLES) $$(foreach name,$$(art_out_binary_name),$(TARGET_OUT_EXECUTABLES)/$$(name)) diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk index a5cfcba605..b4eb0c0160 100644 --- a/build/Android.gtest.mk +++ b/build/Android.gtest.mk @@ -275,7 +275,7 @@ $$(gtest_rule): test-art-target-sync $(hide) adb shell rm $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID $(hide) adb shell chmod 755 $(ART_TARGET_NATIVETEST_DIR)/$(TARGET_$(2)ARCH)/$(1) $(hide) $$(call ART_TEST_SKIP,$$@) && \ - (adb shell "LD_LIBRARY_PATH=$(3) ANDROID_ROOT=$(ART_GTEST_TARGET_ANDROID_ROOT) \ + (adb shell "$(GCOV_ENV) LD_LIBRARY_PATH=$(3) ANDROID_ROOT=$(ART_GTEST_TARGET_ANDROID_ROOT) \ $(ART_TARGET_NATIVETEST_DIR)/$(TARGET_$(2)ARCH)/$(1) && touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID" \ && (adb pull $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID /tmp/ \ && $$(call ART_TEST_PASSED,$$@)) \ diff --git a/compiler/Android.mk b/compiler/Android.mk index 83ab730ce9..55427e84d8 100644 --- a/compiler/Android.mk +++ b/compiler/Android.mk @@ -241,6 +241,9 @@ $$(ENUM_OPERATOR_OUT_GEN): $$(GENERATED_SRC_DIR)/%_operator_out.cc : $(LOCAL_PAT else LOCAL_SHARED_LIBRARIES += libvixl endif + + LOCAL_NATIVE_COVERAGE := $(ART_COVERAGE) + ifeq ($$(art_target_or_host),target) # For atrace. LOCAL_SHARED_LIBRARIES += libcutils diff --git a/dalvikvm/Android.mk b/dalvikvm/Android.mk index 239e74635c..8afd443ca5 100644 --- a/dalvikvm/Android.mk +++ b/dalvikvm/Android.mk @@ -35,6 +35,7 @@ LOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.common.mk LOCAL_MULTILIB := both LOCAL_MODULE_STEM_32 := dalvikvm32 LOCAL_MODULE_STEM_64 := dalvikvm64 +LOCAL_NATIVE_COVERAGE := $(ART_COVERAGE) include $(BUILD_EXECUTABLE) # Create symlink for the primary version target. @@ -67,6 +68,7 @@ LOCAL_IS_HOST_MODULE := true LOCAL_MULTILIB := both LOCAL_MODULE_STEM_32 := dalvikvm32 LOCAL_MODULE_STEM_64 := dalvikvm64 +LOCAL_NATIVE_COVERAGE := $(ART_COVERAGE) include $(BUILD_HOST_EXECUTABLE) # Create symlink for the primary version target. diff --git a/disassembler/Android.mk b/disassembler/Android.mk index 735c85026e..c9aa8c8f11 100644 --- a/disassembler/Android.mk +++ b/disassembler/Android.mk @@ -84,6 +84,7 @@ define build-libart-disassembler LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk + LOCAL_NATIVE_COVERAGE := $(ART_COVERAGE) # For disassembler_arm64. ifeq ($$(art_ndebug_or_debug),debug) LOCAL_SHARED_LIBRARIES += libvixld diff --git a/runtime/Android.mk b/runtime/Android.mk index a53616a2df..30cf580053 100644 --- a/runtime/Android.mk +++ b/runtime/Android.mk @@ -481,6 +481,8 @@ $$(ENUM_OPERATOR_OUT_GEN): $$(GENERATED_SRC_DIR)/%_operator_out.cc : $(LOCAL_PAT LOCAL_MODULE_TARGET_ARCH := $$(ART_TARGET_SUPPORTED_ARCH) endif + LOCAL_NATIVE_COVERAGE := $(ART_COVERAGE) + ifeq ($$(art_target_or_host),target) ifneq ($$(art_ndebug_or_debug),debug) # Leave the symbols in the shared library so that stack unwinders can diff --git a/sigchainlib/Android.mk b/sigchainlib/Android.mk index e0f1769e13..e1aae11f06 100644 --- a/sigchainlib/Android.mk +++ b/sigchainlib/Android.mk @@ -28,6 +28,7 @@ LOCAL_MODULE:= libsigchain LOCAL_SHARED_LIBRARIES := liblog LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.common_build.mk +LOCAL_NATIVE_COVERAGE := $(ART_COVERAGE) $(eval $(call set-target-local-clang-vars)) include $(BUILD_SHARED_LIBRARY) @@ -56,6 +57,7 @@ LOCAL_MODULE:= libsigchain LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk LOCAL_LDLIBS = -ldl LOCAL_MULTILIB := both +LOCAL_NATIVE_COVERAGE := $(ART_COVERAGE) include $(BUILD_HOST_SHARED_LIBRARY) include $(CLEAR_VARS) |