blob: a1575173ded62b2ba19d7ded2a33feee649f2a21 [file] [log] [blame]
package {
default_applicable_licenses: ["frameworks_base_cmds_app_process_license"],
// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
name: "frameworks_base_cmds_app_process_license",
visibility: [":__subpackages__"],
license_kinds: [
license_text: [
cc_binary {
name: "app_process",
srcs: ["app_main.cpp"],
multilib: {
lib32: {
suffix: "32",
lib64: {
suffix: "64",
// Symbols exported from the executable in .dynsym interpose symbols in every
// linker namespace, including an app's classloader namespace. Provide this
// version script to prevent unwanted interposition.
// By default, the static linker doesn't export most of an executable's symbols,
// but it will export a symbol that appears to override a symbol in a needed DSO.
// This commonly happens with C++ vaguely-linked entities, such as template
// functions or type_info variables. Hence, a version script is needed even for
// an executable.
version_script: "version-script.txt",
shared_libs: [
// Even though app_process doesn't call into libsigchain, we need to
// make sure it's in the DT list of app_process, as we want all code
// in app_process and the libraries it loads to find libsigchain
// symbols before libc symbols.
// This is a list of libraries that need to be included in order to avoid
// bad apps. This prevents a library from having a mismatch when resolving
// new/delete from an app shared library.
// See b/21032018 for more details.
compile_multilib: "both",
cflags: [
// If SANITIZE_LITE is revived this will need:
//product_variables: {
// sanitize_lite: {
// // In SANITIZE_LITE mode, we create the sanitized binary in a separate location (but reuse
// // the same module). Using the same module also works around an issue with make: binaries
// // that depend on sanitized libraries will be relinked, even if they set LOCAL_SANITIZE := never.
// //
// // Also pull in the asanwrapper helper.
// relative_install_path: "asan",
// required: ["asanwrapper"],
// },
// Create a symlink from app_process to app_process32 or 64
// depending on the target configuration.
symlink_preferred_arch: true,
// Enable ASYNC MTE in the zygote, in order to allow apps and the system
// server to use MTE. We use ASYNC because we don't expect the pre-fork
// zygote to have substantial memory corruption bugs (as it's primarily Java
// code), and we don't want to waste memory recording malloc/free stack
// traces (which happens in SYNC mode).
sanitize: {
memtag_heap: true,