#include "util/util.h"
 #include "util/cache.h"
+#include "util/evsel.h"
 #include "util/symbol.h"
 #include "util/thread.h"
 #include "util/header.h"
 
 static int process_sample_event(union perf_event *event,
                                struct perf_sample *sample,
-                               struct perf_evsel *evsel __used,
+                               struct perf_evsel *evsel,
                                struct perf_session *session)
 {
        struct thread *thread;
 
-       if (!(session->sample_type & PERF_SAMPLE_RAW))
+       if (!(evsel->attr.sample_type & PERF_SAMPLE_RAW))
                return 0;
 
        thread = perf_session__findnew(session, sample->pid);
 
 #include "util/color.h"
 #include <linux/list.h>
 #include "util/cache.h"
+#include "util/evsel.h"
 #include <linux/rbtree.h>
 #include "util/symbol.h"
 #include "util/callchain.h"
 
 static int process_sample_event(union perf_event *event __used,
                                struct perf_sample *sample,
-                               struct perf_evsel *evsel __used,
-                               struct perf_session *session)
+                               struct perf_evsel *evsel,
+                               struct perf_session *session __used)
 {
        struct trace_entry *te;
 
-       if (session->sample_type & PERF_SAMPLE_TIME) {
+       if (evsel->attr.sample_type & PERF_SAMPLE_TIME) {
                if (!first_time || first_time > sample->time)
                        first_time = sample->time;
                if (last_time < sample->time)
        }
 
        te = (void *)sample->raw_data;
-       if (session->sample_type & PERF_SAMPLE_RAW && sample->raw_size > 0) {
+       if ((evsel->attr.sample_type & PERF_SAMPLE_RAW) && sample->raw_size > 0) {
                char *event_str;
 #ifdef SUPPORT_OLD_POWER_EVENTS
                struct power_entry_old *peo;