kallsyms parser: move to src/kallsyms/

Moving to a common location as it's now shared between traced_probes and
traced_perf.

Also, change metatrace tag from TAG_FTRACE to TAG_PRODUCER, which is the
category intended for generalised producer metatracing.

Bug: 173124818
Change-Id: Ie70f01175a9741702ddddfe92eae1423179d811d
diff --git a/Android.bp b/Android.bp
index 65c9f37..cd7add4 100644
--- a/Android.bp
+++ b/Android.bp
@@ -468,6 +468,7 @@
     ":perfetto_src_ipc_client",
     ":perfetto_src_ipc_common",
     ":perfetto_src_ipc_host",
+    ":perfetto_src_kallsyms_kallsyms",
     ":perfetto_src_perfetto_cmd_perfetto_atoms",
     ":perfetto_src_protozero_protozero",
     ":perfetto_src_traced_probes_android_log_android_log",
@@ -476,7 +477,6 @@
     ":perfetto_src_traced_probes_filesystem_filesystem",
     ":perfetto_src_traced_probes_ftrace_format_parser",
     ":perfetto_src_traced_probes_ftrace_ftrace",
-    ":perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
     ":perfetto_src_traced_probes_initial_display_state_initial_display_state",
     ":perfetto_src_traced_probes_metatrace_metatrace",
     ":perfetto_src_traced_probes_packages_list_packages_list",
@@ -988,6 +988,7 @@
     ":perfetto_src_ipc_client",
     ":perfetto_src_ipc_common",
     ":perfetto_src_ipc_host",
+    ":perfetto_src_kallsyms_kallsyms",
     ":perfetto_src_perfetto_cmd_perfetto_atoms",
     ":perfetto_src_protozero_protozero",
     ":perfetto_src_traced_probes_android_log_android_log",
@@ -996,7 +997,6 @@
     ":perfetto_src_traced_probes_filesystem_filesystem",
     ":perfetto_src_traced_probes_ftrace_format_parser",
     ":perfetto_src_traced_probes_ftrace_ftrace",
-    ":perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
     ":perfetto_src_traced_probes_initial_display_state_initial_display_state",
     ":perfetto_src_traced_probes_metatrace_metatrace",
     ":perfetto_src_traced_probes_packages_list_packages_list",
@@ -1234,6 +1234,7 @@
     ":perfetto_src_ipc_client",
     ":perfetto_src_ipc_common",
     ":perfetto_src_ipc_host",
+    ":perfetto_src_kallsyms_kallsyms",
     ":perfetto_src_perfetto_cmd_perfetto_atoms",
     ":perfetto_src_protozero_protozero",
     ":perfetto_src_traced_probes_android_log_android_log",
@@ -1242,7 +1243,6 @@
     ":perfetto_src_traced_probes_filesystem_filesystem",
     ":perfetto_src_traced_probes_ftrace_format_parser",
     ":perfetto_src_traced_probes_ftrace_ftrace",
-    ":perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
     ":perfetto_src_traced_probes_initial_display_state_initial_display_state",
     ":perfetto_src_traced_probes_metatrace_metatrace",
     ":perfetto_src_traced_probes_packages_list_packages_list",
@@ -1615,6 +1615,7 @@
     ":perfetto_src_ipc_client",
     ":perfetto_src_ipc_common",
     ":perfetto_src_ipc_host",
+    ":perfetto_src_kallsyms_kallsyms",
     ":perfetto_src_perfetto_cmd_perfetto_atoms",
     ":perfetto_src_profiling_common_callstack_trie",
     ":perfetto_src_profiling_common_interner",
@@ -1635,7 +1636,6 @@
     ":perfetto_src_traced_probes_ftrace_format_parser",
     ":perfetto_src_traced_probes_ftrace_ftrace",
     ":perfetto_src_traced_probes_ftrace_integrationtests",
-    ":perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
     ":perfetto_src_traced_probes_ftrace_test_support",
     ":perfetto_src_traced_probes_initial_display_state_initial_display_state",
     ":perfetto_src_traced_probes_metatrace_metatrace",
@@ -6374,6 +6374,24 @@
   ],
 }
 
+// GN: //src/kallsyms:kallsyms
+filegroup {
+  name: "perfetto_src_kallsyms_kallsyms",
+  srcs: [
+    "src/kallsyms/kernel_symbol_map.cc",
+    "src/kallsyms/lazy_kernel_symbolizer.cc",
+  ],
+}
+
+// GN: //src/kallsyms:unittests
+filegroup {
+  name: "perfetto_src_kallsyms_unittests",
+  srcs: [
+    "src/kallsyms/kernel_symbol_map_unittest.cc",
+    "src/kallsyms/lazy_kernel_symbolizer_unittest.cc",
+  ],
+}
+
 // GN: //src/perfetto_cmd:perfetto_atoms
 filegroup {
   name: "perfetto_src_perfetto_cmd_perfetto_atoms",
@@ -7522,24 +7540,6 @@
   ],
 }
 
-// GN: //src/traced/probes/ftrace/kallsyms:kallsyms
-filegroup {
-  name: "perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
-  srcs: [
-    "src/traced/probes/ftrace/kallsyms/kernel_symbol_map.cc",
-    "src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.cc",
-  ],
-}
-
-// GN: //src/traced/probes/ftrace/kallsyms:unittests
-filegroup {
-  name: "perfetto_src_traced_probes_ftrace_kallsyms_unittests",
-  srcs: [
-    "src/traced/probes/ftrace/kallsyms/kernel_symbol_map_unittest.cc",
-    "src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer_unittest.cc",
-  ],
-}
-
 // GN: //src/traced/probes/ftrace:test_messages_cpp
 genrule {
   name: "perfetto_src_traced_probes_ftrace_test_messages_cpp_gen",
@@ -8259,6 +8259,8 @@
     ":perfetto_src_ipc_test_messages_cpp_gen",
     ":perfetto_src_ipc_test_messages_ipc_gen",
     ":perfetto_src_ipc_unittests",
+    ":perfetto_src_kallsyms_kallsyms",
+    ":perfetto_src_kallsyms_unittests",
     ":perfetto_src_perfetto_cmd_perfetto_atoms",
     ":perfetto_src_perfetto_cmd_perfetto_cmd",
     ":perfetto_src_perfetto_cmd_protos_gen",
@@ -8333,8 +8335,6 @@
     ":perfetto_src_traced_probes_filesystem_unittests",
     ":perfetto_src_traced_probes_ftrace_format_parser",
     ":perfetto_src_traced_probes_ftrace_ftrace",
-    ":perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
-    ":perfetto_src_traced_probes_ftrace_kallsyms_unittests",
     ":perfetto_src_traced_probes_ftrace_test_messages_cpp_gen",
     ":perfetto_src_traced_probes_ftrace_test_messages_lite_gen",
     ":perfetto_src_traced_probes_ftrace_test_messages_zero_gen",
@@ -8832,6 +8832,7 @@
     ":perfetto_src_base_unix_socket",
     ":perfetto_src_ipc_client",
     ":perfetto_src_ipc_common",
+    ":perfetto_src_kallsyms_kallsyms",
     ":perfetto_src_profiling_common_callstack_trie",
     ":perfetto_src_profiling_common_interner",
     ":perfetto_src_profiling_common_interning_output",
@@ -8844,7 +8845,6 @@
     ":perfetto_src_profiling_perf_traced_perf_main",
     ":perfetto_src_profiling_perf_unwinding",
     ":perfetto_src_protozero_protozero",
-    ":perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
     ":perfetto_src_tracing_common",
     ":perfetto_src_tracing_core_core",
     ":perfetto_src_tracing_core_service",
diff --git a/BUILD b/BUILD
index 0b6c279..d9c9e18 100644
--- a/BUILD
+++ b/BUILD
@@ -174,6 +174,7 @@
     srcs = [
         ":src_android_internal_headers",
         ":src_android_internal_lazy_library_loader",
+        ":src_kallsyms_kallsyms",
         ":src_perfetto_cmd_perfetto_atoms",
         ":src_traced_probes_android_log_android_log",
         ":src_traced_probes_common_common",
@@ -181,7 +182,6 @@
         ":src_traced_probes_filesystem_filesystem",
         ":src_traced_probes_ftrace_format_parser",
         ":src_traced_probes_ftrace_ftrace",
-        ":src_traced_probes_ftrace_kallsyms_kallsyms",
         ":src_traced_probes_initial_display_state_initial_display_state",
         ":src_traced_probes_metatrace_metatrace",
         ":src_traced_probes_packages_list_packages_list",
@@ -615,6 +615,17 @@
     ],
 )
 
+# GN target: //src/kallsyms:kallsyms
+filegroup(
+    name = "src_kallsyms_kallsyms",
+    srcs = [
+        "src/kallsyms/kernel_symbol_map.cc",
+        "src/kallsyms/kernel_symbol_map.h",
+        "src/kallsyms/lazy_kernel_symbolizer.cc",
+        "src/kallsyms/lazy_kernel_symbolizer.h",
+    ],
+)
+
 # GN target: //src/perfetto_cmd:perfetto_atoms
 filegroup(
     name = "src_perfetto_cmd_perfetto_atoms",
@@ -1224,17 +1235,6 @@
     ],
 )
 
-# GN target: //src/traced/probes/ftrace/kallsyms:kallsyms
-filegroup(
-    name = "src_traced_probes_ftrace_kallsyms_kallsyms",
-    srcs = [
-        "src/traced/probes/ftrace/kallsyms/kernel_symbol_map.cc",
-        "src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h",
-        "src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.cc",
-        "src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.h",
-    ],
-)
-
 # GN target: //src/traced/probes/ftrace:format_parser
 filegroup(
     name = "src_traced_probes_ftrace_format_parser",
diff --git a/gn/perfetto_benchmarks.gni b/gn/perfetto_benchmarks.gni
index ca2e36a..ddca3f2 100644
--- a/gn/perfetto_benchmarks.gni
+++ b/gn/perfetto_benchmarks.gni
@@ -21,7 +21,7 @@
   "src/trace_processor/sqlite:benchmarks",
   "src/trace_processor/containers:benchmarks",
   "src/trace_processor/tables:benchmarks",
-  "src/traced/probes/ftrace/kallsyms:benchmarks",
+  "src/kallsyms:benchmarks",
   "src/traced/probes/ftrace:benchmarks",
   "src/tracing/core:benchmarks",
   "src/tracing:benchmarks",
diff --git a/gn/perfetto_unittests.gni b/gn/perfetto_unittests.gni
index 41fcd00..9b6a95d 100644
--- a/gn/perfetto_unittests.gni
+++ b/gn/perfetto_unittests.gni
@@ -53,7 +53,7 @@
     "src/traced/probes:unittests",
     "src/traced/probes/filesystem:unittests",
     "src/traced/probes/ftrace:unittests",
-    "src/traced/probes/ftrace/kallsyms:unittests",
+    "src/kallsyms:unittests",
     "src/traced/service:unittests",
   ]
 }
diff --git a/src/traced/probes/ftrace/kallsyms/BUILD.gn b/src/kallsyms/BUILD.gn
similarity index 74%
rename from src/traced/probes/ftrace/kallsyms/BUILD.gn
rename to src/kallsyms/BUILD.gn
index 0d1f3a5..5f305f8 100644
--- a/src/traced/probes/ftrace/kallsyms/BUILD.gn
+++ b/src/kallsyms/BUILD.gn
@@ -12,13 +12,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import("../../../../../gn/test.gni")
+import("../../gn/test.gni")
 
 source_set("kallsyms") {
   deps = [
-    "../../../../../gn:default_deps",
-    "../../../../../include/perfetto/protozero",
-    "../../../../base",
+    "../../gn:default_deps",
+    "../../include/perfetto/protozero",
+    "../base",
   ]
   sources = [
     "kernel_symbol_map.cc",
@@ -32,9 +32,9 @@
   testonly = true
   deps = [
     ":kallsyms",
-    "../../../../../gn:default_deps",
-    "../../../../../gn:gtest_and_gmock",
-    "../../../../base",
+    "../../gn:default_deps",
+    "../../gn:gtest_and_gmock",
+    "../base",
   ]
   sources = [
     "kernel_symbol_map_unittest.cc",
@@ -47,10 +47,10 @@
     testonly = true
     deps = [
       ":kallsyms",
-      "../../../../../gn:benchmark",
-      "../../../../../gn:default_deps",
-      "../../../../base",
-      "../../../../base:test_support",
+      "../../gn:benchmark",
+      "../../gn:default_deps",
+      "../base",
+      "../base:test_support",
     ]
     sources = [ "kernel_symbol_map_benchmark.cc" ]
   }
diff --git a/src/traced/probes/ftrace/kallsyms/kernel_symbol_map.cc b/src/kallsyms/kernel_symbol_map.cc
similarity index 98%
rename from src/traced/probes/ftrace/kallsyms/kernel_symbol_map.cc
rename to src/kallsyms/kernel_symbol_map.cc
index d9b3d0d..f367f07 100644
--- a/src/traced/probes/ftrace/kallsyms/kernel_symbol_map.cc
+++ b/src/kallsyms/kernel_symbol_map.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h"
+#include "src/kallsyms/kernel_symbol_map.h"
 
 #include "perfetto/base/logging.h"
 #include "perfetto/ext/base/metatrace.h"
@@ -233,7 +233,7 @@
 }
 
 size_t KernelSymbolMap::Parse(const std::string& kallsyms_path) {
-  PERFETTO_METATRACE_SCOPED(TAG_FTRACE, KALLSYMS_PARSE);
+  PERFETTO_METATRACE_SCOPED(TAG_PRODUCER, KALLSYMS_PARSE);
   using SymAddr = uint64_t;
 
   struct TokenInfo {
diff --git a/src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h b/src/kallsyms/kernel_symbol_map.h
similarity index 97%
rename from src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h
rename to src/kallsyms/kernel_symbol_map.h
index c13546a..6563b3c 100644
--- a/src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h
+++ b/src/kallsyms/kernel_symbol_map.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SRC_TRACED_PROBES_FTRACE_KALLSYMS_KERNEL_SYMBOL_MAP_H_
-#define SRC_TRACED_PROBES_FTRACE_KALLSYMS_KERNEL_SYMBOL_MAP_H_
+#ifndef SRC_KALLSYMS_KERNEL_SYMBOL_MAP_H_
+#define SRC_KALLSYMS_KERNEL_SYMBOL_MAP_H_
 
 #include <stdint.h>
 #include <array>
@@ -179,4 +179,4 @@
 
 }  // namespace perfetto
 
-#endif  // SRC_TRACED_PROBES_FTRACE_KALLSYMS_KERNEL_SYMBOL_MAP_H_
+#endif  // SRC_KALLSYMS_KERNEL_SYMBOL_MAP_H_
diff --git a/src/traced/probes/ftrace/kallsyms/kernel_symbol_map_benchmark.cc b/src/kallsyms/kernel_symbol_map_benchmark.cc
similarity index 98%
rename from src/traced/probes/ftrace/kallsyms/kernel_symbol_map_benchmark.cc
rename to src/kallsyms/kernel_symbol_map_benchmark.cc
index e5b8cf7..7c3e9a9 100644
--- a/src/traced/probes/ftrace/kallsyms/kernel_symbol_map_benchmark.cc
+++ b/src/kallsyms/kernel_symbol_map_benchmark.cc
@@ -21,7 +21,7 @@
 #include "perfetto/base/logging.h"
 #include "perfetto/ext/base/utils.h"
 #include "src/base/test/utils.h"
-#include "src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h"
+#include "src/kallsyms/kernel_symbol_map.h"
 
 namespace {
 
diff --git a/src/traced/probes/ftrace/kallsyms/kernel_symbol_map_unittest.cc b/src/kallsyms/kernel_symbol_map_unittest.cc
similarity index 98%
rename from src/traced/probes/ftrace/kallsyms/kernel_symbol_map_unittest.cc
rename to src/kallsyms/kernel_symbol_map_unittest.cc
index 63c33e8..deba34a 100644
--- a/src/traced/probes/ftrace/kallsyms/kernel_symbol_map_unittest.cc
+++ b/src/kallsyms/kernel_symbol_map_unittest.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h"
+#include "src/kallsyms/kernel_symbol_map.h"
 
 #include <inttypes.h>
 
diff --git a/src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.cc b/src/kallsyms/lazy_kernel_symbolizer.cc
similarity index 97%
rename from src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.cc
rename to src/kallsyms/lazy_kernel_symbolizer.cc
index 9a80684..082221a 100644
--- a/src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.cc
+++ b/src/kallsyms/lazy_kernel_symbolizer.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.h"
+#include "src/kallsyms/lazy_kernel_symbolizer.h"
 
 #include <string>
 
@@ -25,7 +25,7 @@
 #include "perfetto/ext/base/file_utils.h"
 #include "perfetto/ext/base/scoped_file.h"
 #include "perfetto/ext/base/utils.h"
-#include "src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h"
+#include "src/kallsyms/kernel_symbol_map.h"
 
 #if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
 #include <sys/system_properties.h>
diff --git a/src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.h b/src/kallsyms/lazy_kernel_symbolizer.h
similarity index 91%
rename from src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.h
rename to src/kallsyms/lazy_kernel_symbolizer.h
index 18b599b..6f954e5 100644
--- a/src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.h
+++ b/src/kallsyms/lazy_kernel_symbolizer.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SRC_TRACED_PROBES_FTRACE_KALLSYMS_LAZY_KERNEL_SYMBOLIZER_H_
-#define SRC_TRACED_PROBES_FTRACE_KALLSYMS_LAZY_KERNEL_SYMBOLIZER_H_
+#ifndef SRC_KALLSYMS_LAZY_KERNEL_SYMBOLIZER_H_
+#define SRC_KALLSYMS_LAZY_KERNEL_SYMBOLIZER_H_
 
 #include <memory>
 
@@ -63,4 +63,4 @@
 
 }  // namespace perfetto
 
-#endif  // SRC_TRACED_PROBES_FTRACE_KALLSYMS_LAZY_KERNEL_SYMBOLIZER_H_
+#endif  // SRC_KALLSYMS_LAZY_KERNEL_SYMBOLIZER_H_
diff --git a/src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer_unittest.cc b/src/kallsyms/lazy_kernel_symbolizer_unittest.cc
similarity index 98%
rename from src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer_unittest.cc
rename to src/kallsyms/lazy_kernel_symbolizer_unittest.cc
index d847f8d..c219dda 100644
--- a/src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer_unittest.cc
+++ b/src/kallsyms/lazy_kernel_symbolizer_unittest.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.h"
+#include "src/kallsyms/lazy_kernel_symbolizer.h"
 
 #include <inttypes.h>
 
diff --git a/src/profiling/perf/BUILD.gn b/src/profiling/perf/BUILD.gn
index c6c48ae..ead817e 100644
--- a/src/profiling/perf/BUILD.gn
+++ b/src/profiling/perf/BUILD.gn
@@ -92,8 +92,8 @@
     ":common_types",
     "../../../gn:default_deps",
     "../../../include/perfetto/ext/tracing/core",
-    "../../../src//traced/probes/ftrace/kallsyms",
     "../../../src/base",
+    "../../../src/kallsyms",
     "../common:unwind_support",
   ]
   sources = [
diff --git a/src/profiling/perf/event_config.cc b/src/profiling/perf/event_config.cc
index 2e8e58d..ccf8b0e 100644
--- a/src/profiling/perf/event_config.cc
+++ b/src/profiling/perf/event_config.cc
@@ -192,7 +192,7 @@
   pe.sample_regs_user =
       PerfUserRegsMaskForArch(unwindstack::Regs::CurrentArch());
 
-  // Optional kernel call frames (unwound by the kernel itself):
+  // Optional kernel callchains:
   if (kernel_frames_) {
     pe.sample_type |= PERF_SAMPLE_CALLCHAIN;
     pe.exclude_callchain_user = true;
diff --git a/src/profiling/perf/event_reader.cc b/src/profiling/perf/event_reader.cc
index c6ddf3d..f82ef05 100644
--- a/src/profiling/perf/event_reader.cc
+++ b/src/profiling/perf/event_reader.cc
@@ -33,14 +33,14 @@
 
 template <typename T>
 const char* ReadValue(T* value_out, const char* ptr) {
-  memcpy(value_out, ptr, sizeof(T));
+  memcpy(value_out, reinterpret_cast<const void*>(ptr), sizeof(T));
   return ptr + sizeof(T);
 }
 
 template <typename T>
 const char* ReadValues(T* out, const char* ptr, size_t num_values) {
   size_t sz = sizeof(T) * num_values;
-  memcpy(out, ptr, sz);
+  memcpy(out, reinterpret_cast<const void*>(ptr), sz);
   return ptr + sz;
 }
 
diff --git a/src/profiling/perf/unwinding.cc b/src/profiling/perf/unwinding.cc
index 1dfb005..022e6a8 100644
--- a/src/profiling/perf/unwinding.cc
+++ b/src/profiling/perf/unwinding.cc
@@ -409,6 +409,7 @@
   }
 
   auto* kernel_map = kernel_symbolizer_.GetOrCreateKernelSymbolMap();
+  PERFETTO_DCHECK(kernel_map);
   ret.reserve(sample.kernel_ips.size());
   for (size_t i = 1; i < sample.kernel_ips.size(); i++) {
     std::string function_name = kernel_map->Lookup(sample.kernel_ips[i]);
diff --git a/src/profiling/perf/unwinding.h b/src/profiling/perf/unwinding.h
index 274d485..a92cad7 100644
--- a/src/profiling/perf/unwinding.h
+++ b/src/profiling/perf/unwinding.h
@@ -31,14 +31,12 @@
 #include "perfetto/ext/base/thread_checker.h"
 #include "perfetto/ext/base/unix_task_runner.h"
 #include "perfetto/ext/tracing/core/basic_types.h"
+#include "src/kallsyms/kernel_symbol_map.h"
+#include "src/kallsyms/lazy_kernel_symbolizer.h"
 #include "src/profiling/common/unwind_support.h"
 #include "src/profiling/perf/common_types.h"
 #include "src/profiling/perf/unwind_queue.h"
 
-// TODO(rsavitski): move kallsyms code to a common location.
-#include "src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h"
-#include "src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.h"
-
 namespace perfetto {
 namespace profiling {
 
diff --git a/src/traced/probes/ftrace/BUILD.gn b/src/traced/probes/ftrace/BUILD.gn
index 90d1e4b..6b0df75 100644
--- a/src/traced/probes/ftrace/BUILD.gn
+++ b/src/traced/probes/ftrace/BUILD.gn
@@ -112,8 +112,8 @@
     "../../../../protos/perfetto/trace/profiling:zero",
     "../../../android_internal:lazy_library_loader",
     "../../../base",
+    "../../../kallsyms",
     "../../../protozero",
-    "kallsyms",
   ]
   sources = [
     "atrace_hal_wrapper.cc",
diff --git a/src/traced/probes/ftrace/cpu_reader.cc b/src/traced/probes/ftrace/cpu_reader.cc
index 75f34ac..5f283d1 100644
--- a/src/traced/probes/ftrace/cpu_reader.cc
+++ b/src/traced/probes/ftrace/cpu_reader.cc
@@ -27,11 +27,11 @@
 #include "perfetto/ext/base/optional.h"
 #include "perfetto/ext/base/utils.h"
 #include "perfetto/ext/tracing/core/trace_writer.h"
+#include "src/kallsyms/kernel_symbol_map.h"
+#include "src/kallsyms/lazy_kernel_symbolizer.h"
 #include "src/traced/probes/ftrace/ftrace_config_muxer.h"
 #include "src/traced/probes/ftrace/ftrace_controller.h"
 #include "src/traced/probes/ftrace/ftrace_data_source.h"
-#include "src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h"
-#include "src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.h"
 #include "src/traced/probes/ftrace/proto_translation_table.h"
 
 #include "protos/perfetto/trace/ftrace/ftrace_event.pbzero.h"
diff --git a/src/traced/probes/ftrace/ftrace_controller.cc b/src/traced/probes/ftrace/ftrace_controller.cc
index ca557b7..374b0a9 100644
--- a/src/traced/probes/ftrace/ftrace_controller.cc
+++ b/src/traced/probes/ftrace/ftrace_controller.cc
@@ -34,6 +34,8 @@
 #include "perfetto/ext/base/file_utils.h"
 #include "perfetto/ext/base/metatrace.h"
 #include "perfetto/ext/tracing/core/trace_writer.h"
+#include "src/kallsyms/kernel_symbol_map.h"
+#include "src/kallsyms/lazy_kernel_symbolizer.h"
 #include "src/traced/probes/ftrace/atrace_hal_wrapper.h"
 #include "src/traced/probes/ftrace/cpu_reader.h"
 #include "src/traced/probes/ftrace/cpu_stats_parser.h"
@@ -44,8 +46,6 @@
 #include "src/traced/probes/ftrace/ftrace_metadata.h"
 #include "src/traced/probes/ftrace/ftrace_procfs.h"
 #include "src/traced/probes/ftrace/ftrace_stats.h"
-#include "src/traced/probes/ftrace/kallsyms/kernel_symbol_map.h"
-#include "src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.h"
 #include "src/traced/probes/ftrace/proto_translation_table.h"
 
 namespace perfetto {