Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60e67737 authored by Franck Bui-Huu's avatar Franck Bui-Huu Committed by Arnaldo Carvalho de Melo
Browse files

perf header: Don't assume there's no attr info if no sample ids is provided



This primarily fixes perf-report, which didn't report the correct type
of event if perf-record was called to record one event different from
'cycles':

  $ perf record -e instructions true
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.007 MB perf.data (~295 samples) ]

  $ perf report | head -n1
    # Events: 7  cycles

LPU-Reference: <m3mxor6nex.fsf@gmail.com>
Signed-off-by: default avatarFranck Bui-Huu <fbuihuu@gmail.com>
parent d214afbd
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -946,11 +946,16 @@ perf_header__find_attr(u64 id, struct perf_header *header)

	/*
	 * We set id to -1 if the data file doesn't contain sample
	 * ids. Check for this and avoid walking through the entire
	 * list of ids which may be large.
	 * ids. This can happen when the data file contains one type
	 * of event and in that case, the header can still store the
	 * event attribute information. Check for this and avoid
	 * walking through the entire list of ids which may be large.
	 */
	if (id == -1ULL)
	if (id == -1ULL) {
		if (header->attrs > 0)
			return &header->attr[0]->attr;
		return NULL;
	}

	for (i = 0; i < header->attrs; i++) {
		struct perf_header_attr *attr = header->attr[i];