Separate client management from hooks.
Currently, we include the client in the same library as the malloc
hooks. This is incorrect, as the malloc hooks should ship within the
com.android.runtime APEX, while the client should ship with the
platform (or wherever the heapprofd executable ships from).
This can then also be used for ART object allocation callstack
tracking.
Diff of HEAD~1:malloc_hooks.cc and client_ext.cc:
https://gist.github.com/segfaulthunter/05b7f0253a79c18b851d595a5d1df2a5
Test: get system_server profile.
Change-Id: If2b96e9a8c6baadcac8eea999653c6dd16977dca
Bug: 141241849
diff --git a/Android.bp b/Android.bp
index 6d3a72d..c2d71b6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -209,12 +209,45 @@
srcs: [
":perfetto_include_perfetto_base_base",
":perfetto_include_perfetto_ext_base_base",
+ ":perfetto_src_base_base",
+ ":perfetto_src_profiling_memory_malloc_hooks",
+ ],
+ shared_libs: [
+ "heapprofd_client_api",
+ ],
+ static_libs: [
+ "libasync_safe",
+ ],
+ export_include_dirs: [
+ "include",
+ "include/perfetto/base/build_configs/android_tree",
+ ],
+ defaults: [
+ "perfetto_defaults",
+ ],
+ cflags: [
+ "-DPERFETTO_ANDROID_ASYNC_SAFE_LOG",
+ ],
+ include_dirs: [
+ "bionic/libc",
+ ],
+ header_libs: [
+ "bionic_libc_platform_headers",
+ ],
+}
+
+// GN: //src/profiling/memory:heapprofd_client_api
+cc_library_shared {
+ name: "heapprofd_client_api",
+ srcs: [
+ ":perfetto_include_perfetto_base_base",
+ ":perfetto_include_perfetto_ext_base_base",
":perfetto_include_perfetto_profiling_normalize",
":perfetto_src_base_base",
":perfetto_src_base_unix_socket",
":perfetto_src_profiling_common_proc_utils",
":perfetto_src_profiling_memory_client",
- ":perfetto_src_profiling_memory_malloc_hooks",
+ ":perfetto_src_profiling_memory_client_ext",
":perfetto_src_profiling_memory_ring_buffer",
":perfetto_src_profiling_memory_scoped_spinlock",
":perfetto_src_profiling_memory_wire_protocol",
@@ -6132,6 +6165,14 @@
],
}
+// GN: //src/profiling/memory:client_ext
+filegroup {
+ name: "perfetto_src_profiling_memory_client_ext",
+ srcs: [
+ "src/profiling/memory/client_ext.cc",
+ ],
+}
+
// GN: //src/profiling/memory:daemon
filegroup {
name: "perfetto_src_profiling_memory_daemon",