perf_evsel__sb_cb_t     *cb;
                void                    *data;
        } side_band;
+       /*
+        * For reporting purposes, an evsel sample can have a callchain
+        * synthesized from AUX area data. Keep track of synthesized sample
+        * types here. Note, the recorded sample_type cannot be changed because
+        * it is needed to continue to parse events.
+        * See also evsel__has_callchain().
+        */
+       __u64                   synth_sample_type;
 };
 
 struct perf_missing_features {
 
 static inline bool evsel__has_callchain(const struct evsel *evsel)
 {
-       return (evsel->core.attr.sample_type & PERF_SAMPLE_CALLCHAIN) != 0;
+       /*
+        * For reporting purposes, an evsel sample can have a recorded callchain
+        * or a callchain synthesized from AUX area data.
+        */
+       return evsel->core.attr.sample_type & PERF_SAMPLE_CALLCHAIN ||
+              evsel->synth_sample_type & PERF_SAMPLE_CALLCHAIN;
 }
 
 struct perf_env *perf_evsel__env(struct evsel *evsel);