cc_defaults { name: "debuggerd_defaults", defaults: ["linux_bionic_supported"], cflags: [ "-Wall", "-Wextra", "-Werror", "-Wno-nullability-completeness", "-Os", ], // util.cpp gets async signal safe logging via libc_logging, // which defines its interface in bionic private headers. include_dirs: ["bionic/libc"], local_include_dirs: ["include"], } // Utility library to tombstoned and get an output fd. cc_library_static { name: "libtombstoned_client", defaults: ["debuggerd_defaults"], srcs: [ "tombstoned_client.cpp", "util.cpp", ], whole_static_libs: [ "libc_logging", "libcutils", "libbase", ], } // Core implementation, linked into libdebuggerd_handler and the dynamic linker. cc_library_static { name: "libdebuggerd_handler_core", defaults: ["debuggerd_defaults"], srcs: ["handler/debuggerd_handler.cpp"], whole_static_libs: [ "libc_logging", "libdebuggerd", ], 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"], whole_static_libs: [ "libdebuggerd_handler_core", ], export_include_dirs: ["include"], } // Fallback implementation. cc_library_static { name: "libdebuggerd_handler_fallback", defaults: ["debuggerd_defaults"], srcs: [ "handler/debuggerd_fallback.cpp", ], whole_static_libs: [ "libdebuggerd_handler_core", "libtombstoned_client", "libbase", "libdebuggerd", "libbacktrace", "libunwind", "liblzma", "libcutils", ], export_include_dirs: ["include"], } cc_library { name: "libdebuggerd_client", defaults: ["debuggerd_defaults"], srcs: [ "client/debuggerd_client.cpp", "util.cpp", ], shared_libs: [ "libbase", "libcutils", ], export_include_dirs: ["include"], } cc_library_static { name: "libdebuggerd", defaults: ["debuggerd_defaults"], srcs: [ "libdebuggerd/backtrace.cpp", "libdebuggerd/elf_utils.cpp", "libdebuggerd/open_files_list.cpp", "libdebuggerd/tombstone.cpp", "libdebuggerd/utility.cpp", ], target: { android_arm: { srcs: ["libdebuggerd/arm/machine.cpp"], }, android_arm64: { srcs: ["libdebuggerd/arm64/machine.cpp"], }, android_mips: { srcs: ["libdebuggerd/mips/machine.cpp"], }, android_mips64: { srcs: ["libdebuggerd/mips64/machine.cpp"], }, android_x86: { srcs: ["libdebuggerd/x86/machine.cpp"], }, android_x86_64: { srcs: ["libdebuggerd/x86_64/machine.cpp"], }, }, local_include_dirs: ["libdebuggerd/include"], export_include_dirs: ["libdebuggerd/include"], static_libs: [ "libbacktrace", "libunwind", "liblzma", "libbase", "libcutils", "liblog", ], } cc_test { name: "debuggerd_test", defaults: ["debuggerd_defaults"], 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/property_fake.cpp", "libdebuggerd/test/ptrace_fake.cpp", "libdebuggerd/test/tombstone_test.cpp", ], target: { android: { srcs: [ "client/debuggerd_client_test.cpp", "debuggerd_test.cpp", "util.cpp" ], }, }, shared_libs: [ "libbacktrace", "libbase", "libcutils", "libdebuggerd_client", ], static_libs: [ "libdebuggerd" ], local_include_dirs: [ "libdebuggerd", ], compile_multilib: "both", multilib: { lib32: { stem: "debuggerd_test32", }, lib64: { stem: "debuggerd_test64", }, }, } cc_binary { name: "crash_dump", srcs: [ "crash_dump.cpp", "util.cpp", ], defaults: ["debuggerd_defaults"], compile_multilib: "both", multilib: { lib32: { suffix: "32", }, lib64: { suffix: "64", }, }, static_libs: [ "libtombstoned_client", "libdebuggerd", "libcutils", ], shared_libs: [ "libbacktrace", "libbase", "liblog", "libprocinfo", "libselinux", ], } cc_binary { name: "debuggerd", srcs: [ "debuggerd.cpp", ], defaults: ["debuggerd_defaults"], shared_libs: [ "libbase", "libdebuggerd_client", "liblog", "libselinux", ], local_include_dirs: ["include"], } cc_binary { name: "tombstoned", srcs: [ "util.cpp", "tombstoned/intercept_manager.cpp", "tombstoned/tombstoned.cpp", ], defaults: ["debuggerd_defaults"], static_libs: [ "libbase", "libcutils", "libevent", "liblog", ], init_rc: ["tombstoned/tombstoned.rc"] } subdirs = [ "crasher", ]