if (ret < 0)
                goto out_delete;
 
-       if (setup_sorting() < 0)
+       if (setup_sorting(NULL) < 0)
                usage_with_options(annotate_usage, options);
 
        if (annotate.use_stdio)
 
 
        sort__mode = SORT_MODE__DIFF;
 
-       if (setup_sorting() < 0)
+       if (setup_sorting(NULL) < 0)
                usage_with_options(diff_usage, options);
 
        setup_pager();
 
                symbol_conf.cumulate_callchain = false;
        }
 
-       if (setup_sorting() < 0) {
+       if (setup_sorting(session->evlist) < 0) {
                if (sort_order)
                        parse_options_usage(report_usage, options, "s", 1);
                if (field_order)
 
        /* display thread wants entries to be collapsed in a different tree */
        sort__need_collapse = 1;
 
-       if (setup_sorting() < 0) {
+       if (setup_sorting(top.evlist) < 0) {
                if (sort_order)
                        parse_options_usage(top_usage, options, "s", 1);
                if (field_order)
 
        symbol_conf.cumulate_callchain = false;
        perf_evsel__reset_sample_bit(evsel, CALLCHAIN);
 
-       setup_sorting();
+       setup_sorting(NULL);
        callchain_register_param(&callchain_param);
 
        err = add_hist_entries(hists, machine);
        symbol_conf.cumulate_callchain = false;
        perf_evsel__set_sample_bit(evsel, CALLCHAIN);
 
-       setup_sorting();
+       setup_sorting(NULL);
        callchain_register_param(&callchain_param);
 
        err = add_hist_entries(hists, machine);
        symbol_conf.cumulate_callchain = true;
        perf_evsel__reset_sample_bit(evsel, CALLCHAIN);
 
-       setup_sorting();
+       setup_sorting(NULL);
        callchain_register_param(&callchain_param);
 
        err = add_hist_entries(hists, machine);
        symbol_conf.cumulate_callchain = true;
        perf_evsel__set_sample_bit(evsel, CALLCHAIN);
 
-       setup_sorting();
+       setup_sorting(NULL);
        callchain_register_param(&callchain_param);
 
        err = add_hist_entries(hists, machine);
 
                goto out;
 
        /* default sort order (comm,dso,sym) will be used */
-       if (setup_sorting() < 0)
+       if (setup_sorting(NULL) < 0)
                goto out;
 
        machines__init(&machines);
 
                goto out;
 
        /* default sort order (comm,dso,sym) will be used */
-       if (setup_sorting() < 0)
+       if (setup_sorting(NULL) < 0)
                goto out;
 
        machines__init(&machines);
 
        field_order = NULL;
        sort_order = NULL; /* equivalent to sort_order = "comm,dso,sym" */
 
-       setup_sorting();
+       setup_sorting(NULL);
 
        /*
         * expected output:
        field_order = "overhead,cpu";
        sort_order = "pid";
 
-       setup_sorting();
+       setup_sorting(NULL);
 
        /*
         * expected output:
        field_order = "comm,overhead,dso";
        sort_order = NULL;
 
-       setup_sorting();
+       setup_sorting(NULL);
 
        /*
         * expected output:
        field_order = "dso,sym,comm,overhead,dso";
        sort_order = "sym";
 
-       setup_sorting();
+       setup_sorting(NULL);
 
        /*
         * expected output:
        field_order = "cpu,pid,comm,dso,sym";
        sort_order = "dso,pid";
 
-       setup_sorting();
+       setup_sorting(NULL);
 
        /*
         * expected output:
 
 #include "comm.h"
 #include "symbol.h"
 #include "evsel.h"
+#include "evlist.h"
+#include <traceevent/event-parse.h>
 
 regex_t                parent_regex;
 const char     default_parent_pattern[] = "^sys_|^do_page_fault";
        return __hpp_dimension__add_output(&hpp_sort_dimensions[col]);
 }
 
-int sort_dimension__add(const char *tok)
+static int sort_dimension__add(const char *tok,
+                              struct perf_evlist *evlist __maybe_unused)
 {
        unsigned int i;
 
        return 0;
 }
 
-static int __setup_sorting(void)
+static int __setup_sorting(struct perf_evlist *evlist)
 {
        char *tmp, *tok, *str;
        const char *sort_keys;
 
        for (tok = strtok_r(str, ", ", &tmp);
                        tok; tok = strtok_r(NULL, ", ", &tmp)) {
-               ret = sort_dimension__add(tok);
+               ret = sort_dimension__add(tok, evlist);
                if (ret == -EINVAL) {
                        error("Invalid --sort key: `%s'", tok);
                        break;
        return ret;
 }
 
-int setup_sorting(void)
+int setup_sorting(struct perf_evlist *evlist)
 {
        int err;
 
-       err = __setup_sorting();
+       err = __setup_sorting(evlist);
        if (err < 0)
                return err;
 
        if (parent_pattern != default_parent_pattern) {
-               err = sort_dimension__add("parent");
+               err = sort_dimension__add("parent", evlist);
                if (err < 0)
                        return err;
        }
 
 extern struct sort_entry sort_thread;
 extern struct list_head hist_entry__sort_list;
 
-int setup_sorting(void);
+struct perf_evlist;
+struct pevent;
+int setup_sorting(struct perf_evlist *evlist);
 int setup_output_field(void);
 void reset_output_field(void);
-extern int sort_dimension__add(const char *);
 void sort__setup_elide(FILE *fp);
 void perf_hpp__set_elide(int idx, bool elide);