Add support for symbolizing kernel symbols for ftrace events

Makes use of the kallsyms parser perviously introduced
by aosp/1196774. The parser is enabled only when setting
symbolize_ksyms=true in the FtraceConfig proto.
For now the CL works only when perfetto is run as root
on dev phones. Will follow up with security team to
figure out a way forward.

This CL uses the FtraceMetadata to keep track of the
incremental symbols discovered. FtraceMetadata is
shared across all cpus, but is per-session. As a
summary this is the whole callstack of a ftrace read
cycle:

FtraceController::ReadTick()
  for cpu = 0 .. num_cpus
    CpuReader[i].ReadCycle(data_sources)
      for (batch = 0; ...; batch++)
        ReadAndProcessBatch(data_sources)
          for (ds : data_sources)
            ProcessPagesForDataSource(ds)
              writes metadata
    OnFtraceDataWrittenIntoDataSourceBuffers()
      for (ds : data_souces)
        // Forward metadata to other data souces.
        metadata->Clear()


Design doc: go/perfetto-kallsyms
Bug: 147809529
Test: still TODO (but tested manually)
Change-Id: I59be90da96513c9e99981f73035dd7ee3a822d49
diff --git a/Android.bp b/Android.bp
index 861e382..b9638b1 100644
--- a/Android.bp
+++ b/Android.bp
@@ -476,6 +476,7 @@
     ":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",
@@ -992,6 +993,7 @@
     ":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",
@@ -1237,6 +1239,7 @@
     ":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",
@@ -1629,6 +1632,7 @@
     ":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",
@@ -7350,6 +7354,7 @@
   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",
   ],
 }