xref: /aosp_15_r20/frameworks/base/cmds/app_process/Android.bp (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
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