diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index d597263fab4f..f14f2a12d061 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -802,6 +802,7 @@ static int pmu_aliases_parse_eager(struct perf_pmu *pmu, int sysfs_fd) static int pmu_alias_terms(struct perf_pmu_alias *alias, struct list_head *terms) { struct parse_events_terms alias_terms; + struct parse_events_term *term; int ret; parse_events_terms__init(&alias_terms); @@ -812,6 +813,13 @@ static int pmu_alias_terms(struct perf_pmu_alias *alias, struct list_head *terms parse_events_terms__exit(&alias_terms); return ret; } + list_for_each_entry(term, &alias_terms.terms, list) { + /* + * Weak terms don't override command line options, + * which we don't want for implicit terms in aliases. + */ + term->weak = true; + } list_splice_init(&alias_terms.terms, terms); parse_events_terms__exit(&alias_terms); return 0;