perf: Add build id data in mmap2 event
authorJiri Olsa <jolsa@kernel.org>
Thu, 14 Jan 2021 13:40:44 +0000 (14:40 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 15 Jan 2021 03:29:58 +0000 (19:29 -0800)
commit88a16a1309333e43d328621ece3e9fa37027e8eb
tree75de6df2421dce6b1859d71c75562be1e70ee1a5
parent921f88fc891922b325b3668cd026a386571ed602
perf: Add build id data in mmap2 event

Adding support to carry build id data in mmap2 event.

The build id data replaces maj/min/ino/ino_generation
fields, which are also used to identify map's binary,
so it's ok to replace them with build id data:

  union {
          struct {
                  u32       maj;
                  u32       min;
                  u64       ino;
                  u64       ino_generation;
          };
          struct {
                  u8        build_id_size;
                  u8        __reserved_1;
                  u16       __reserved_2;
                  u8        build_id[20];
          };
  };

Replaced maj/min/ino/ino_generation fields give us size
of 24 bytes. We use 20 bytes for build id data, 1 byte
for size and rest is unused.

There's new misc bit for mmap2 to signal there's build
id data in it:

  #define PERF_RECORD_MISC_MMAP_BUILD_ID   (1 << 14)

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/bpf/20210114134044.1418404-4-jolsa@kernel.org
include/uapi/linux/perf_event.h
kernel/events/core.c