blob: 53f85bf32981193e5e69c3019cade03e586c2614 [file] [log] [blame]
Josh Gaocbe70cb2016-10-18 18:17:52 -07001cc_defaults {
2 name: "debuggerd_defaults",
3 cflags: [
4 "-Wall",
5 "-Wextra",
Josh Gaoc7fe0602017-03-13 14:13:29 -07006 "-Werror",
Josh Gao2b2ae0c2017-08-21 14:31:17 -07007 "-Wno-unused-argument",
8 "-Wno-unused-function",
Josh Gaocbe70cb2016-10-18 18:17:52 -07009 "-Wno-nullability-completeness",
10 "-Os",
11 ],
12
13 local_include_dirs: ["include"],
14}
15
Narayan Kamatha73df602017-05-24 15:07:25 +010016cc_library_headers {
17 name: "libdebuggerd_common_headers",
Elliott Hughesdc699a22018-02-16 17:58:14 -080018 export_include_dirs: ["common/include"],
Jiyong Parka0e75042018-05-24 14:11:00 +090019 recovery_available: true,
Yifan Hong2ec92cf2020-10-27 16:25:45 -070020 vendor_ramdisk_available: true,
Narayan Kamatha73df602017-05-24 15:07:25 +010021}
22
Narayan Kamath2d377cd2017-05-10 10:58:59 +010023cc_library_shared {
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080024 name: "libtombstoned_client",
25 defaults: ["debuggerd_defaults"],
26 srcs: [
Narayan Kamath2d377cd2017-05-10 10:58:59 +010027 "tombstoned/tombstoned_client.cpp",
28 "util.cpp",
29 ],
30
Narayan Kamatha73df602017-05-24 15:07:25 +010031 header_libs: ["libdebuggerd_common_headers"],
32
Narayan Kamath2d377cd2017-05-10 10:58:59 +010033 static_libs: [
Narayan Kamatha73df602017-05-24 15:07:25 +010034 "libasync_safe",
Narayan Kamath2d377cd2017-05-10 10:58:59 +010035 ],
36
37 shared_libs: [
Narayan Kamath2d377cd2017-05-10 10:58:59 +010038 "libbase",
Narayan Kamatha73df602017-05-24 15:07:25 +010039 "libcutils",
Narayan Kamath2d377cd2017-05-10 10:58:59 +010040 ],
41
Narayan Kamatha73df602017-05-24 15:07:25 +010042 export_header_lib_headers: ["libdebuggerd_common_headers"],
Elliott Hughesdc699a22018-02-16 17:58:14 -080043 export_include_dirs: ["tombstoned/include"],
Narayan Kamath2d377cd2017-05-10 10:58:59 +010044}
45
Josh Gao9da1f512018-08-06 15:38:29 -070046// Utility library to talk to tombstoned and get an output fd.
Narayan Kamath2d377cd2017-05-10 10:58:59 +010047cc_library_static {
48 name: "libtombstoned_client_static",
49 defaults: ["debuggerd_defaults"],
Jiyong Park011ee122018-05-29 16:41:30 +090050 recovery_available: true,
Yifan Hong2ec92cf2020-10-27 16:25:45 -070051 vendor_ramdisk_available: true,
Narayan Kamath2d377cd2017-05-10 10:58:59 +010052 srcs: [
53 "tombstoned/tombstoned_client.cpp",
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080054 "util.cpp",
55 ],
56
Narayan Kamatha73df602017-05-24 15:07:25 +010057 header_libs: ["libdebuggerd_common_headers"],
58
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080059 whole_static_libs: [
Christopher Ferrisac225782017-04-25 11:23:10 -070060 "libasync_safe",
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080061 "libcutils",
62 "libbase",
63 ],
Narayan Kamath2d377cd2017-05-10 10:58:59 +010064
Narayan Kamatha73df602017-05-24 15:07:25 +010065 export_header_lib_headers: ["libdebuggerd_common_headers"],
Elliott Hughesdc699a22018-02-16 17:58:14 -080066 export_include_dirs: ["tombstoned/include"],
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080067}
68
69// Core implementation, linked into libdebuggerd_handler and the dynamic linker.
Josh Gao9c02dc52016-06-15 17:29:00 -070070cc_library_static {
Josh Gaoe73c9322017-02-08 16:06:26 -080071 name: "libdebuggerd_handler_core",
Josh Gaocbe70cb2016-10-18 18:17:52 -070072 defaults: ["debuggerd_defaults"],
Jiyong Parka0e75042018-05-24 14:11:00 +090073 recovery_available: true,
Yifan Hong2ec92cf2020-10-27 16:25:45 -070074 vendor_ramdisk_available: true,
Josh Gaocbe70cb2016-10-18 18:17:52 -070075 srcs: ["handler/debuggerd_handler.cpp"],
Josh Gao9c02dc52016-06-15 17:29:00 -070076
Josh Gaofdf832d2017-08-25 18:00:18 -070077 header_libs: [
78 "libbase_headers",
79 "libdebuggerd_common_headers",
Josh Gaoa48b41b2019-12-13 14:11:04 -080080 "bionic_libc_platform_headers",
Josh Gaofdf832d2017-08-25 18:00:18 -070081 ],
Narayan Kamatha73df602017-05-24 15:07:25 +010082
Josh Gaoe73c9322017-02-08 16:06:26 -080083 whole_static_libs: [
Christopher Ferrisac225782017-04-25 11:23:10 -070084 "libasync_safe",
Josh Gao2b2ae0c2017-08-21 14:31:17 -070085 "libcutils",
Josh Gaoe73c9322017-02-08 16:06:26 -080086 "libdebuggerd",
87 ],
88
Narayan Kamatha73df602017-05-24 15:07:25 +010089 export_header_lib_headers: ["libdebuggerd_common_headers"],
Josh Gaoe73c9322017-02-08 16:06:26 -080090 export_include_dirs: ["include"],
91}
92
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080093// Implementation with a no-op fallback.
Josh Gaoe73c9322017-02-08 16:06:26 -080094cc_library_static {
95 name: "libdebuggerd_handler",
96 defaults: ["debuggerd_defaults"],
97 srcs: ["handler/debuggerd_fallback_nop.cpp"],
98
Josh Gaoa48b41b2019-12-13 14:11:04 -080099 header_libs: ["bionic_libc_platform_headers"],
100 export_header_lib_headers: ["bionic_libc_platform_headers"],
101
Josh Gaoe73c9322017-02-08 16:06:26 -0800102 whole_static_libs: [
103 "libdebuggerd_handler_core",
104 ],
105
106 export_include_dirs: ["include"],
107}
108
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100109// Fallback implementation, for use in the Bionic linker only.
Josh Gaoe73c9322017-02-08 16:06:26 -0800110cc_library_static {
111 name: "libdebuggerd_handler_fallback",
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100112 visibility: ["//bionic/linker"],
113 apex_available: [
114 "com.android.runtime",
115 "//apex_available:platform",
116 ],
Josh Gaoe73c9322017-02-08 16:06:26 -0800117 defaults: ["debuggerd_defaults"],
Jiyong Park011ee122018-05-29 16:41:30 +0900118 recovery_available: true,
Yifan Hong2ec92cf2020-10-27 16:25:45 -0700119 vendor_ramdisk_available: true,
Josh Gaoe1aa0ca2017-03-01 17:23:22 -0800120 srcs: [
121 "handler/debuggerd_fallback.cpp",
122 ],
Josh Gaoe73c9322017-02-08 16:06:26 -0800123
Josh Gaoe1aa0ca2017-03-01 17:23:22 -0800124 whole_static_libs: [
125 "libdebuggerd_handler_core",
Narayan Kamath2d377cd2017-05-10 10:58:59 +0100126 "libtombstoned_client_static",
Christopher Ferrisac225782017-04-25 11:23:10 -0700127 "libasync_safe",
Josh Gaoe1aa0ca2017-03-01 17:23:22 -0800128 "libbase",
Josh Gaoe73c9322017-02-08 16:06:26 -0800129 "libdebuggerd",
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100130 "libunwindstack_no_dex",
Josh Gaoe73c9322017-02-08 16:06:26 -0800131 "liblzma",
132 "libcutils",
133 ],
Josh Gaoa48b41b2019-12-13 14:11:04 -0800134
135 header_libs: ["bionic_libc_platform_headers"],
136 export_header_lib_headers: ["bionic_libc_platform_headers"],
137
Josh Gaocbe70cb2016-10-18 18:17:52 -0700138 export_include_dirs: ["include"],
139}
140
141cc_library {
142 name: "libdebuggerd_client",
143 defaults: ["debuggerd_defaults"],
144 srcs: [
145 "client/debuggerd_client.cpp",
146 "util.cpp",
147 ],
148
149 shared_libs: [
150 "libbase",
151 "libcutils",
Josh Gao4175cee2019-01-04 13:57:09 -0800152 "libprocinfo",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700153 ],
Josh Gaoe1aa0ca2017-03-01 17:23:22 -0800154
Josh Gaoa48b41b2019-12-13 14:11:04 -0800155 header_libs: [
156 "libdebuggerd_common_headers",
157 "bionic_libc_platform_headers",
158 ],
159 export_header_lib_headers: [
160 "libdebuggerd_common_headers",
161 "bionic_libc_platform_headers",
162 ],
163
Josh Gaocbe70cb2016-10-18 18:17:52 -0700164 export_include_dirs: ["include"],
165}
166
Josh Gaoe73c9322017-02-08 16:06:26 -0800167cc_library_static {
Josh Gaocbe70cb2016-10-18 18:17:52 -0700168 name: "libdebuggerd",
169 defaults: ["debuggerd_defaults"],
Jiyong Parka0e75042018-05-24 14:11:00 +0900170 recovery_available: true,
Yifan Hong2ec92cf2020-10-27 16:25:45 -0700171 vendor_ramdisk_available: true,
Josh Gaocbe70cb2016-10-18 18:17:52 -0700172
173 srcs: [
174 "libdebuggerd/backtrace.cpp",
Mitch Phillipse0b4bb12020-02-14 14:54:31 -0800175 "libdebuggerd/gwp_asan.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700176 "libdebuggerd/open_files_list.cpp",
Peter Collingbournef8622522020-04-07 14:07:32 -0700177 "libdebuggerd/scudo.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700178 "libdebuggerd/tombstone.cpp",
Josh Gao76e1e302021-01-26 15:53:11 -0800179 "libdebuggerd/tombstone_proto.cpp",
180 "libdebuggerd/tombstone_proto_to_text.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700181 "libdebuggerd/utility.cpp",
182 ],
183
Josh Gaocbe70cb2016-10-18 18:17:52 -0700184 local_include_dirs: ["libdebuggerd/include"],
185 export_include_dirs: ["libdebuggerd/include"],
Josh Gao9c02dc52016-06-15 17:29:00 -0700186
Peter Collingbournef8622522020-04-07 14:07:32 -0700187 include_dirs: [
188 // Needed for private/bionic_fdsan.h
189 "bionic/libc",
190
191 // Needed for scudo/interface.h
192 "external/scudo/standalone/include",
193 ],
Mitch Phillipse0b4bb12020-02-14 14:54:31 -0800194 header_libs: [
195 "bionic_libc_platform_headers",
196 "gwp_asan_headers",
197 ],
Josh Gaoce841d92018-08-06 18:26:42 -0700198
Josh Gaoe73c9322017-02-08 16:06:26 -0800199 static_libs: [
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100200 "libdexfile_support", // libunwindstack dependency
Christopher Ferris9a8c8552017-08-11 15:29:19 -0700201 "libunwindstack",
Josh Gaoe73c9322017-02-08 16:06:26 -0800202 "liblzma",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700203 "libbase",
204 "libcutils",
205 "liblog",
206 ],
Josh Gaoa48b41b2019-12-13 14:11:04 -0800207
Peter Collingbournef8622522020-04-07 14:07:32 -0700208 whole_static_libs: [
Josh Gao618cea32021-01-26 17:45:43 -0800209 "libasync_safe",
Peter Collingbournef8622522020-04-07 14:07:32 -0700210 "gwp_asan_crash_handler",
211 "libscudo",
Josh Gao76e1e302021-01-26 15:53:11 -0800212 "libtombstone_proto",
213 "libprotobuf-cpp-lite",
Peter Collingbournef8622522020-04-07 14:07:32 -0700214 ],
Mitch Phillipse0b4bb12020-02-14 14:54:31 -0800215
Martin Stjernholmbb4f2b42018-12-19 14:28:33 +0000216 target: {
217 recovery: {
218 exclude_static_libs: [
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100219 "libdexfile_support",
Martin Stjernholmbb4f2b42018-12-19 14:28:33 +0000220 ],
221 },
Yifan Hong2ec92cf2020-10-27 16:25:45 -0700222 vendor_ramdisk: {
223 exclude_static_libs: [
224 "libdexfile_support",
225 ],
226 },
Martin Stjernholmbb4f2b42018-12-19 14:28:33 +0000227 },
Christopher Ferris4ae266c2019-04-03 09:27:12 -0700228
229 product_variables: {
230 debuggable: {
231 cflags: ["-DROOT_POSSIBLE"],
232 },
233 },
Josh Gaocbe70cb2016-10-18 18:17:52 -0700234}
235
Josh Gao76e1e302021-01-26 15:53:11 -0800236cc_binary {
237 name: "pbtombstone",
238 defaults: ["debuggerd_defaults"],
239 srcs: ["pbtombstone.cpp"],
240 static_libs: [
241 "libbase",
242 "libdebuggerd",
243 "liblog",
244 "libprotobuf-cpp-lite",
245 "libtombstone_proto",
246 "libunwindstack",
247 ],
248}
249
Josh Gaocbe70cb2016-10-18 18:17:52 -0700250cc_test {
251 name: "debuggerd_test",
252 defaults: ["debuggerd_defaults"],
Josh Gao6cad1392019-08-27 16:02:38 -0700253 require_root: true,
Josh Gaocbe70cb2016-10-18 18:17:52 -0700254
255 cflags: ["-Wno-missing-field-initializers"],
256 srcs: [
257 "libdebuggerd/test/dump_memory_test.cpp",
258 "libdebuggerd/test/elf_fake.cpp",
259 "libdebuggerd/test/log_fake.cpp",
260 "libdebuggerd/test/open_files_list_test.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700261 "libdebuggerd/test/tombstone_test.cpp",
262 ],
263
264 target: {
265 android: {
266 srcs: [
Josh Gaoae9d7672017-03-24 16:26:03 -0700267 "client/debuggerd_client_test.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700268 "debuggerd_test.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700269 ],
Elliott Hughesdc699a22018-02-16 17:58:14 -0800270 static_libs: [
271 "libasync_safe",
272 "libtombstoned_client_static",
273 ],
Josh Gaocbe70cb2016-10-18 18:17:52 -0700274 },
275 },
276
277 shared_libs: [
Josh Gaocbe70cb2016-10-18 18:17:52 -0700278 "libbase",
279 "libcutils",
Josh Gaoae9d7672017-03-24 16:26:03 -0700280 "libdebuggerd_client",
Narayan Kamatha73df602017-05-24 15:07:25 +0100281 "liblog",
Elliott Hughesdc699a22018-02-16 17:58:14 -0800282 "libnativehelper",
Martin Stjernholm852b64e2019-02-20 17:01:24 +0000283 "libunwindstack",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700284 ],
285
286 static_libs: [
Josh Gao352a8452017-03-30 16:46:21 -0700287 "libdebuggerd",
Mitch Phillipse0b4bb12020-02-14 14:54:31 -0800288 "libgmock",
Peter Collingbourned00a5772020-07-20 23:11:16 -0700289 "libminijail",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700290 ],
291
Josh Gaoa48b41b2019-12-13 14:11:04 -0800292 header_libs: [
293 "bionic_libc_platform_headers",
Mitch Phillipse0b4bb12020-02-14 14:54:31 -0800294 "gwp_asan_headers",
Josh Gaoa48b41b2019-12-13 14:11:04 -0800295 ],
296
Peter Collingbournef8622522020-04-07 14:07:32 -0700297 include_dirs: [
298 "external/scudo/standalone/include",
299 ],
300
Josh Gaocbe70cb2016-10-18 18:17:52 -0700301 local_include_dirs: [
302 "libdebuggerd",
303 ],
304
305 compile_multilib: "both",
306 multilib: {
307 lib32: {
308 stem: "debuggerd_test32",
309 },
310 lib64: {
311 stem: "debuggerd_test64",
312 },
313 },
Elliott Hughes40fdf3f2018-04-27 16:12:06 -0700314
315 test_suites: ["device-tests"],
Josh Gaocbe70cb2016-10-18 18:17:52 -0700316}
317
Josh Gaoa42314e2017-12-19 15:08:19 -0800318cc_benchmark {
319 name: "debuggerd_benchmark",
320 defaults: ["debuggerd_defaults"],
321 srcs: ["debuggerd_benchmark.cpp"],
322 shared_libs: [
323 "libbase",
324 "libdebuggerd_client",
325 ],
326}
327
Josh Gaocbe70cb2016-10-18 18:17:52 -0700328cc_binary {
329 name: "crash_dump",
330 srcs: [
331 "crash_dump.cpp",
332 "util.cpp",
333 ],
334 defaults: ["debuggerd_defaults"],
335
336 compile_multilib: "both",
337 multilib: {
338 lib32: {
339 suffix: "32",
340 },
341 lib64: {
342 suffix: "64",
343 },
344 },
345
Josh Gaoa48b41b2019-12-13 14:11:04 -0800346 header_libs: [
347 "bionic_libc_platform_headers",
348 ],
349
Josh Gaoe73c9322017-02-08 16:06:26 -0800350 static_libs: [
Narayan Kamath2d377cd2017-05-10 10:58:59 +0100351 "libtombstoned_client_static",
Josh Gaoe73c9322017-02-08 16:06:26 -0800352 "libdebuggerd",
353 "libcutils",
Josh Gao76e1e302021-01-26 15:53:11 -0800354
355 "libtombstone_proto",
356 "libprotobuf-cpp-lite",
Josh Gaoe73c9322017-02-08 16:06:26 -0800357 ],
358
Josh Gaocbe70cb2016-10-18 18:17:52 -0700359 shared_libs: [
Josh Gaocbe70cb2016-10-18 18:17:52 -0700360 "libbase",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700361 "liblog",
362 "libprocinfo",
Josh Gao2b2ae0c2017-08-21 14:31:17 -0700363 "libunwindstack",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700364 ],
Peter Collingbourneb72e7482020-03-16 18:14:13 -0700365
366 apex_available: [
367 "com.android.runtime",
368 ],
Josh Gaocbe70cb2016-10-18 18:17:52 -0700369}
370
371cc_binary {
372 name: "debuggerd",
373 srcs: [
374 "debuggerd.cpp",
375 ],
376 defaults: ["debuggerd_defaults"],
377
378 shared_libs: [
379 "libbase",
380 "libdebuggerd_client",
381 "liblog",
Josh Gao0915f232017-06-27 14:08:05 -0700382 "libprocinfo",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700383 ],
384
385 local_include_dirs: ["include"],
386}
387
388cc_binary {
389 name: "tombstoned",
390 srcs: [
391 "util.cpp",
392 "tombstoned/intercept_manager.cpp",
393 "tombstoned/tombstoned.cpp",
394 ],
395 defaults: ["debuggerd_defaults"],
396
Josh Gaoa48b41b2019-12-13 14:11:04 -0800397 header_libs: [
398 "bionic_libc_platform_headers",
399 "libdebuggerd_common_headers"
400 ],
Narayan Kamatha73df602017-05-24 15:07:25 +0100401
Josh Gaocbe70cb2016-10-18 18:17:52 -0700402 static_libs: [
403 "libbase",
404 "libcutils",
405 "libevent",
406 "liblog",
407 ],
408
Elliott Hughesdc699a22018-02-16 17:58:14 -0800409 init_rc: ["tombstoned/tombstoned.rc"],
Josh Gao9c02dc52016-06-15 17:29:00 -0700410}
Ray Essickbd3ba782020-01-21 15:21:08 -0800411
412prebuilt_etc {
413 name: "crash_dump.policy",
414 sub_dir: "seccomp_policy",
415 filename_from_src: true,
416 arch: {
417 arm: {
418 src: "seccomp_policy/crash_dump.arm.policy",
419 },
420 arm64: {
421 src: "seccomp_policy/crash_dump.arm64.policy",
422 },
423 x86: {
424 src: "seccomp_policy/crash_dump.x86.policy",
425 },
426 x86_64: {
427 src: "seccomp_policy/crash_dump.x86_64.policy",
428 },
429 },
430 required: [
431 "crash_dump.policy_other",
432 ],
433}
434
435
436// NB -- this installs "the other" architecture. (puts 32 bit config in on 64 bit device)
437// or at least that is the intention so that we get both of them populated
438prebuilt_etc {
439 name: "crash_dump.policy_other",
440 sub_dir: "seccomp_policy",
441 filename_from_src: true,
442 arch: {
443 arm: {
444 src: "seccomp_policy/crash_dump.arm64.policy",
445 },
446 arm64: {
447 src: "seccomp_policy/crash_dump.arm.policy",
448 },
449 x86: {
450 src: "seccomp_policy/crash_dump.x86_64.policy",
451 },
452 x86_64: {
453 src: "seccomp_policy/crash_dump.x86.policy",
454 },
455 },
456}