liblog_for_runtime_apex is a static variant of liblog which is explicitly marked as available to the runtime APEX. Any static dependency to liblog from inside the runtime APEX is changed from liblog to liblog_for_runtime_apex. Previously, to support the need for using liblog inside the runtime APEX, the entire (i.e. both static and shared variants) liblog module was marked as available to the runtime APEX, although in reality only the static variant of the library was needed there. This was not only looking dirty, but also has caused a problem like b/241259844. To fix this, liblog is separated into two parts. (1) liblog and (2) liblog_for_runtime_apex. (1) no longer is available to the runtime APEX and is intended to be depended on in most cases: either from the non-updatable platform, or from other APEXes. (2) is a static library which is explicitly marked as available to the runtime APEX and also visible to certain modules that are included in the runtime APEX. Bug: 241259844 Test: m and check that liblog depends on stub library of libc Change-Id: I10edd4487a6f090ef026acffe1ffbd067387a0d3
491 lines
11 KiB
Text
491 lines
11 KiB
Text
package {
|
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
|
}
|
|
|
|
cc_defaults {
|
|
name: "debuggerd_defaults",
|
|
cflags: [
|
|
"-Wall",
|
|
"-Wextra",
|
|
"-Werror",
|
|
"-Wno-gcc-compat",
|
|
"-Wno-unused-argument",
|
|
"-Wno-unused-function",
|
|
"-Wno-nullability-completeness",
|
|
"-Os",
|
|
"-fno-finite-loops",
|
|
],
|
|
|
|
local_include_dirs: ["include"],
|
|
}
|
|
|
|
cc_library_headers {
|
|
name: "libdebuggerd_common_headers",
|
|
export_include_dirs: ["common/include"],
|
|
recovery_available: true,
|
|
vendor_ramdisk_available: true,
|
|
apex_available: [
|
|
"com.android.virt",
|
|
"//apex_available:platform",
|
|
],
|
|
}
|
|
|
|
cc_library_shared {
|
|
name: "libtombstoned_client",
|
|
defaults: ["debuggerd_defaults"],
|
|
srcs: [
|
|
"tombstoned/tombstoned_client.cpp",
|
|
"util.cpp",
|
|
],
|
|
|
|
header_libs: ["libdebuggerd_common_headers"],
|
|
|
|
static_libs: [
|
|
"libasync_safe",
|
|
],
|
|
|
|
shared_libs: [
|
|
"libbase",
|
|
"libcutils",
|
|
],
|
|
apex_available: [
|
|
"com.android.virt",
|
|
"//apex_available:platform",
|
|
],
|
|
|
|
export_header_lib_headers: ["libdebuggerd_common_headers"],
|
|
export_include_dirs: ["tombstoned/include"],
|
|
}
|
|
|
|
// Utility library to talk to tombstoned and get an output fd.
|
|
cc_library_static {
|
|
name: "libtombstoned_client_static",
|
|
defaults: ["debuggerd_defaults"],
|
|
recovery_available: true,
|
|
vendor_ramdisk_available: true,
|
|
srcs: [
|
|
"tombstoned/tombstoned_client.cpp",
|
|
"util.cpp",
|
|
],
|
|
|
|
header_libs: ["libdebuggerd_common_headers"],
|
|
|
|
whole_static_libs: [
|
|
"libasync_safe",
|
|
"libcutils",
|
|
"libbase",
|
|
],
|
|
|
|
export_header_lib_headers: ["libdebuggerd_common_headers"],
|
|
export_include_dirs: ["tombstoned/include"],
|
|
}
|
|
|
|
// Core implementation, linked into libdebuggerd_handler and the dynamic linker.
|
|
cc_library_static {
|
|
name: "libdebuggerd_handler_core",
|
|
defaults: ["debuggerd_defaults"],
|
|
recovery_available: true,
|
|
vendor_ramdisk_available: true,
|
|
srcs: ["handler/debuggerd_handler.cpp"],
|
|
|
|
header_libs: [
|
|
"libbase_headers",
|
|
"libdebuggerd_common_headers",
|
|
"bionic_libc_platform_headers",
|
|
],
|
|
|
|
whole_static_libs: [
|
|
"libasync_safe",
|
|
"libcutils",
|
|
"libdebuggerd",
|
|
],
|
|
|
|
export_header_lib_headers: ["libdebuggerd_common_headers"],
|
|
export_include_dirs: ["include"],
|
|
}
|
|
|
|
// Implementation with a no-op fallback.
|
|
cc_library_static {
|
|
name: "libdebuggerd_handler",
|
|
defaults: ["debuggerd_defaults"],
|
|
srcs: ["handler/debuggerd_fallback_nop.cpp"],
|
|
|
|
header_libs: ["bionic_libc_platform_headers"],
|
|
export_header_lib_headers: ["bionic_libc_platform_headers"],
|
|
|
|
whole_static_libs: [
|
|
"libdebuggerd_handler_core",
|
|
],
|
|
|
|
export_include_dirs: ["include"],
|
|
}
|
|
|
|
// Fallback implementation, for use in the Bionic linker only.
|
|
cc_library_static {
|
|
name: "libdebuggerd_handler_fallback",
|
|
visibility: ["//bionic/linker"],
|
|
apex_available: [
|
|
"com.android.runtime",
|
|
"//apex_available:platform",
|
|
],
|
|
defaults: ["debuggerd_defaults"],
|
|
recovery_available: true,
|
|
vendor_ramdisk_available: true,
|
|
srcs: [
|
|
"handler/debuggerd_fallback.cpp",
|
|
],
|
|
|
|
whole_static_libs: [
|
|
"libdebuggerd_handler_core",
|
|
"libtombstoned_client_static",
|
|
"libasync_safe",
|
|
"libbase",
|
|
"libdebuggerd",
|
|
"libunwindstack_no_dex",
|
|
"liblzma",
|
|
"libcutils",
|
|
],
|
|
|
|
header_libs: ["bionic_libc_platform_headers"],
|
|
export_header_lib_headers: ["bionic_libc_platform_headers"],
|
|
|
|
export_include_dirs: ["include"],
|
|
}
|
|
|
|
cc_library {
|
|
name: "libdebuggerd_client",
|
|
defaults: ["debuggerd_defaults"],
|
|
srcs: [
|
|
"client/debuggerd_client.cpp",
|
|
"util.cpp",
|
|
],
|
|
|
|
shared_libs: [
|
|
"libbase",
|
|
"libcutils",
|
|
"libprocinfo",
|
|
],
|
|
|
|
header_libs: [
|
|
"libdebuggerd_common_headers",
|
|
"bionic_libc_platform_headers",
|
|
],
|
|
export_header_lib_headers: [
|
|
"libdebuggerd_common_headers",
|
|
"bionic_libc_platform_headers",
|
|
],
|
|
|
|
export_include_dirs: ["include"],
|
|
}
|
|
|
|
cc_library_static {
|
|
name: "libdebuggerd",
|
|
defaults: ["debuggerd_defaults"],
|
|
recovery_available: true,
|
|
vendor_ramdisk_available: true,
|
|
|
|
srcs: [
|
|
"libdebuggerd/backtrace.cpp",
|
|
"libdebuggerd/gwp_asan.cpp",
|
|
"libdebuggerd/open_files_list.cpp",
|
|
"libdebuggerd/tombstone.cpp",
|
|
"libdebuggerd/tombstone_proto.cpp",
|
|
"libdebuggerd/tombstone_proto_to_text.cpp",
|
|
"libdebuggerd/utility.cpp",
|
|
],
|
|
|
|
local_include_dirs: ["libdebuggerd/include"],
|
|
export_include_dirs: ["libdebuggerd/include"],
|
|
|
|
include_dirs: [
|
|
// Needed for private/bionic_fdsan.h
|
|
"bionic/libc",
|
|
],
|
|
header_libs: [
|
|
"bionic_libc_platform_headers",
|
|
"gwp_asan_headers",
|
|
"liblog_headers",
|
|
],
|
|
|
|
static_libs: [
|
|
"libdexfile_support", // libunwindstack dependency
|
|
"libunwindstack",
|
|
"liblzma",
|
|
"libbase",
|
|
"libcutils",
|
|
],
|
|
runtime_libs: [
|
|
"libdexfile", // libdexfile_support dependency
|
|
],
|
|
|
|
whole_static_libs: [
|
|
"libasync_safe",
|
|
"gwp_asan_crash_handler",
|
|
"libtombstone_proto",
|
|
"libprocinfo",
|
|
"libprotobuf-cpp-lite",
|
|
],
|
|
|
|
target: {
|
|
recovery: {
|
|
exclude_static_libs: [
|
|
"libdexfile_support",
|
|
],
|
|
exclude_runtime_libs: [
|
|
"libdexfile",
|
|
],
|
|
},
|
|
vendor_ramdisk: {
|
|
exclude_static_libs: [
|
|
"libdexfile_support",
|
|
],
|
|
exclude_runtime_libs: [
|
|
"libdexfile",
|
|
],
|
|
},
|
|
},
|
|
|
|
product_variables: {
|
|
debuggable: {
|
|
cflags: ["-DROOT_POSSIBLE"],
|
|
},
|
|
|
|
malloc_not_svelte: {
|
|
cflags: ["-DUSE_SCUDO"],
|
|
whole_static_libs: ["libscudo"],
|
|
srcs: ["libdebuggerd/scudo.cpp"],
|
|
header_libs: ["scudo_headers"],
|
|
},
|
|
},
|
|
}
|
|
|
|
cc_binary {
|
|
name: "pbtombstone",
|
|
defaults: ["debuggerd_defaults"],
|
|
srcs: ["pbtombstone.cpp"],
|
|
static_libs: [
|
|
"libbase",
|
|
"libdebuggerd",
|
|
"liblog",
|
|
"libprotobuf-cpp-lite",
|
|
"libtombstone_proto",
|
|
"libunwindstack",
|
|
],
|
|
}
|
|
|
|
cc_test_library {
|
|
name: "libcrash_test",
|
|
defaults: ["debuggerd_defaults"],
|
|
srcs: ["crash_test.cpp"],
|
|
}
|
|
|
|
cc_test {
|
|
name: "debuggerd_test",
|
|
defaults: ["debuggerd_defaults"],
|
|
require_root: true,
|
|
|
|
cflags: ["-Wno-missing-field-initializers"],
|
|
srcs: [
|
|
"libdebuggerd/test/dump_memory_test.cpp",
|
|
"libdebuggerd/test/elf_fake.cpp",
|
|
"libdebuggerd/test/log_fake.cpp",
|
|
"libdebuggerd/test/open_files_list_test.cpp",
|
|
"libdebuggerd/test/utility_test.cpp",
|
|
],
|
|
|
|
target: {
|
|
android: {
|
|
srcs: [
|
|
"client/debuggerd_client_test.cpp",
|
|
"debuggerd_test.cpp",
|
|
],
|
|
static_libs: [
|
|
"libasync_safe",
|
|
"libtombstoned_client_static",
|
|
],
|
|
},
|
|
},
|
|
|
|
shared_libs: [
|
|
"libbase",
|
|
"libcutils",
|
|
"libdebuggerd_client",
|
|
"liblog",
|
|
"libnativehelper",
|
|
"libunwindstack",
|
|
],
|
|
|
|
static_libs: [
|
|
"libdebuggerd",
|
|
"libgmock",
|
|
"libminijail",
|
|
],
|
|
|
|
header_libs: [
|
|
"bionic_libc_platform_headers",
|
|
"gwp_asan_headers",
|
|
],
|
|
|
|
local_include_dirs: [
|
|
"libdebuggerd",
|
|
],
|
|
|
|
compile_multilib: "both",
|
|
multilib: {
|
|
lib32: {
|
|
stem: "debuggerd_test32",
|
|
},
|
|
lib64: {
|
|
stem: "debuggerd_test64",
|
|
},
|
|
},
|
|
|
|
data: [
|
|
":libcrash_test",
|
|
],
|
|
|
|
test_suites: ["device-tests"],
|
|
}
|
|
|
|
cc_benchmark {
|
|
name: "debuggerd_benchmark",
|
|
defaults: ["debuggerd_defaults"],
|
|
srcs: ["debuggerd_benchmark.cpp"],
|
|
shared_libs: [
|
|
"libbase",
|
|
"libdebuggerd_client",
|
|
],
|
|
}
|
|
|
|
cc_binary {
|
|
name: "crash_dump",
|
|
srcs: [
|
|
"crash_dump.cpp",
|
|
"util.cpp",
|
|
],
|
|
defaults: ["debuggerd_defaults"],
|
|
|
|
compile_multilib: "both",
|
|
multilib: {
|
|
lib32: {
|
|
suffix: "32",
|
|
},
|
|
lib64: {
|
|
suffix: "64",
|
|
},
|
|
},
|
|
|
|
header_libs: [
|
|
"bionic_libc_platform_headers",
|
|
],
|
|
|
|
static_libs: [
|
|
"libtombstoned_client_static",
|
|
"libdebuggerd",
|
|
"libcutils",
|
|
|
|
"libtombstone_proto",
|
|
"libprotobuf-cpp-lite",
|
|
],
|
|
|
|
shared_libs: [
|
|
"libbase",
|
|
"liblog",
|
|
"libprocinfo",
|
|
"libunwindstack",
|
|
],
|
|
|
|
apex_available: [
|
|
"com.android.runtime",
|
|
],
|
|
|
|
// Required for tests.
|
|
required: ["crash_dump.policy"],
|
|
}
|
|
|
|
cc_binary {
|
|
name: "debuggerd",
|
|
srcs: [
|
|
"debuggerd.cpp",
|
|
],
|
|
defaults: ["debuggerd_defaults"],
|
|
|
|
shared_libs: [
|
|
"libbase",
|
|
"libdebuggerd_client",
|
|
"liblog",
|
|
"libprocinfo",
|
|
],
|
|
|
|
local_include_dirs: ["include"],
|
|
}
|
|
|
|
cc_binary {
|
|
name: "tombstoned",
|
|
srcs: [
|
|
"util.cpp",
|
|
"tombstoned/intercept_manager.cpp",
|
|
"tombstoned/tombstoned.cpp",
|
|
],
|
|
defaults: ["debuggerd_defaults"],
|
|
|
|
header_libs: [
|
|
"bionic_libc_platform_headers",
|
|
"libdebuggerd_common_headers"
|
|
],
|
|
|
|
static_libs: [
|
|
"libbase",
|
|
"libcutils",
|
|
"libevent",
|
|
"liblog",
|
|
],
|
|
|
|
init_rc: ["tombstoned/tombstoned.rc"],
|
|
}
|
|
|
|
prebuilt_etc {
|
|
name: "crash_dump.policy",
|
|
sub_dir: "seccomp_policy",
|
|
filename_from_src: true,
|
|
arch: {
|
|
arm: {
|
|
src: "seccomp_policy/crash_dump.arm.policy",
|
|
},
|
|
arm64: {
|
|
src: "seccomp_policy/crash_dump.arm64.policy",
|
|
},
|
|
x86: {
|
|
src: "seccomp_policy/crash_dump.x86.policy",
|
|
},
|
|
x86_64: {
|
|
src: "seccomp_policy/crash_dump.x86_64.policy",
|
|
},
|
|
},
|
|
required: [
|
|
"crash_dump.policy_other",
|
|
],
|
|
}
|
|
|
|
|
|
// NB -- this installs "the other" architecture. (puts 32 bit config in on 64 bit device)
|
|
// or at least that is the intention so that we get both of them populated
|
|
prebuilt_etc {
|
|
name: "crash_dump.policy_other",
|
|
sub_dir: "seccomp_policy",
|
|
filename_from_src: true,
|
|
arch: {
|
|
arm: {
|
|
src: "seccomp_policy/crash_dump.arm64.policy",
|
|
},
|
|
arm64: {
|
|
src: "seccomp_policy/crash_dump.arm.policy",
|
|
},
|
|
x86: {
|
|
src: "seccomp_policy/crash_dump.x86_64.policy",
|
|
},
|
|
x86_64: {
|
|
src: "seccomp_policy/crash_dump.x86.policy",
|
|
},
|
|
},
|
|
}
|