Merge "Add soong variable for PRODUCT_FULL_TREBLE."
diff --git a/core/dynamic_binary.mk b/core/dynamic_binary.mk
index 579338e..949793b 100644
--- a/core/dynamic_binary.mk
+++ b/core/dynamic_binary.mk
@@ -23,7 +23,7 @@
# The basename of this target must be the same as the final output
# binary name, because it's used to set the "soname" in the binary.
# The includer of this file will define a rule to build this target.
-linked_module := $(intermediates)/LINKED/$(my_built_module_stem)
+linked_module := $(intermediates)/LINKED/$(notdir $(my_installed_module_stem))
ALL_ORIGINAL_DYNAMIC_BINARIES += $(linked_module)
diff --git a/core/envsetup.mk b/core/envsetup.mk
index ba9d7eb..ccd156b 100644
--- a/core/envsetup.mk
+++ b/core/envsetup.mk
@@ -187,6 +187,12 @@
TARGET_COPY_OUT_ODM := odm
TARGET_COPY_OUT_ROOT := root
TARGET_COPY_OUT_RECOVERY := recovery
+
+# Returns the non-sanitized version of the path provided in $1.
+define get_non_asan_path
+$(patsubst $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/%,$(PRODUCT_OUT)/%,$1)
+endef
+
###########################################
# Define TARGET_COPY_OUT_VENDOR to a placeholder, for at this point
# we don't know if the device wants to build a separate vendor.img
@@ -398,10 +404,19 @@
$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT_EXECUTABLES)
$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest64
-TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj
+ifneq ($(filter address,$(SANITIZE_TARGET)),)
+ TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_asan
+else
+ TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj
+endif
TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include
TARGET_OUT_INTERMEDIATE_LIBRARIES := $(TARGET_OUT_INTERMEDIATES)/lib
-TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj
+
+ifneq ($(filter address,$(SANITIZE_TARGET)),)
+ TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj_asan
+else
+ TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj
+endif
TARGET_OUT_GEN := $(PRODUCT_OUT)/gen
TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen
@@ -443,7 +458,12 @@
else
TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX)
endif
-$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)
+
+ifneq ($(filter address,$(SANITIZE_TARGET)),)
+ $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)_asan
+else
+ $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)
+endif
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATE_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES)/lib
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib/$(TARGET_2ND_ARCH)
diff --git a/core/install_jni_libs_internal.mk b/core/install_jni_libs_internal.mk
index 3898dc90..0e92153 100644
--- a/core/install_jni_libs_internal.mk
+++ b/core/install_jni_libs_internal.mk
@@ -54,7 +54,8 @@
# The jni libaries will be installed to the system.img.
my_jni_filenames := $(notdir $(my_jni_shared_libraries))
# Make sure the JNI libraries get installed
-my_shared_library_path := $($(my_2nd_arch_prefix)TARGET_OUT$(partition_tag)_SHARED_LIBRARIES)
+my_shared_library_path := $(call get_non_asan_path,\
+ $($(my_2nd_arch_prefix)TARGET_OUT$(partition_tag)_SHARED_LIBRARIES))
# Do not use order-only dependency, because we want to rebuild the image if an jni is updated.
$(LOCAL_INSTALLED_MODULE) : $(addprefix $(my_shared_library_path)/, $(my_jni_filenames))
diff --git a/envsetup.sh b/envsetup.sh
index a31b9d8..b71a825 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -1241,7 +1241,7 @@
Darwin)
function mgrep()
{
- find -E . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o -type f -iregex '.*/(Makefile|Makefile\..*|.*\.make|.*\.mak|.*\.mk|.*\.bp)' \
+ find -E . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o \( -iregex '.*/(Makefile|Makefile\..*|.*\.make|.*\.mak|.*\.mk|.*\.bp)' -o -regex '(.*/)?soong/[^/]*.go' \) -type f \
-exec grep --color -n "$@" {} +
}
@@ -1255,7 +1255,7 @@
*)
function mgrep()
{
- find . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o -regextype posix-egrep -iregex '(.*\/Makefile|.*\/Makefile\..*|.*\.make|.*\.mak|.*\.mk|.*\.bp)' -type f \
+ find . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o \( -regextype posix-egrep -iregex '(.*\/Makefile|.*\/Makefile\..*|.*\.make|.*\.mak|.*\.mk|.*\.bp)' -o -regextype posix-extended -regex '(.*/)?soong/[^/]*.go' \) -type f \
-exec grep --color -n "$@" {} +
}
diff --git a/target/product/runtime_libart.mk b/target/product/runtime_libart.mk
index ffdd904..a8e0dfa 100644
--- a/target/product/runtime_libart.mk
+++ b/target/product/runtime_libart.mk
@@ -63,6 +63,7 @@
# ART/dex helpers.
PRODUCT_PACKAGES += \
ahat \
+ dexdiag \
dexdump \
dexlist \
hprof-conv \
diff --git a/tools/fs_config/Android.mk b/tools/fs_config/Android.mk
index dcd41aa..ab7f92d 100644
--- a/tools/fs_config/Android.mk
+++ b/tools/fs_config/Android.mk
@@ -305,6 +305,7 @@
my_fs_config_h :=
fs_config_generate_bin :=
my_gen_oem_aid :=
+fs_config_generate_extra_partition_list :=
# -----------------------------------------------------------------------------
# Unit tests.
diff --git a/tools/warn.py b/tools/warn.py
index 8aed830..be659b8 100755
--- a/tools/warn.py
+++ b/tools/warn.py
@@ -138,6 +138,24 @@
column_headers = [a[1] for a in attributes]
headers = [a[2] for a in attributes]
+
+def tidy_warn_pattern(description, pattern):
+ return {
+ 'category': 'C/C++',
+ 'severity': Severity.TIDY,
+ 'description': 'clang-tidy ' + description,
+ 'patterns': [r'.*: .+\[' + pattern + r'\]$']
+ }
+
+
+def simple_tidy_warn_pattern(description):
+ return tidy_warn_pattern(description, description)
+
+
+def group_tidy_warn_pattern(description):
+ return tidy_warn_pattern(description, description + r'-.+')
+
+
warn_patterns = [
# pylint:disable=line-too-long,g-inconsistent-quotes
{'category': 'C/C++', 'severity': Severity.ANALYZER,
@@ -223,6 +241,7 @@
'description': 'Unused function, variable or label',
'patterns': [r".*: warning: '.+' defined but not used",
r".*: warning: unused function '.+'",
+ r".*: warning: lambda capture .* is not used",
r".*: warning: private field '.+' is not used",
r".*: warning: unused variable '.+'"]},
{'category': 'C/C++', 'severity': Severity.MEDIUM, 'option': '-Wunused-value',
@@ -257,6 +276,9 @@
{'category': 'C/C++', 'severity': Severity.MEDIUM, 'option': '-Wformat-extra-args',
'description': 'Too many arguments for format string',
'patterns': [r".*: warning: too many arguments for format"]},
+ {'category': 'C/C++', 'severity': Severity.MEDIUM,
+ 'description': 'Too many arguments in call',
+ 'patterns': [r".*: warning: too many arguments in call to "]},
{'category': 'C/C++', 'severity': Severity.MEDIUM, 'option': '-Wformat-invalid-specifier',
'description': 'Invalid format specifier',
'patterns': [r".*: warning: invalid .+ specifier '.+'.+format-invalid-specifier"]},
@@ -436,6 +458,9 @@
{'category': 'C/C++', 'severity': Severity.MEDIUM, 'option': '-Wswitch-enum',
'description': 'Enum value not handled in switch',
'patterns': [r".*: warning: .*enumeration value.* not handled in switch.+Wswitch"]},
+ {'category': 'C/C++', 'severity': Severity.MEDIUM, 'option': '-Wuser-defined-warnings',
+ 'description': 'User defined warnings',
+ 'patterns': [r".*: warning: .* \[-Wuser-defined-warnings\]$"]},
{'category': 'java', 'severity': Severity.MEDIUM, 'option': '-encoding',
'description': 'Java: Non-ascii characters used, but ascii encoding specified',
'patterns': [r".*: warning: unmappable character for encoding ascii"]},
@@ -451,6 +476,9 @@
{'category': 'java', 'severity': Severity.MEDIUM,
'description': '_ used as an identifier',
'patterns': [r".*: warning: '_' used as an identifier"]},
+ {'category': 'java', 'severity': Severity.HIGH,
+ 'description': 'Use of internal proprietary API',
+ 'patterns': [r".*: warning: .* is internal proprietary API and may be removed"]},
# Warnings from Javac
{'category': 'java',
@@ -1382,6 +1410,9 @@
'description': 'Taking address of temporary',
'patterns': [r".*: warning: taking address of temporary"]},
{'category': 'C/C++', 'severity': Severity.MEDIUM,
+ 'description': 'Taking address of packed member',
+ 'patterns': [r".*: warning: taking address of packed member"]},
+ {'category': 'C/C++', 'severity': Severity.MEDIUM,
'description': 'Possible broken line continuation',
'patterns': [r".*: warning: backslash and newline separated by space"]},
{'category': 'C/C++', 'severity': Severity.MEDIUM, 'option': '-Wundefined-var-template',
@@ -1525,6 +1556,9 @@
{'category': 'C/C++', 'severity': Severity.MEDIUM, 'option': '-Wconversion-null',
'description': 'Converting to non-pointer type from NULL',
'patterns': [r".*: warning: converting to non-pointer type '.+' from NULL"]},
+ {'category': 'C/C++', 'severity': Severity.MEDIUM, 'option': '-Wsign-conversion',
+ 'description': 'Implicit sign conversion',
+ 'patterns': [r".*: warning: implicit conversion changes signedness"]},
{'category': 'C/C++', 'severity': Severity.MEDIUM, 'option': '-Wnull-conversion',
'description': 'Converting NULL to non-pointer type',
'patterns': [r".*: warning: implicit conversion of NULL constant to '.+'"]},
@@ -1654,6 +1688,9 @@
{'category': 'C/C++', 'severity': Severity.LOW, 'option': '-Winvalid-pp-token',
'description': 'Invalid pp token',
'patterns': [r".*: warning: missing .+Winvalid-pp-token"]},
+ {'category': 'link', 'severity': Severity.LOW,
+ 'description': 'need glibc to link',
+ 'patterns': [r".*: warning: .* requires at runtime .* glibc .* for linking"]},
{'category': 'C/C++', 'severity': Severity.MEDIUM,
'description': 'Operator new returns NULL',
@@ -1748,6 +1785,15 @@
'description': 'Mismatched class vs struct tags',
'patterns': [r".*: warning: '.+' defined as a .+ here but previously declared as a .+mismatched-tags",
r".*: warning: .+ was previously declared as a .+mismatched-tags"]},
+ {'category': 'FindEmulator', 'severity': Severity.HARMLESS,
+ 'description': 'FindEmulator: No such file or directory',
+ 'patterns': [r".*: warning: FindEmulator: .* No such file or directory"]},
+ {'category': 'google_tests', 'severity': Severity.HARMLESS,
+ 'description': 'google_tests: unknown installed file',
+ 'patterns': [r".*: warning: .*_tests: Unknown installed file for module"]},
+ {'category': 'make', 'severity': Severity.HARMLESS,
+ 'description': 'unusual tags debug eng',
+ 'patterns': [r".*: warning: .*: unusual tags debug eng"]},
# these next ones are to deal with formatting problems resulting from the log being mixed up by 'make -j'
{'category': 'C/C++', 'severity': Severity.SKIP,
@@ -1761,60 +1807,46 @@
'patterns': [r".*: warning: In file included from .+,"]},
# warnings from clang-tidy
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy readability',
- 'patterns': [r".*: .+\[readability-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy c++ core guidelines',
- 'patterns': [r".*: .+\[cppcoreguidelines-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy google-default-arguments',
- 'patterns': [r".*: .+\[google-default-arguments\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy google-runtime-int',
- 'patterns': [r".*: .+\[google-runtime-int\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy google-runtime-operator',
- 'patterns': [r".*: .+\[google-runtime-operator\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy google-runtime-references',
- 'patterns': [r".*: .+\[google-runtime-references\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy google-build',
- 'patterns': [r".*: .+\[google-build-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy google-explicit',
- 'patterns': [r".*: .+\[google-explicit-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy google-readability',
- 'patterns': [r".*: .+\[google-readability-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy google-global',
- 'patterns': [r".*: .+\[google-global-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy google- other',
- 'patterns': [r".*: .+\[google-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy modernize',
- 'patterns': [r".*: .+\[modernize-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy misc',
- 'patterns': [r".*: .+\[misc-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy performance-faster-string-find',
- 'patterns': [r".*: .+\[performance-faster-string-find\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy performance-for-range-copy',
- 'patterns': [r".*: .+\[performance-for-range-copy\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy performance-implicit-cast-in-loop',
- 'patterns': [r".*: .+\[performance-implicit-cast-in-loop\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy performance-unnecessary-copy-initialization',
- 'patterns': [r".*: .+\[performance-unnecessary-copy-initialization\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy performance-unnecessary-value-param',
- 'patterns': [r".*: .+\[performance-unnecessary-value-param\]$"]},
+ group_tidy_warn_pattern('cert'),
+ group_tidy_warn_pattern('clang-diagnostic'),
+ group_tidy_warn_pattern('cppcoreguidelines'),
+ group_tidy_warn_pattern('llvm'),
+ simple_tidy_warn_pattern('google-default-arguments'),
+ simple_tidy_warn_pattern('google-runtime-int'),
+ simple_tidy_warn_pattern('google-runtime-operator'),
+ simple_tidy_warn_pattern('google-runtime-references'),
+ group_tidy_warn_pattern('google-build'),
+ group_tidy_warn_pattern('google-explicit'),
+ group_tidy_warn_pattern('google-redability'),
+ group_tidy_warn_pattern('google-global'),
+ group_tidy_warn_pattern('google-redability'),
+ group_tidy_warn_pattern('google-redability'),
+ group_tidy_warn_pattern('google'),
+ simple_tidy_warn_pattern('hicpp-explicit-conversions'),
+ simple_tidy_warn_pattern('hicpp-function-size'),
+ simple_tidy_warn_pattern('hicpp-invalid-access-moved'),
+ simple_tidy_warn_pattern('hicpp-member-init'),
+ simple_tidy_warn_pattern('hicpp-delete-operators'),
+ simple_tidy_warn_pattern('hicpp-special-member-functions'),
+ simple_tidy_warn_pattern('hicpp-use-equals-default'),
+ simple_tidy_warn_pattern('hicpp-use-equals-delete'),
+ simple_tidy_warn_pattern('hicpp-no-assembler'),
+ simple_tidy_warn_pattern('hicpp-noexcept-move'),
+ simple_tidy_warn_pattern('hicpp-use-override'),
+ group_tidy_warn_pattern('hicpp'),
+ group_tidy_warn_pattern('modernize'),
+ group_tidy_warn_pattern('misc'),
+ simple_tidy_warn_pattern('performance-faster-string-find'),
+ simple_tidy_warn_pattern('performance-for-range-copy'),
+ simple_tidy_warn_pattern('performance-implicit-cast-in-loop'),
+ simple_tidy_warn_pattern('performance-inefficient-string-concatenation'),
+ simple_tidy_warn_pattern('performance-type-promotion-in-math-fn'),
+ simple_tidy_warn_pattern('performance-unnecessary-copy-initialization'),
+ simple_tidy_warn_pattern('performance-unnecessary-value-param'),
+ group_tidy_warn_pattern('performance'),
+ group_tidy_warn_pattern('readability'),
+
+ # warnings from clang-tidy's clang-analyzer checks
{'category': 'C/C++', 'severity': Severity.ANALYZER,
'description': 'clang-analyzer Unreachable code',
'patterns': [r".*: warning: This statement is never executed.*UnreachableCode"]},
@@ -1855,18 +1887,12 @@
'description': 'clang-analyzer call path problems',
'patterns': [r".*: warning: Call Path : .+"]},
{'category': 'C/C++', 'severity': Severity.ANALYZER,
+ 'description': 'clang-analyzer excessive padding',
+ 'patterns': [r".*: warning: Excessive padding in '.*'"]},
+ {'category': 'C/C++', 'severity': Severity.ANALYZER,
'description': 'clang-analyzer other',
'patterns': [r".*: .+\[clang-analyzer-.+\]$",
r".*: Call Path : .+$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy CERT',
- 'patterns': [r".*: .+\[cert-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-tidy llvm',
- 'patterns': [r".*: .+\[llvm-.+\]$"]},
- {'category': 'C/C++', 'severity': Severity.TIDY,
- 'description': 'clang-diagnostic',
- 'patterns': [r".*: .+\[clang-diagnostic-.+\]$"]},
# catch-all for warnings this script doesn't know about yet
{'category': 'C/C++', 'severity': Severity.UNKNOWN,