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: [ "SPDX-license-identifier-Apache-2.0", ], license_text: [ "NOTICE", ], } 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: [ "libandroid_runtime", "libbinder", "libcutils", "libdl", "libhidlbase", "liblog", "libnativeloader", // 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. "libsigchain", "libutils", // 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. "libwilhelm", ], compile_multilib: "both", cflags: [ "-Wall", "-Werror", "-Wunused", "-Wunreachable-code", ], // 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, }, }