blob: 31c2d5d64b431e405fc3b0f89791a097ff972834 [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,
Narayan Kamatha73df602017-05-24 15:07:25 +010020}
21
Narayan Kamath2d377cd2017-05-10 10:58:59 +010022cc_library_shared {
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080023 name: "libtombstoned_client",
24 defaults: ["debuggerd_defaults"],
25 srcs: [
Narayan Kamath2d377cd2017-05-10 10:58:59 +010026 "tombstoned/tombstoned_client.cpp",
27 "util.cpp",
28 ],
29
Narayan Kamatha73df602017-05-24 15:07:25 +010030 header_libs: ["libdebuggerd_common_headers"],
31
Narayan Kamath2d377cd2017-05-10 10:58:59 +010032 static_libs: [
Narayan Kamatha73df602017-05-24 15:07:25 +010033 "libasync_safe",
Narayan Kamath2d377cd2017-05-10 10:58:59 +010034 ],
35
36 shared_libs: [
Narayan Kamath2d377cd2017-05-10 10:58:59 +010037 "libbase",
Narayan Kamatha73df602017-05-24 15:07:25 +010038 "libcutils",
Narayan Kamath2d377cd2017-05-10 10:58:59 +010039 ],
40
Narayan Kamatha73df602017-05-24 15:07:25 +010041 export_header_lib_headers: ["libdebuggerd_common_headers"],
Elliott Hughesdc699a22018-02-16 17:58:14 -080042 export_include_dirs: ["tombstoned/include"],
Narayan Kamath2d377cd2017-05-10 10:58:59 +010043}
44
Josh Gao9da1f512018-08-06 15:38:29 -070045// Utility library to talk to tombstoned and get an output fd.
Narayan Kamath2d377cd2017-05-10 10:58:59 +010046cc_library_static {
47 name: "libtombstoned_client_static",
48 defaults: ["debuggerd_defaults"],
Jiyong Park011ee122018-05-29 16:41:30 +090049 recovery_available: true,
Narayan Kamath2d377cd2017-05-10 10:58:59 +010050 srcs: [
51 "tombstoned/tombstoned_client.cpp",
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080052 "util.cpp",
53 ],
54
Narayan Kamatha73df602017-05-24 15:07:25 +010055 header_libs: ["libdebuggerd_common_headers"],
56
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080057 whole_static_libs: [
Christopher Ferrisac225782017-04-25 11:23:10 -070058 "libasync_safe",
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080059 "libcutils",
60 "libbase",
61 ],
Narayan Kamath2d377cd2017-05-10 10:58:59 +010062
Narayan Kamatha73df602017-05-24 15:07:25 +010063 export_header_lib_headers: ["libdebuggerd_common_headers"],
Elliott Hughesdc699a22018-02-16 17:58:14 -080064 export_include_dirs: ["tombstoned/include"],
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080065}
66
67// Core implementation, linked into libdebuggerd_handler and the dynamic linker.
Josh Gao9c02dc52016-06-15 17:29:00 -070068cc_library_static {
Josh Gaoe73c9322017-02-08 16:06:26 -080069 name: "libdebuggerd_handler_core",
Josh Gaocbe70cb2016-10-18 18:17:52 -070070 defaults: ["debuggerd_defaults"],
Jiyong Parka0e75042018-05-24 14:11:00 +090071 recovery_available: true,
Josh Gaocbe70cb2016-10-18 18:17:52 -070072 srcs: ["handler/debuggerd_handler.cpp"],
Josh Gao9c02dc52016-06-15 17:29:00 -070073
Josh Gaofdf832d2017-08-25 18:00:18 -070074 header_libs: [
75 "libbase_headers",
76 "libdebuggerd_common_headers",
Josh Gaoa48b41b2019-12-13 14:11:04 -080077 "bionic_libc_platform_headers",
Josh Gaofdf832d2017-08-25 18:00:18 -070078 ],
Narayan Kamatha73df602017-05-24 15:07:25 +010079
Josh Gaoe73c9322017-02-08 16:06:26 -080080 whole_static_libs: [
Christopher Ferrisac225782017-04-25 11:23:10 -070081 "libasync_safe",
Josh Gao2b2ae0c2017-08-21 14:31:17 -070082 "libcutils",
Josh Gaoe73c9322017-02-08 16:06:26 -080083 "libdebuggerd",
84 ],
85
Narayan Kamatha73df602017-05-24 15:07:25 +010086 export_header_lib_headers: ["libdebuggerd_common_headers"],
Josh Gaoe73c9322017-02-08 16:06:26 -080087 export_include_dirs: ["include"],
88}
89
Josh Gaoe1aa0ca2017-03-01 17:23:22 -080090// Implementation with a no-op fallback.
Josh Gaoe73c9322017-02-08 16:06:26 -080091cc_library_static {
92 name: "libdebuggerd_handler",
93 defaults: ["debuggerd_defaults"],
94 srcs: ["handler/debuggerd_fallback_nop.cpp"],
95
Josh Gaoa48b41b2019-12-13 14:11:04 -080096 header_libs: ["bionic_libc_platform_headers"],
97 export_header_lib_headers: ["bionic_libc_platform_headers"],
98
Josh Gaoe73c9322017-02-08 16:06:26 -080099 whole_static_libs: [
100 "libdebuggerd_handler_core",
101 ],
102
103 export_include_dirs: ["include"],
104}
105
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100106// Fallback implementation, for use in the Bionic linker only.
Josh Gaoe73c9322017-02-08 16:06:26 -0800107cc_library_static {
108 name: "libdebuggerd_handler_fallback",
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100109 visibility: ["//bionic/linker"],
110 apex_available: [
111 "com.android.runtime",
112 "//apex_available:platform",
113 ],
Josh Gaoe73c9322017-02-08 16:06:26 -0800114 defaults: ["debuggerd_defaults"],
Jiyong Park011ee122018-05-29 16:41:30 +0900115 recovery_available: true,
Josh Gaoe1aa0ca2017-03-01 17:23:22 -0800116 srcs: [
117 "handler/debuggerd_fallback.cpp",
118 ],
Josh Gaoe73c9322017-02-08 16:06:26 -0800119
Josh Gaoe1aa0ca2017-03-01 17:23:22 -0800120 whole_static_libs: [
121 "libdebuggerd_handler_core",
Narayan Kamath2d377cd2017-05-10 10:58:59 +0100122 "libtombstoned_client_static",
Christopher Ferrisac225782017-04-25 11:23:10 -0700123 "libasync_safe",
Josh Gaoe1aa0ca2017-03-01 17:23:22 -0800124 "libbase",
Josh Gaoe73c9322017-02-08 16:06:26 -0800125 "libdebuggerd",
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100126 "libunwindstack_no_dex",
Josh Gaoe73c9322017-02-08 16:06:26 -0800127 "liblzma",
128 "libcutils",
129 ],
Josh Gaoa48b41b2019-12-13 14:11:04 -0800130
131 header_libs: ["bionic_libc_platform_headers"],
132 export_header_lib_headers: ["bionic_libc_platform_headers"],
133
Josh Gaocbe70cb2016-10-18 18:17:52 -0700134 export_include_dirs: ["include"],
135}
136
137cc_library {
138 name: "libdebuggerd_client",
139 defaults: ["debuggerd_defaults"],
140 srcs: [
141 "client/debuggerd_client.cpp",
142 "util.cpp",
143 ],
144
145 shared_libs: [
146 "libbase",
147 "libcutils",
Josh Gao4175cee2019-01-04 13:57:09 -0800148 "libprocinfo",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700149 ],
Josh Gaoe1aa0ca2017-03-01 17:23:22 -0800150
Josh Gaoa48b41b2019-12-13 14:11:04 -0800151 header_libs: [
152 "libdebuggerd_common_headers",
153 "bionic_libc_platform_headers",
154 ],
155 export_header_lib_headers: [
156 "libdebuggerd_common_headers",
157 "bionic_libc_platform_headers",
158 ],
159
Josh Gaocbe70cb2016-10-18 18:17:52 -0700160 export_include_dirs: ["include"],
161}
162
Josh Gaoe73c9322017-02-08 16:06:26 -0800163cc_library_static {
Josh Gaocbe70cb2016-10-18 18:17:52 -0700164 name: "libdebuggerd",
165 defaults: ["debuggerd_defaults"],
Jiyong Parka0e75042018-05-24 14:11:00 +0900166 recovery_available: true,
Josh Gaocbe70cb2016-10-18 18:17:52 -0700167
168 srcs: [
169 "libdebuggerd/backtrace.cpp",
Mitch Phillipse0b4bb12020-02-14 14:54:31 -0800170 "libdebuggerd/gwp_asan.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700171 "libdebuggerd/open_files_list.cpp",
Peter Collingbournef8622522020-04-07 14:07:32 -0700172 "libdebuggerd/scudo.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700173 "libdebuggerd/tombstone.cpp",
174 "libdebuggerd/utility.cpp",
175 ],
176
Josh Gaocbe70cb2016-10-18 18:17:52 -0700177 local_include_dirs: ["libdebuggerd/include"],
178 export_include_dirs: ["libdebuggerd/include"],
Josh Gao9c02dc52016-06-15 17:29:00 -0700179
Peter Collingbournef8622522020-04-07 14:07:32 -0700180 include_dirs: [
181 // Needed for private/bionic_fdsan.h
182 "bionic/libc",
183
184 // Needed for scudo/interface.h
185 "external/scudo/standalone/include",
186 ],
Mitch Phillipse0b4bb12020-02-14 14:54:31 -0800187 header_libs: [
188 "bionic_libc_platform_headers",
189 "gwp_asan_headers",
190 ],
Josh Gaoce841d92018-08-06 18:26:42 -0700191
Josh Gaoe73c9322017-02-08 16:06:26 -0800192 static_libs: [
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100193 "libdexfile_support", // libunwindstack dependency
Christopher Ferris9a8c8552017-08-11 15:29:19 -0700194 "libunwindstack",
Josh Gaoe73c9322017-02-08 16:06:26 -0800195 "liblzma",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700196 "libbase",
197 "libcutils",
198 "liblog",
199 ],
Josh Gaoa48b41b2019-12-13 14:11:04 -0800200
Peter Collingbournef8622522020-04-07 14:07:32 -0700201 whole_static_libs: [
202 "gwp_asan_crash_handler",
203 "libscudo",
204 ],
Mitch Phillipse0b4bb12020-02-14 14:54:31 -0800205
Martin Stjernholmbb4f2b42018-12-19 14:28:33 +0000206 target: {
207 recovery: {
208 exclude_static_libs: [
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100209 "libdexfile_support",
Martin Stjernholmbb4f2b42018-12-19 14:28:33 +0000210 ],
211 },
212 },
Christopher Ferris4ae266c2019-04-03 09:27:12 -0700213
214 product_variables: {
215 debuggable: {
216 cflags: ["-DROOT_POSSIBLE"],
217 },
Peter Collingbournef8622522020-04-07 14:07:32 -0700218 experimental_mte: {
219 cflags: ["-DANDROID_EXPERIMENTAL_MTE"],
220 },
Christopher Ferris4ae266c2019-04-03 09:27:12 -0700221 },
Josh Gaocbe70cb2016-10-18 18:17:52 -0700222}
223
224cc_test {
225 name: "debuggerd_test",
226 defaults: ["debuggerd_defaults"],
Josh Gao6cad1392019-08-27 16:02:38 -0700227 require_root: true,
Josh Gaocbe70cb2016-10-18 18:17:52 -0700228
229 cflags: ["-Wno-missing-field-initializers"],
230 srcs: [
231 "libdebuggerd/test/dump_memory_test.cpp",
232 "libdebuggerd/test/elf_fake.cpp",
233 "libdebuggerd/test/log_fake.cpp",
234 "libdebuggerd/test/open_files_list_test.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700235 "libdebuggerd/test/tombstone_test.cpp",
236 ],
237
238 target: {
239 android: {
240 srcs: [
Josh Gaoae9d7672017-03-24 16:26:03 -0700241 "client/debuggerd_client_test.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700242 "debuggerd_test.cpp",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700243 ],
Elliott Hughesdc699a22018-02-16 17:58:14 -0800244 static_libs: [
245 "libasync_safe",
246 "libtombstoned_client_static",
247 ],
Josh Gaocbe70cb2016-10-18 18:17:52 -0700248 },
249 },
250
251 shared_libs: [
Josh Gaocbe70cb2016-10-18 18:17:52 -0700252 "libbase",
253 "libcutils",
Josh Gaoae9d7672017-03-24 16:26:03 -0700254 "libdebuggerd_client",
Narayan Kamatha73df602017-05-24 15:07:25 +0100255 "liblog",
Josh Gaoe04ca272018-01-16 15:38:17 -0800256 "libminijail",
Elliott Hughesdc699a22018-02-16 17:58:14 -0800257 "libnativehelper",
Martin Stjernholm852b64e2019-02-20 17:01:24 +0000258 "libunwindstack",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700259 ],
260
261 static_libs: [
Josh Gao352a8452017-03-30 16:46:21 -0700262 "libdebuggerd",
Mitch Phillipse0b4bb12020-02-14 14:54:31 -0800263 "libgmock",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700264 ],
265
Josh Gaoa48b41b2019-12-13 14:11:04 -0800266 header_libs: [
267 "bionic_libc_platform_headers",
Mitch Phillipse0b4bb12020-02-14 14:54:31 -0800268 "gwp_asan_headers",
Josh Gaoa48b41b2019-12-13 14:11:04 -0800269 ],
270
Peter Collingbournef8622522020-04-07 14:07:32 -0700271 include_dirs: [
272 "external/scudo/standalone/include",
273 ],
274
Josh Gaocbe70cb2016-10-18 18:17:52 -0700275 local_include_dirs: [
276 "libdebuggerd",
277 ],
278
279 compile_multilib: "both",
280 multilib: {
281 lib32: {
282 stem: "debuggerd_test32",
283 },
284 lib64: {
285 stem: "debuggerd_test64",
286 },
287 },
Elliott Hughes40fdf3f2018-04-27 16:12:06 -0700288
289 test_suites: ["device-tests"],
Peter Collingbournef8622522020-04-07 14:07:32 -0700290
291 product_variables: {
292 experimental_mte: {
293 cflags: ["-DANDROID_EXPERIMENTAL_MTE"],
294 },
295 },
Josh Gaocbe70cb2016-10-18 18:17:52 -0700296}
297
Josh Gaoa42314e2017-12-19 15:08:19 -0800298cc_benchmark {
299 name: "debuggerd_benchmark",
300 defaults: ["debuggerd_defaults"],
301 srcs: ["debuggerd_benchmark.cpp"],
302 shared_libs: [
303 "libbase",
304 "libdebuggerd_client",
305 ],
306}
307
Josh Gaocbe70cb2016-10-18 18:17:52 -0700308cc_binary {
309 name: "crash_dump",
310 srcs: [
311 "crash_dump.cpp",
312 "util.cpp",
313 ],
314 defaults: ["debuggerd_defaults"],
315
316 compile_multilib: "both",
317 multilib: {
318 lib32: {
319 suffix: "32",
320 },
321 lib64: {
322 suffix: "64",
323 },
324 },
325
Josh Gaoa48b41b2019-12-13 14:11:04 -0800326 header_libs: [
327 "bionic_libc_platform_headers",
328 ],
329
Josh Gaoe73c9322017-02-08 16:06:26 -0800330 static_libs: [
Narayan Kamath2d377cd2017-05-10 10:58:59 +0100331 "libtombstoned_client_static",
Josh Gaoe73c9322017-02-08 16:06:26 -0800332 "libdebuggerd",
333 "libcutils",
334 ],
335
Josh Gaocbe70cb2016-10-18 18:17:52 -0700336 shared_libs: [
Josh Gaocbe70cb2016-10-18 18:17:52 -0700337 "libbase",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700338 "liblog",
339 "libprocinfo",
Josh Gao2b2ae0c2017-08-21 14:31:17 -0700340 "libunwindstack",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700341 ],
Peter Collingbourneb72e7482020-03-16 18:14:13 -0700342
343 apex_available: [
344 "com.android.runtime",
345 ],
Josh Gaocbe70cb2016-10-18 18:17:52 -0700346}
347
348cc_binary {
349 name: "debuggerd",
350 srcs: [
351 "debuggerd.cpp",
352 ],
353 defaults: ["debuggerd_defaults"],
354
355 shared_libs: [
356 "libbase",
357 "libdebuggerd_client",
358 "liblog",
Josh Gao0915f232017-06-27 14:08:05 -0700359 "libprocinfo",
Josh Gaocbe70cb2016-10-18 18:17:52 -0700360 ],
361
362 local_include_dirs: ["include"],
363}
364
365cc_binary {
366 name: "tombstoned",
367 srcs: [
368 "util.cpp",
369 "tombstoned/intercept_manager.cpp",
370 "tombstoned/tombstoned.cpp",
371 ],
372 defaults: ["debuggerd_defaults"],
373
Josh Gaoa48b41b2019-12-13 14:11:04 -0800374 header_libs: [
375 "bionic_libc_platform_headers",
376 "libdebuggerd_common_headers"
377 ],
Narayan Kamatha73df602017-05-24 15:07:25 +0100378
Josh Gaocbe70cb2016-10-18 18:17:52 -0700379 static_libs: [
380 "libbase",
381 "libcutils",
382 "libevent",
383 "liblog",
384 ],
385
Elliott Hughesdc699a22018-02-16 17:58:14 -0800386 init_rc: ["tombstoned/tombstoned.rc"],
Josh Gao9c02dc52016-06-15 17:29:00 -0700387}
Ray Essickbd3ba782020-01-21 15:21:08 -0800388
389prebuilt_etc {
390 name: "crash_dump.policy",
391 sub_dir: "seccomp_policy",
392 filename_from_src: true,
393 arch: {
394 arm: {
395 src: "seccomp_policy/crash_dump.arm.policy",
396 },
397 arm64: {
398 src: "seccomp_policy/crash_dump.arm64.policy",
399 },
400 x86: {
401 src: "seccomp_policy/crash_dump.x86.policy",
402 },
403 x86_64: {
404 src: "seccomp_policy/crash_dump.x86_64.policy",
405 },
406 },
407 required: [
408 "crash_dump.policy_other",
409 ],
410}
411
412
413// NB -- this installs "the other" architecture. (puts 32 bit config in on 64 bit device)
414// or at least that is the intention so that we get both of them populated
415prebuilt_etc {
416 name: "crash_dump.policy_other",
417 sub_dir: "seccomp_policy",
418 filename_from_src: true,
419 arch: {
420 arm: {
421 src: "seccomp_policy/crash_dump.arm64.policy",
422 },
423 arm64: {
424 src: "seccomp_policy/crash_dump.arm.policy",
425 },
426 x86: {
427 src: "seccomp_policy/crash_dump.x86_64.policy",
428 },
429 x86_64: {
430 src: "seccomp_policy/crash_dump.x86.policy",
431 },
432 },
433}