You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'perf-core-for-mingo-4.11-20170220' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo: New features: - Make -a/--all-cpus be the default target in 'perf record' and 'perf stat', just like it is with 'perf trace' (Jiri Olsa) - Introduce -q/--quiet to the 'annotate', 'diff' and 'report', fix up its behaviour in 'record'. This makes the output more compact by elliminating headers, leaving just the histogram lines (Namhyung Kim) Fixes: - Handle offline/absent CPUs (Jan Stancek) Infrastructure changes: - Filter out -specs=/a/b/c from CC options when building the python support, allowing that feature to be built with clang (Arnaldo Carvalho de Melo) - Fix DEBUG=1 build with clang (Arnaldo Carvalho de Melo) Trivial changes: - Fix spelling of 'preempt' in a libtraceevent function name (Steven Rostedt) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -35,8 +35,8 @@ all: $(OUTPUT)fixdep
|
||||
|
||||
clean:
|
||||
$(call QUIET_CLEAN, fixdep)
|
||||
$(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
|
||||
$(Q)rm -f fixdep
|
||||
$(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
|
||||
$(Q)rm -f $(OUTPUT)fixdep
|
||||
|
||||
$(OUTPUT)fixdep-in.o: FORCE
|
||||
$(Q)$(MAKE) $(build)=fixdep
|
||||
|
||||
@@ -3,4 +3,7 @@ build := -f $(srctree)/tools/build/Makefile.build dir=. obj
|
||||
fixdep:
|
||||
$(Q)$(MAKE) -C $(srctree)/tools/build CFLAGS= LDFLAGS= $(OUTPUT)fixdep
|
||||
|
||||
fixdep-clean:
|
||||
$(Q)$(MAKE) -C $(srctree)/tools/build clean
|
||||
|
||||
.PHONY: fixdep
|
||||
|
||||
@@ -5204,13 +5204,13 @@ int pevent_data_pid(struct pevent *pevent, struct pevent_record *rec)
|
||||
}
|
||||
|
||||
/**
|
||||
* pevent_data_prempt_count - parse the preempt count from the record
|
||||
* pevent_data_preempt_count - parse the preempt count from the record
|
||||
* @pevent: a handle to the pevent
|
||||
* @rec: the record to parse
|
||||
*
|
||||
* This returns the preempt count from a record.
|
||||
*/
|
||||
int pevent_data_prempt_count(struct pevent *pevent, struct pevent_record *rec)
|
||||
int pevent_data_preempt_count(struct pevent *pevent, struct pevent_record *rec)
|
||||
{
|
||||
return parse_common_pc(pevent, rec->data);
|
||||
}
|
||||
|
||||
@@ -709,7 +709,7 @@ void pevent_data_lat_fmt(struct pevent *pevent,
|
||||
int pevent_data_type(struct pevent *pevent, struct pevent_record *rec);
|
||||
struct event_format *pevent_data_event_from_type(struct pevent *pevent, int type);
|
||||
int pevent_data_pid(struct pevent *pevent, struct pevent_record *rec);
|
||||
int pevent_data_prempt_count(struct pevent *pevent, struct pevent_record *rec);
|
||||
int pevent_data_preempt_count(struct pevent *pevent, struct pevent_record *rec);
|
||||
int pevent_data_flags(struct pevent *pevent, struct pevent_record *rec);
|
||||
const char *pevent_data_comm_from_pid(struct pevent *pevent, int pid);
|
||||
struct cmdline;
|
||||
|
||||
@@ -39,6 +39,10 @@ OPTIONS
|
||||
--verbose::
|
||||
Be more verbose. (Show symbol address, etc)
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
Do not show any message. (Suppress -v)
|
||||
|
||||
-D::
|
||||
--dump-raw-trace::
|
||||
Dump raw trace in ASCII.
|
||||
|
||||
@@ -73,6 +73,10 @@ OPTIONS
|
||||
Be verbose, for instance, show the raw counts in addition to the
|
||||
diff.
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
Do not show any message. (Suppress -v)
|
||||
|
||||
-f::
|
||||
--force::
|
||||
Don't do ownership validation.
|
||||
|
||||
@@ -157,7 +157,7 @@ OPTIONS
|
||||
|
||||
-a::
|
||||
--all-cpus::
|
||||
System-wide collection from all CPUs.
|
||||
System-wide collection from all CPUs (default if no target is specified).
|
||||
|
||||
-p::
|
||||
--pid=::
|
||||
|
||||
@@ -25,6 +25,10 @@ OPTIONS
|
||||
--verbose::
|
||||
Be more verbose. (show symbol address, etc)
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
Do not show any message. (Suppress -v)
|
||||
|
||||
-n::
|
||||
--show-nr-samples::
|
||||
Show the number of samples for each symbol
|
||||
|
||||
@@ -63,7 +63,7 @@ report::
|
||||
|
||||
-a::
|
||||
--all-cpus::
|
||||
system-wide collection from all CPUs
|
||||
system-wide collection from all CPUs (default if no target is specified)
|
||||
|
||||
-c::
|
||||
--scale::
|
||||
|
||||
@@ -175,6 +175,10 @@ PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG))
|
||||
PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null)
|
||||
PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null)
|
||||
|
||||
ifeq ($(CC), clang)
|
||||
PYTHON_EMBED_CCOPTS := $(filter-out -specs=%,$(PYTHON_EMBED_CCOPTS))
|
||||
endif
|
||||
|
||||
FEATURE_CHECK_CFLAGS-libpython := $(PYTHON_EMBED_CCOPTS)
|
||||
FEATURE_CHECK_LDFLAGS-libpython := $(PYTHON_EMBED_LDOPTS)
|
||||
FEATURE_CHECK_CFLAGS-libpython-version := $(PYTHON_EMBED_CCOPTS)
|
||||
@@ -601,6 +605,9 @@ else
|
||||
PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS))
|
||||
PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) -lutil
|
||||
PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null)
|
||||
ifeq ($(CC), clang)
|
||||
PYTHON_EMBED_CCOPTS := $(filter-out -specs=%,$(PYTHON_EMBED_CCOPTS))
|
||||
endif
|
||||
FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS)
|
||||
|
||||
ifneq ($(feature-libpython), 1)
|
||||
|
||||
@@ -726,13 +726,13 @@ config-clean:
|
||||
$(call QUIET_CLEAN, config)
|
||||
$(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null
|
||||
|
||||
clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean config-clean
|
||||
clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean config-clean fixdep-clean
|
||||
$(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS)
|
||||
$(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
|
||||
$(Q)$(RM) $(OUTPUT).config-detected
|
||||
$(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(OUTPUT)pmu-events/jevents $(OUTPUT)$(LIBJVMTI).so
|
||||
$(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \
|
||||
$(OUTPUT)util/intel-pt-decoder/inat-tables.c $(OUTPUT)fixdep \
|
||||
$(OUTPUT)util/intel-pt-decoder/inat-tables.c \
|
||||
$(OUTPUT)tests/llvm-src-{base,kbuild,prologue,relocation}.c \
|
||||
$(OUTPUT)pmu-events/pmu-events.c
|
||||
$(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean
|
||||
|
||||
@@ -410,6 +410,7 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||
OPT_BOOLEAN('f', "force", &file.force, "don't complain, do it"),
|
||||
OPT_INCR('v', "verbose", &verbose,
|
||||
"be more verbose (show symbol address, etc)"),
|
||||
OPT_BOOLEAN('q', "quiet", &quiet, "do now show any message"),
|
||||
OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
|
||||
"dump raw trace in ASCII"),
|
||||
OPT_BOOLEAN(0, "gtk", &annotate.use_gtk, "Use the GTK interface"),
|
||||
@@ -463,6 +464,9 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||
annotate.sym_hist_filter = argv[0];
|
||||
}
|
||||
|
||||
if (quiet)
|
||||
perf_quiet_option();
|
||||
|
||||
file.path = input_name;
|
||||
|
||||
annotate.session = perf_session__new(&file, false, &annotate.tool);
|
||||
|
||||
@@ -691,7 +691,7 @@ static void hists__process(struct hists *hists)
|
||||
hists__precompute(hists);
|
||||
hists__output_resort(hists, NULL);
|
||||
|
||||
hists__fprintf(hists, true, 0, 0, 0, stdout,
|
||||
hists__fprintf(hists, !quiet, 0, 0, 0, stdout,
|
||||
symbol_conf.use_callchain);
|
||||
}
|
||||
|
||||
@@ -739,12 +739,14 @@ static void data_process(void)
|
||||
hists__link(hists_base, hists);
|
||||
}
|
||||
|
||||
fprintf(stdout, "%s# Event '%s'\n#\n", first ? "" : "\n",
|
||||
perf_evsel__name(evsel_base));
|
||||
if (!quiet) {
|
||||
fprintf(stdout, "%s# Event '%s'\n#\n", first ? "" : "\n",
|
||||
perf_evsel__name(evsel_base));
|
||||
}
|
||||
|
||||
first = false;
|
||||
|
||||
if (verbose || data__files_cnt > 2)
|
||||
if (verbose > 0 || ((data__files_cnt > 2) && !quiet))
|
||||
data__fprintf();
|
||||
|
||||
/* Don't sort callchain for perf diff */
|
||||
@@ -807,6 +809,7 @@ static const char * const diff_usage[] = {
|
||||
static const struct option options[] = {
|
||||
OPT_INCR('v', "verbose", &verbose,
|
||||
"be more verbose (show symbol address, etc)"),
|
||||
OPT_BOOLEAN('q', "quiet", &quiet, "Do not show any message"),
|
||||
OPT_BOOLEAN('b', "baseline-only", &show_baseline_only,
|
||||
"Show only items with match in baseline"),
|
||||
OPT_CALLBACK('c', "compute", &compute,
|
||||
@@ -1328,6 +1331,9 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||
|
||||
argc = parse_options(argc, argv, options, diff_usage, 0);
|
||||
|
||||
if (quiet)
|
||||
perf_quiet_option();
|
||||
|
||||
if (symbol__init(NULL) < 0)
|
||||
return -1;
|
||||
|
||||
|
||||
@@ -42,8 +42,8 @@ static int parse_record_events(const struct option *opt,
|
||||
|
||||
fprintf(stderr, "%-13s%-*s%s\n",
|
||||
e->tag,
|
||||
verbose ? 25 : 0,
|
||||
verbose ? perf_mem_events__name(j) : "",
|
||||
verbose > 0 ? 25 : 0,
|
||||
verbose > 0 ? perf_mem_events__name(j) : "",
|
||||
e->supported ? ": available" : "");
|
||||
}
|
||||
exit(0);
|
||||
|
||||
@@ -432,7 +432,7 @@ static int record__open(struct record *rec)
|
||||
try_again:
|
||||
if (perf_evsel__open(pos, pos->cpus, pos->threads) < 0) {
|
||||
if (perf_evsel__fallback(pos, errno, msg, sizeof(msg))) {
|
||||
if (verbose)
|
||||
if (verbose > 0)
|
||||
ui__warning("%s\n", msg);
|
||||
goto try_again;
|
||||
}
|
||||
@@ -1677,8 +1677,12 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||
|
||||
argc = parse_options(argc, argv, record_options, record_usage,
|
||||
PARSE_OPT_STOP_AT_NON_OPTION);
|
||||
if (quiet)
|
||||
perf_quiet_option();
|
||||
|
||||
/* Make system wide (-a) the default target. */
|
||||
if (!argc && target__none(&rec->opts.target))
|
||||
usage_with_options(record_usage, record_options);
|
||||
rec->opts.target.system_wide = true;
|
||||
|
||||
if (nr_cgroups && !rec->opts.target.system_wide) {
|
||||
usage_with_options_msg(record_usage, record_options,
|
||||
|
||||
@@ -320,6 +320,9 @@ static size_t hists__fprintf_nr_sample_events(struct hists *hists, struct report
|
||||
size_t size = sizeof(buf);
|
||||
int socked_id = hists->socket_filter;
|
||||
|
||||
if (quiet)
|
||||
return 0;
|
||||
|
||||
if (symbol_conf.filter_relative) {
|
||||
nr_samples = hists->stats.nr_non_filtered_samples;
|
||||
nr_events = hists->stats.total_non_filtered_period;
|
||||
@@ -372,7 +375,11 @@ static int perf_evlist__tty_browse_hists(struct perf_evlist *evlist,
|
||||
{
|
||||
struct perf_evsel *pos;
|
||||
|
||||
fprintf(stdout, "#\n# Total Lost Samples: %" PRIu64 "\n#\n", evlist->stats.total_lost_samples);
|
||||
if (!quiet) {
|
||||
fprintf(stdout, "#\n# Total Lost Samples: %" PRIu64 "\n#\n",
|
||||
evlist->stats.total_lost_samples);
|
||||
}
|
||||
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
struct hists *hists = evsel__hists(pos);
|
||||
const char *evname = perf_evsel__name(pos);
|
||||
@@ -382,7 +389,7 @@ static int perf_evlist__tty_browse_hists(struct perf_evlist *evlist,
|
||||
continue;
|
||||
|
||||
hists__fprintf_nr_sample_events(hists, rep, evname, stdout);
|
||||
hists__fprintf(hists, true, 0, 0, rep->min_percent, stdout,
|
||||
hists__fprintf(hists, !quiet, 0, 0, rep->min_percent, stdout,
|
||||
symbol_conf.use_callchain);
|
||||
fprintf(stdout, "\n\n");
|
||||
}
|
||||
@@ -716,6 +723,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||
"input file name"),
|
||||
OPT_INCR('v', "verbose", &verbose,
|
||||
"be more verbose (show symbol address, etc)"),
|
||||
OPT_BOOLEAN('q', "quiet", &quiet, "Do not show any message"),
|
||||
OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
|
||||
"dump raw trace in ASCII"),
|
||||
OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name,
|
||||
@@ -863,6 +871,9 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||
report.symbol_filter_str = argv[0];
|
||||
}
|
||||
|
||||
if (quiet)
|
||||
perf_quiet_option();
|
||||
|
||||
if (symbol_conf.vmlinux_name &&
|
||||
access(symbol_conf.vmlinux_name, R_OK)) {
|
||||
pr_err("Invalid file: %s\n", symbol_conf.vmlinux_name);
|
||||
@@ -983,14 +994,14 @@ repeat:
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (report.header || report.header_only) {
|
||||
if ((report.header || report.header_only) && !quiet) {
|
||||
perf_session__fprintf_info(session, stdout,
|
||||
report.show_full_info);
|
||||
if (report.header_only) {
|
||||
ret = 0;
|
||||
goto error;
|
||||
}
|
||||
} else if (use_browser == 0) {
|
||||
} else if (use_browser == 0 && !quiet) {
|
||||
fputs("# To display the perf.data header info, please use --header/--header-only options.\n#\n",
|
||||
stdout);
|
||||
}
|
||||
@@ -1009,7 +1020,7 @@ repeat:
|
||||
* providing it only in verbose mode not to bloat too
|
||||
* much struct symbol.
|
||||
*/
|
||||
if (verbose) {
|
||||
if (verbose > 0) {
|
||||
/*
|
||||
* XXX: Need to provide a less kludgy way to ask for
|
||||
* more space per symbol, the u32 is for the index on
|
||||
|
||||
@@ -460,7 +460,7 @@ static struct task_desc *register_pid(struct perf_sched *sched,
|
||||
BUG_ON(!sched->tasks);
|
||||
sched->tasks[task->nr] = task;
|
||||
|
||||
if (verbose)
|
||||
if (verbose > 0)
|
||||
printf("registered task #%ld, PID %ld (%s)\n", sched->nr_tasks, pid, comm);
|
||||
|
||||
return task;
|
||||
@@ -794,7 +794,7 @@ replay_wakeup_event(struct perf_sched *sched,
|
||||
const u32 pid = perf_evsel__intval(evsel, sample, "pid");
|
||||
struct task_desc *waker, *wakee;
|
||||
|
||||
if (verbose) {
|
||||
if (verbose > 0) {
|
||||
printf("sched_wakeup event %p\n", evsel);
|
||||
|
||||
printf(" ... pid %d woke up %s/%d\n", sample->tid, comm, pid);
|
||||
@@ -822,7 +822,7 @@ static int replay_switch_event(struct perf_sched *sched,
|
||||
int cpu = sample->cpu;
|
||||
s64 delta;
|
||||
|
||||
if (verbose)
|
||||
if (verbose > 0)
|
||||
printf("sched_switch event %p\n", evsel);
|
||||
|
||||
if (cpu >= MAX_CPUS || cpu < 0)
|
||||
@@ -870,7 +870,7 @@ static int replay_fork_event(struct perf_sched *sched,
|
||||
goto out_put;
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
if (verbose > 0) {
|
||||
printf("fork event\n");
|
||||
printf("... parent: %s/%d\n", thread__comm_str(parent), parent->tid);
|
||||
printf("... child: %s/%d\n", thread__comm_str(child), child->tid);
|
||||
@@ -1573,7 +1573,7 @@ static int map_switch_event(struct perf_sched *sched, struct perf_evsel *evsel,
|
||||
|
||||
timestamp__scnprintf_usec(timestamp, stimestamp, sizeof(stimestamp));
|
||||
color_fprintf(stdout, color, " %12s secs ", stimestamp);
|
||||
if (new_shortname || (verbose && sched_in->tid)) {
|
||||
if (new_shortname || (verbose > 0 && sched_in->tid)) {
|
||||
const char *pid_color = color;
|
||||
|
||||
if (thread__has_color(sched_in))
|
||||
@@ -2050,7 +2050,7 @@ static void save_task_callchain(struct perf_sched *sched,
|
||||
|
||||
if (thread__resolve_callchain(thread, cursor, evsel, sample,
|
||||
NULL, NULL, sched->max_stack + 2) != 0) {
|
||||
if (verbose)
|
||||
if (verbose > 0)
|
||||
error("Failed to resolve callchain. Skipping\n");
|
||||
|
||||
return;
|
||||
|
||||
@@ -573,7 +573,7 @@ try_again:
|
||||
if (errno == EINVAL || errno == ENOSYS ||
|
||||
errno == ENOENT || errno == EOPNOTSUPP ||
|
||||
errno == ENXIO) {
|
||||
if (verbose)
|
||||
if (verbose > 0)
|
||||
ui__warning("%s event is not supported by the kernel.\n",
|
||||
perf_evsel__name(counter));
|
||||
counter->supported = false;
|
||||
@@ -582,7 +582,7 @@ try_again:
|
||||
!(counter->leader->nr_members > 1))
|
||||
continue;
|
||||
} else if (perf_evsel__fallback(counter, errno, msg, sizeof(msg))) {
|
||||
if (verbose)
|
||||
if (verbose > 0)
|
||||
ui__warning("%s\n", msg);
|
||||
goto try_again;
|
||||
}
|
||||
@@ -1765,7 +1765,7 @@ static inline int perf_env__get_cpu(struct perf_env *env, struct cpu_map *map, i
|
||||
|
||||
cpu = map->map[idx];
|
||||
|
||||
if (cpu >= env->nr_cpus_online)
|
||||
if (cpu >= env->nr_cpus_avail)
|
||||
return -1;
|
||||
|
||||
return cpu;
|
||||
@@ -2445,8 +2445,9 @@ int cmd_stat(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||
} else if (big_num_opt == 0) /* User passed --no-big-num */
|
||||
big_num = false;
|
||||
|
||||
/* Make system wide (-a) the default target. */
|
||||
if (!argc && target__none(&target))
|
||||
usage_with_options(stat_usage, stat_options);
|
||||
target.system_wide = true;
|
||||
|
||||
if (run_count < 0) {
|
||||
pr_err("Run count must be a positive number\n");
|
||||
@@ -2538,7 +2539,7 @@ int cmd_stat(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||
|
||||
status = 0;
|
||||
for (run_idx = 0; forever || run_idx < run_count; run_idx++) {
|
||||
if (run_count != 1 && verbose)
|
||||
if (run_count != 1 && verbose > 0)
|
||||
fprintf(output, "[ perf stat: executing run #%d ... ]\n",
|
||||
run_idx + 1);
|
||||
|
||||
|
||||
@@ -871,7 +871,7 @@ try_again:
|
||||
if (perf_evsel__open(counter, top->evlist->cpus,
|
||||
top->evlist->threads) < 0) {
|
||||
if (perf_evsel__fallback(counter, errno, msg, sizeof(msg))) {
|
||||
if (verbose)
|
||||
if (verbose > 0)
|
||||
ui__warning("%s\n", msg);
|
||||
goto try_again;
|
||||
}
|
||||
|
||||
@@ -1399,7 +1399,7 @@ static struct syscall *trace__syscall_info(struct trace *trace,
|
||||
return &trace->syscalls.table[id];
|
||||
|
||||
out_cant_read:
|
||||
if (verbose) {
|
||||
if (verbose > 0) {
|
||||
fprintf(trace->output, "Problems reading syscall %d", id);
|
||||
if (id <= trace->syscalls.max && trace->syscalls.table[id].name != NULL)
|
||||
fprintf(trace->output, "(%s)", trace->syscalls.table[id].name);
|
||||
@@ -1801,10 +1801,10 @@ static void print_location(FILE *f, struct perf_sample *sample,
|
||||
bool print_dso, bool print_sym)
|
||||
{
|
||||
|
||||
if ((verbose || print_dso) && al->map)
|
||||
if ((verbose > 0 || print_dso) && al->map)
|
||||
fprintf(f, "%s@", al->map->dso->long_name);
|
||||
|
||||
if ((verbose || print_sym) && al->sym)
|
||||
if ((verbose > 0 || print_sym) && al->sym)
|
||||
fprintf(f, "%s+0x%" PRIx64, al->sym->name,
|
||||
al->addr - al->sym->start);
|
||||
else if (al->map)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user