Merge "logwrapper: update benchmark and remove old functions"
diff --git a/fs_mgr/libdm/Android.bp b/fs_mgr/libdm/Android.bp
index 449a170..dd95a5e 100644
--- a/fs_mgr/libdm/Android.bp
+++ b/fs_mgr/libdm/Android.bp
@@ -55,13 +55,7 @@
cc_defaults {
name: "libdm_defaults",
- sanitize: {
- misc_undefined: ["integer"],
- },
- cflags: [
- "-Wall",
- "-Werror",
- ],
+ defaults: ["fs_mgr_defaults"],
static_libs: [
"libdm",
"libbase",
@@ -76,3 +70,12 @@
name: "libdm_test",
defaults: ["libdm_defaults"],
}
+
+cc_test {
+ name: "vts_libdm_test",
+ defaults: ["libdm_defaults"],
+ test_suites: ["vts-core"],
+ auto_gen_config: true,
+ require_root: true,
+ test_min_api_level: 29,
+}
diff --git a/fs_mgr/libdm/vts_core/Android.bp b/fs_mgr/libdm/vts_core/Android.bp
deleted file mode 100644
index 2eceb28..0000000
--- a/fs_mgr/libdm/vts_core/Android.bp
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// Copyright (C) 2019 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.
-//
-
-cc_test {
- name: "vts_libdm_test",
- defaults: ["libdm_defaults"],
- test_suites: ["vts-core"],
- require_root: true,
- test_min_api_level: 29,
-}
diff --git a/fs_mgr/liblp/Android.bp b/fs_mgr/liblp/Android.bp
index 178b343..a7c77b8 100644
--- a/fs_mgr/liblp/Android.bp
+++ b/fs_mgr/liblp/Android.bp
@@ -69,13 +69,7 @@
cc_defaults {
name: "liblp_test_defaults",
- sanitize: {
- misc_undefined: ["integer"],
- },
- cflags: [
- "-Wall",
- "-Werror",
- ],
+ defaults: ["fs_mgr_defaults"],
cppflags: [
"-Wno-unused-parameter",
],
@@ -101,6 +95,14 @@
}
cc_test {
+ name: "vts_core_liblp_test",
+ defaults: ["liblp_test_defaults"],
+ test_suites: ["vts-core"],
+ auto_gen_config: true,
+ test_min_api_level: 29,
+}
+
+cc_test {
name: "vts_kernel_liblp_test",
defaults: ["liblp_test_defaults"],
}
diff --git a/fs_mgr/liblp/vts_core/Android.bp b/fs_mgr/liblp/vts_core/Android.bp
deleted file mode 100644
index 7af0b9e..0000000
--- a/fs_mgr/liblp/vts_core/Android.bp
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-// Copyright (C) 2019 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.
-//
-
-cc_test {
- name: "vts_core_liblp_test",
- defaults: ["liblp_test_defaults"],
- test_suites: ["vts-core"],
- test_min_api_level: 29,
-}
diff --git a/init/selinux.cpp b/init/selinux.cpp
index 4852cd0..a15d136 100644
--- a/init/selinux.cpp
+++ b/init/selinux.cpp
@@ -36,16 +36,18 @@
// The split SEPolicy is loaded as described below:
// 1) There is a precompiled SEPolicy located at either /vendor/etc/selinux/precompiled_sepolicy or
// /odm/etc/selinux/precompiled_sepolicy if odm parition is present. Stored along with this file
-// are the sha256 hashes of the parts of the SEPolicy on /system and /product that were used to
-// compile this precompiled policy. The system partition contains a similar sha256 of the parts
-// of the SEPolicy that it currently contains. Symmetrically, product paritition contains a
-// sha256 of its SEPolicy. System loads this precompiled_sepolicy directly if and only if hashes
-// for system policy match and hashes for product policy match.
-// 2) If these hashes do not match, then either /system or /product (or both) have been updated out
-// of sync with /vendor and the init needs to compile the SEPolicy. /system contains the
-// SEPolicy compiler, secilc, and it is used by the LoadSplitPolicy() function below to compile
-// the SEPolicy to a temp directory and load it. That function contains even more documentation
-// with the specific implementation details of how the SEPolicy is compiled if needed.
+// are the sha256 hashes of the parts of the SEPolicy on /system, /system_ext and /product that
+// were used to compile this precompiled policy. The system partition contains a similar sha256
+// of the parts of the SEPolicy that it currently contains. Symmetrically, system_ext and
+// product paritition contain sha256 hashes of their SEPolicy. The init loads this
+// precompiled_sepolicy directly if and only if the hashes along with the precompiled SEPolicy on
+// /vendor or /odm match the hashes for system, system_ext and product SEPolicy, respectively.
+// 2) If these hashes do not match, then either /system or /system_ext or /product (or some of them)
+// have been updated out of sync with /vendor (or /odm if it is present) and the init needs to
+// compile the SEPolicy. /system contains the SEPolicy compiler, secilc, and it is used by the
+// LoadSplitPolicy() function below to compile the SEPolicy to a temp directory and load it.
+// That function contains even more documentation with the specific implementation details of how
+// the SEPolicy is compiled if needed.
#include "selinux.h"
@@ -228,6 +230,13 @@
"/system/etc/selinux/plat_sepolicy_and_mapping.sha256";
return false;
}
+ std::string actual_system_ext_id;
+ if (!ReadFirstLine("/system_ext/etc/selinux/system_ext_sepolicy_and_mapping.sha256",
+ &actual_system_ext_id)) {
+ PLOG(INFO) << "Failed to read "
+ "/system_ext/etc/selinux/system_ext_sepolicy_and_mapping.sha256";
+ return false;
+ }
std::string actual_product_id;
if (!ReadFirstLine("/product/etc/selinux/product_sepolicy_and_mapping.sha256",
&actual_product_id)) {
@@ -243,6 +252,13 @@
file->clear();
return false;
}
+ std::string precompiled_system_ext_id;
+ std::string precompiled_system_ext_sha256 = *file + ".system_ext_sepolicy_and_mapping.sha256";
+ if (!ReadFirstLine(precompiled_system_ext_sha256.c_str(), &precompiled_system_ext_id)) {
+ PLOG(INFO) << "Failed to read " << precompiled_system_ext_sha256;
+ file->clear();
+ return false;
+ }
std::string precompiled_product_id;
std::string precompiled_product_sha256 = *file + ".product_sepolicy_and_mapping.sha256";
if (!ReadFirstLine(precompiled_product_sha256.c_str(), &precompiled_product_id)) {
@@ -251,6 +267,7 @@
return false;
}
if (actual_plat_id.empty() || actual_plat_id != precompiled_plat_id ||
+ actual_system_ext_id.empty() || actual_system_ext_id != precompiled_system_ext_id ||
actual_product_id.empty() || actual_product_id != precompiled_product_id) {
file->clear();
return false;
@@ -336,6 +353,17 @@
plat_compat_cil_file.clear();
}
+ std::string system_ext_policy_cil_file("/system_ext/etc/selinux/system_ext_sepolicy.cil");
+ if (access(system_ext_policy_cil_file.c_str(), F_OK) == -1) {
+ system_ext_policy_cil_file.clear();
+ }
+
+ std::string system_ext_mapping_file("/system_ext/etc/selinux/mapping/" + vend_plat_vers +
+ ".cil");
+ if (access(system_ext_mapping_file.c_str(), F_OK) == -1) {
+ system_ext_mapping_file.clear();
+ }
+
std::string product_policy_cil_file("/product/etc/selinux/product_sepolicy.cil");
if (access(product_policy_cil_file.c_str(), F_OK) == -1) {
product_policy_cil_file.clear();
@@ -384,6 +412,12 @@
if (!plat_compat_cil_file.empty()) {
compile_args.push_back(plat_compat_cil_file.c_str());
}
+ if (!system_ext_policy_cil_file.empty()) {
+ compile_args.push_back(system_ext_policy_cil_file.c_str());
+ }
+ if (!system_ext_mapping_file.empty()) {
+ compile_args.push_back(system_ext_mapping_file.c_str());
+ }
if (!product_policy_cil_file.empty()) {
compile_args.push_back(product_policy_cil_file.c_str());
}
diff --git a/libmeminfo/tools/procmem.cpp b/libmeminfo/tools/procmem.cpp
index 47881ed..b245f2a 100644
--- a/libmeminfo/tools/procmem.cpp
+++ b/libmeminfo/tools/procmem.cpp
@@ -17,6 +17,7 @@
#include <errno.h>
#include <inttypes.h>
#include <stdlib.h>
+#include <sys/mman.h>
#include <unistd.h>
#include <iostream>
@@ -59,25 +60,25 @@
static void print_separator(std::stringstream& ss) {
if (show_wss) {
- ss << ::android::base::StringPrintf("%7s %7s %7s %7s %7s %7s %7s %s\n", "-------",
+ ss << ::android::base::StringPrintf("%7s %7s %7s %7s %7s %7s %7s %7s %s\n",
"-------", "-------", "-------", "-------", "-------",
- "-------", "");
+ "-------", "-------", "-------", "");
return;
}
- ss << ::android::base::StringPrintf("%7s %7s %7s %7s %7s %7s %7s %7s %s\n", "-------",
+ ss << ::android::base::StringPrintf("%7s %7s %7s %7s %7s %7s %7s %7s %7s %s\n",
"-------", "-------", "-------", "-------", "-------",
- "-------", "-------", "");
+ "-------", "-------", "-------", "-------", "");
}
static void print_header(std::stringstream& ss) {
if (show_wss) {
- ss << ::android::base::StringPrintf("%7s %7s %7s %7s %7s %7s %7s %s\n", "WRss",
+ ss << ::android::base::StringPrintf("%7s %7s %7s %7s %7s %7s %7s %7s %s\n", "WRss",
"WPss", "WUss", "WShCl", "WShDi", "WPrCl", "WPrDi",
- "Name");
+ "Flags", "Name");
} else {
- ss << ::android::base::StringPrintf("%7s %7s %7s %7s %7s %7s %7s %7s %s\n", "Vss",
- "Rss", "Pss", "Uss", "ShCl", "ShDi", "PrCl", "PrDi",
- "Name");
+ ss << ::android::base::StringPrintf("%7s %7s %7s %7s %7s %7s %7s %7s %7s %s\n",
+ "Vss", "Rss", "Pss", "Uss", "ShCl", "ShDi", "PrCl",
+ "PrDi", "Flags", "Name");
}
print_separator(ss);
}
@@ -103,7 +104,15 @@
continue;
}
print_stats(ss, vma_stats);
- ss << vma.name << std::endl;
+
+ // TODO: b/141711064 fix libprocinfo to record (p)rivate or (s)hared flag
+ // for now always report as private
+ std::string flags_str("---p");
+ if (vma.flags & PROT_READ) flags_str[0] = 'r';
+ if (vma.flags & PROT_WRITE) flags_str[1] = 'w';
+ if (vma.flags & PROT_EXEC) flags_str[2] = 'x';
+
+ ss << ::android::base::StringPrintf("%7s ", flags_str.c_str()) << vma.name << std::endl;
}
print_separator(ss);
print_stats(ss, proc_stats);
diff --git a/libnativebridge/CPPLINT.cfg b/libnativebridge/CPPLINT.cfg
new file mode 100644
index 0000000..578047b
--- /dev/null
+++ b/libnativebridge/CPPLINT.cfg
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2019 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.
+#
+
+filter=-build/header_guard
+filter=-whitespace/comments
+filter=-whitespace/parens
diff --git a/libnativeloader/CPPLINT.cfg b/libnativeloader/CPPLINT.cfg
new file mode 100644
index 0000000..db98533
--- /dev/null
+++ b/libnativeloader/CPPLINT.cfg
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2019 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.
+#
+
+filter=-build/header_guard
+filter=-readability/check
+filter=-build/namespaces
diff --git a/libunwindstack/include/unwindstack/MapInfo.h b/libunwindstack/include/unwindstack/MapInfo.h
index 13ce10f..6c5cfc4 100644
--- a/libunwindstack/include/unwindstack/MapInfo.h
+++ b/libunwindstack/include/unwindstack/MapInfo.h
@@ -59,11 +59,14 @@
uint16_t flags = 0;
std::string name;
std::shared_ptr<Elf> elf;
+ // The offset of the beginning of this mapping to the beginning of the
+ // ELF file.
+ // elf_offset == offset - elf_start_offset.
// This value is only non-zero if the offset is non-zero but there is
// no elf signature found at that offset.
uint64_t elf_offset = 0;
- // This value is the offset from the map in memory that is the start
- // of the elf. This is not equal to offset when the linker splits
+ // This value is the offset into the file of the map in memory that is the
+ // start of the elf. This is not equal to offset when the linker splits
// shared libraries into a read-only and read-execute map.
uint64_t elf_start_offset = 0;
diff --git a/lmkd/lmkd.c b/lmkd/lmkd.c
index f06717d..bf0ae4d 100644
--- a/lmkd/lmkd.c
+++ b/lmkd/lmkd.c
@@ -1321,8 +1321,9 @@
/* gid containing AID_READPROC required */
snprintf(path, PATH_MAX, "/proc/%d/cmdline", pid);
fd = open(path, O_RDONLY | O_CLOEXEC);
- if (fd == -1)
+ if (fd == -1) {
return NULL;
+ }
ret = read_all(fd, line, sizeof(line) - 1);
close(fd);
if (ret < 0) {
@@ -1330,8 +1331,11 @@
}
cp = strchr(line, ' ');
- if (cp)
+ if (cp) {
*cp = '\0';
+ } else {
+ line[ret] = '\0';
+ }
return line;
}
diff --git a/rootdir/Android.mk b/rootdir/Android.mk
index 7097a12..a0059db 100644
--- a/rootdir/Android.mk
+++ b/rootdir/Android.mk
@@ -432,6 +432,22 @@
echo $(lib) >> $@;)
#######################################
+# vndkcorevariant.libraries.txt
+include $(CLEAR_VARS)
+LOCAL_MODULE := vndkcorevariant.libraries.txt
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)
+LOCAL_MODULE_STEM := $(call append_vndk_version,$(LOCAL_MODULE))
+include $(BUILD_SYSTEM)/base_rules.mk
+$(LOCAL_BUILT_MODULE): PRIVATE_VNDK_CORE_VARIANT_LIBRARIES := $(call module-installed-files-or-guess,$(VNDK_USING_CORE_VARIANT_LIBRARIES),.vendor)
+$(LOCAL_BUILT_MODULE):
+ @echo "Generate: $@"
+ @mkdir -p $(dir $@)
+ $(hide) echo -n > $@
+ $(hide) $(foreach lib,$(PRIVATE_VNDK_CORE_VARIANT_LIBRARIES), \
+ echo $(lib) >> $@;)
+
+#######################################
# adb_debug.prop in debug ramdisk
include $(CLEAR_VARS)
LOCAL_MODULE := adb_debug.prop