1*d57664e9SAndroid Build Coastguard Workerpackage { 2*d57664e9SAndroid Build Coastguard Worker default_applicable_licenses: ["frameworks_base_cmds_app_process_license"], 3*d57664e9SAndroid Build Coastguard Worker} 4*d57664e9SAndroid Build Coastguard Worker 5*d57664e9SAndroid Build Coastguard Worker// Added automatically by a large-scale-change 6*d57664e9SAndroid Build Coastguard Worker// See: http://go/android-license-faq 7*d57664e9SAndroid Build Coastguard Workerlicense { 8*d57664e9SAndroid Build Coastguard Worker name: "frameworks_base_cmds_app_process_license", 9*d57664e9SAndroid Build Coastguard Worker visibility: [":__subpackages__"], 10*d57664e9SAndroid Build Coastguard Worker license_kinds: [ 11*d57664e9SAndroid Build Coastguard Worker "SPDX-license-identifier-Apache-2.0", 12*d57664e9SAndroid Build Coastguard Worker ], 13*d57664e9SAndroid Build Coastguard Worker license_text: [ 14*d57664e9SAndroid Build Coastguard Worker "NOTICE", 15*d57664e9SAndroid Build Coastguard Worker ], 16*d57664e9SAndroid Build Coastguard Worker} 17*d57664e9SAndroid Build Coastguard Worker 18*d57664e9SAndroid Build Coastguard Workercc_binary { 19*d57664e9SAndroid Build Coastguard Worker name: "app_process", 20*d57664e9SAndroid Build Coastguard Worker 21*d57664e9SAndroid Build Coastguard Worker srcs: ["app_main.cpp"], 22*d57664e9SAndroid Build Coastguard Worker 23*d57664e9SAndroid Build Coastguard Worker multilib: { 24*d57664e9SAndroid Build Coastguard Worker lib32: { 25*d57664e9SAndroid Build Coastguard Worker suffix: "32", 26*d57664e9SAndroid Build Coastguard Worker }, 27*d57664e9SAndroid Build Coastguard Worker lib64: { 28*d57664e9SAndroid Build Coastguard Worker suffix: "64", 29*d57664e9SAndroid Build Coastguard Worker }, 30*d57664e9SAndroid Build Coastguard Worker }, 31*d57664e9SAndroid Build Coastguard Worker 32*d57664e9SAndroid Build Coastguard Worker // Symbols exported from the executable in .dynsym interpose symbols in every 33*d57664e9SAndroid Build Coastguard Worker // linker namespace, including an app's classloader namespace. Provide this 34*d57664e9SAndroid Build Coastguard Worker // version script to prevent unwanted interposition. 35*d57664e9SAndroid Build Coastguard Worker // 36*d57664e9SAndroid Build Coastguard Worker // By default, the static linker doesn't export most of an executable's symbols, 37*d57664e9SAndroid Build Coastguard Worker // but it will export a symbol that appears to override a symbol in a needed DSO. 38*d57664e9SAndroid Build Coastguard Worker // This commonly happens with C++ vaguely-linked entities, such as template 39*d57664e9SAndroid Build Coastguard Worker // functions or type_info variables. Hence, a version script is needed even for 40*d57664e9SAndroid Build Coastguard Worker // an executable. 41*d57664e9SAndroid Build Coastguard Worker version_script: "version-script.txt", 42*d57664e9SAndroid Build Coastguard Worker 43*d57664e9SAndroid Build Coastguard Worker shared_libs: [ 44*d57664e9SAndroid Build Coastguard Worker "libandroid_runtime", 45*d57664e9SAndroid Build Coastguard Worker "libbinder", 46*d57664e9SAndroid Build Coastguard Worker "libcutils", 47*d57664e9SAndroid Build Coastguard Worker "libdl", 48*d57664e9SAndroid Build Coastguard Worker "libhidlbase", 49*d57664e9SAndroid Build Coastguard Worker "liblog", 50*d57664e9SAndroid Build Coastguard Worker "libnativeloader", 51*d57664e9SAndroid Build Coastguard Worker 52*d57664e9SAndroid Build Coastguard Worker // Even though app_process doesn't call into libsigchain, we need to 53*d57664e9SAndroid Build Coastguard Worker // make sure it's in the DT list of app_process, as we want all code 54*d57664e9SAndroid Build Coastguard Worker // in app_process and the libraries it loads to find libsigchain 55*d57664e9SAndroid Build Coastguard Worker // symbols before libc symbols. 56*d57664e9SAndroid Build Coastguard Worker "libsigchain", 57*d57664e9SAndroid Build Coastguard Worker 58*d57664e9SAndroid Build Coastguard Worker "libutils", 59*d57664e9SAndroid Build Coastguard Worker 60*d57664e9SAndroid Build Coastguard Worker // This is a list of libraries that need to be included in order to avoid 61*d57664e9SAndroid Build Coastguard Worker // bad apps. This prevents a library from having a mismatch when resolving 62*d57664e9SAndroid Build Coastguard Worker // new/delete from an app shared library. 63*d57664e9SAndroid Build Coastguard Worker // See b/21032018 for more details. 64*d57664e9SAndroid Build Coastguard Worker "libwilhelm", 65*d57664e9SAndroid Build Coastguard Worker ], 66*d57664e9SAndroid Build Coastguard Worker 67*d57664e9SAndroid Build Coastguard Worker compile_multilib: "both", 68*d57664e9SAndroid Build Coastguard Worker 69*d57664e9SAndroid Build Coastguard Worker cflags: [ 70*d57664e9SAndroid Build Coastguard Worker "-Wall", 71*d57664e9SAndroid Build Coastguard Worker "-Werror", 72*d57664e9SAndroid Build Coastguard Worker "-Wunused", 73*d57664e9SAndroid Build Coastguard Worker "-Wunreachable-code", 74*d57664e9SAndroid Build Coastguard Worker ], 75*d57664e9SAndroid Build Coastguard Worker 76*d57664e9SAndroid Build Coastguard Worker // If SANITIZE_LITE is revived this will need: 77*d57664e9SAndroid Build Coastguard Worker //product_variables: { 78*d57664e9SAndroid Build Coastguard Worker // sanitize_lite: { 79*d57664e9SAndroid Build Coastguard Worker // // In SANITIZE_LITE mode, we create the sanitized binary in a separate location (but reuse 80*d57664e9SAndroid Build Coastguard Worker // // the same module). Using the same module also works around an issue with make: binaries 81*d57664e9SAndroid Build Coastguard Worker // // that depend on sanitized libraries will be relinked, even if they set LOCAL_SANITIZE := never. 82*d57664e9SAndroid Build Coastguard Worker // // 83*d57664e9SAndroid Build Coastguard Worker // // Also pull in the asanwrapper helper. 84*d57664e9SAndroid Build Coastguard Worker // relative_install_path: "asan", 85*d57664e9SAndroid Build Coastguard Worker // required: ["asanwrapper"], 86*d57664e9SAndroid Build Coastguard Worker // }, 87*d57664e9SAndroid Build Coastguard Worker //}, 88*d57664e9SAndroid Build Coastguard Worker 89*d57664e9SAndroid Build Coastguard Worker // Create a symlink from app_process to app_process32 or 64 90*d57664e9SAndroid Build Coastguard Worker // depending on the target configuration. 91*d57664e9SAndroid Build Coastguard Worker symlink_preferred_arch: true, 92*d57664e9SAndroid Build Coastguard Worker 93*d57664e9SAndroid Build Coastguard Worker // Enable ASYNC MTE in the zygote, in order to allow apps and the system 94*d57664e9SAndroid Build Coastguard Worker // server to use MTE. We use ASYNC because we don't expect the pre-fork 95*d57664e9SAndroid Build Coastguard Worker // zygote to have substantial memory corruption bugs (as it's primarily Java 96*d57664e9SAndroid Build Coastguard Worker // code), and we don't want to waste memory recording malloc/free stack 97*d57664e9SAndroid Build Coastguard Worker // traces (which happens in SYNC mode). 98*d57664e9SAndroid Build Coastguard Worker sanitize: { 99*d57664e9SAndroid Build Coastguard Worker memtag_heap: true, 100*d57664e9SAndroid Build Coastguard Worker }, 101*d57664e9SAndroid Build Coastguard Worker} 102