return session->auxtrace->free(session);
 }
+
+bool auxtrace__evsel_is_auxtrace(struct perf_session *session,
+                                struct evsel *evsel)
+{
+       if (!session->auxtrace || !session->auxtrace->evsel_is_auxtrace)
+               return false;
+
+       return session->auxtrace->evsel_is_auxtrace(session, evsel);
+}
 
 union perf_event;
 struct perf_session;
 struct evlist;
+struct evsel;
 struct perf_tool;
 struct mmap;
 struct perf_sample;
                            struct perf_tool *tool);
        void (*free_events)(struct perf_session *session);
        void (*free)(struct perf_session *session);
+       bool (*evsel_is_auxtrace)(struct perf_session *session,
+                                 struct evsel *evsel);
 };
 
 /**
 int auxtrace__flush_events(struct perf_session *session, struct perf_tool *tool);
 void auxtrace__free_events(struct perf_session *session);
 void auxtrace__free(struct perf_session *session);
+bool auxtrace__evsel_is_auxtrace(struct perf_session *session,
+                                struct evsel *evsel);
 
 #define ITRACE_HELP \
 "                              i:                      synthesize instructions events\n"               \
 {
 }
 
+static inline
+bool auxtrace__evsel_is_auxtrace(struct perf_session *session __maybe_unused,
+                                struct evsel *evsel __maybe_unused)
+{
+       return false;
+}
+
 static inline
 int auxtrace_parse_filters(struct evlist *evlist __maybe_unused)
 {