]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - tools/perf/util/evsel.c
perf record: Allow mixing --user-regs with --call-graph=dwarf
[linux.git] / tools / perf / util / evsel.c
index a10cf4cde92059b3b667216bc625a5b472f7237a..cc6e7a0dda928c5d1628c06f33e39e48c18e19ef 100644 (file)
@@ -702,7 +702,14 @@ static void __perf_evsel__config_callchain(struct perf_evsel *evsel,
                if (!function) {
                        perf_evsel__set_sample_bit(evsel, REGS_USER);
                        perf_evsel__set_sample_bit(evsel, STACK_USER);
-                       attr->sample_regs_user |= PERF_REGS_MASK;
+                       if (opts->sample_user_regs && DWARF_MINIMAL_REGS != PERF_REGS_MASK) {
+                               attr->sample_regs_user |= DWARF_MINIMAL_REGS;
+                               pr_warning("WARNING: The use of --call-graph=dwarf may require all the user registers, "
+                                          "specifying a subset with --user-regs may render DWARF unwinding unreliable, "
+                                          "so the minimal registers set (IP, SP) is explicitly forced.\n");
+                       } else {
+                               attr->sample_regs_user |= PERF_REGS_MASK;
+                       }
                        attr->sample_stack_user = param->dump_size;
                        attr->exclude_callchain_user = 1;
                } else {
@@ -813,6 +820,8 @@ static void apply_config_terms(struct perf_evsel *evsel,
                        break;
                case PERF_EVSEL__CONFIG_TERM_DRV_CFG:
                        break;
+               case PERF_EVSEL__CONFIG_TERM_PERCORE:
+                       break;
                default:
                        break;
                }