linux/tools/perf/util
Rong Bao a355eefc36 perf annotate: Use jump__delete when freeing LoongArch jumps
Currently, the initialization of loongarch_jump_ops does not contain an
assignment to its .free field. This causes disasm_line__free() to fall
through to ins_ops__delete() for LoongArch jump instructions.

ins_ops__delete() will free ins_operands.source.raw and
ins_operands.source.name, and these fields overlaps with
ins_operands.jump.raw_comment and ins_operands.jump.raw_func_start.
Since in loongarch_jump__parse(), these two fields are populated by
strchr()-ing the same buffer, trying to free them will lead to undefined
behavior.

This invalid free usually leads to crashes:

        Process 1712902 (perf) of user 1000 dumped core.
        Stack trace of thread 1712902:
        #0  0x00007fffef155c58 n/a (libc.so.6 + 0x95c58)
        #1  0x00007fffef0f7a94 raise (libc.so.6 + 0x37a94)
        #2  0x00007fffef0dd6a8 abort (libc.so.6 + 0x1d6a8)
        #3  0x00007fffef145490 n/a (libc.so.6 + 0x85490)
        #4  0x00007fffef1646f4 n/a (libc.so.6 + 0xa46f4)
        #5  0x00007fffef164718 n/a (libc.so.6 + 0xa4718)
        #6  0x00005555583a6764 __zfree (/home/csmantle/dist/linux-arch/tools/perf/perf + 0x106764)
        #7  0x000055555854fb70 disasm_line__free (/home/csmantle/dist/linux-arch/tools/perf/perf + 0x2afb70)
        #8  0x000055555853d618 annotated_source__purge (/home/csmantle/dist/linux-arch/tools/perf/perf + 0x29d618)
        #9  0x000055555852300c __hist_entry__tui_annotate (/home/csmantle/dist/linux-arch/tools/perf/perf + 0x28300c)
        #10 0x0000555558526718 do_annotate (/home/csmantle/dist/linux-arch/tools/perf/perf + 0x286718)
        #11 0x000055555852ed94 evsel__hists_browse (/home/csmantle/dist/linux-arch/tools/perf/perf + 0x28ed94)
        #12 0x000055555831fdd0 cmd_report (/home/csmantle/dist/linux-arch/tools/perf/perf + 0x7fdd0)
        #13 0x000055555839b644 handle_internal_command (/home/csmantle/dist/linux-arch/tools/perf/perf + 0xfb644)
        #14 0x00005555582fe6ac main (/home/csmantle/dist/linux-arch/tools/perf/perf + 0x5e6ac)
        #15 0x00007fffef0ddd90 n/a (libc.so.6 + 0x1dd90)
        #16 0x00007fffef0ddf0c __libc_start_main (libc.so.6 + 0x1df0c)
        #17 0x00005555582fed10 _start (/home/csmantle/dist/linux-arch/tools/perf/perf + 0x5ed10)
        ELF object binary architecture: LoongArch

... and it can be confirmed with Valgrind:

        ==1721834== Invalid free() / delete / delete[] / realloc()
        ==1721834==    at 0x4EA9014: free (in /usr/lib/valgrind/vgpreload_memcheck-loongarch64-linux.so)
        ==1721834==    by 0x4106287: __zfree (zalloc.c:13)
        ==1721834==    by 0x42ADC8F: disasm_line__free (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x429B737: annotated_source__purge (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x42811EB: __hist_entry__tui_annotate (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x42848D7: do_annotate (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x428CF33: evsel__hists_browse (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==  Address 0x7d34303 is 35 bytes inside a block of size 62 alloc'd
        ==1721834==    at 0x4EA59B8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-loongarch64-linux.so)
        ==1721834==    by 0x6B80B6F: strdup (strdup.c:42)
        ==1721834==    by 0x42AD917: disasm_line__new (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x42AE5A3: symbol__disassemble_objdump (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x42AF0A7: symbol__disassemble (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x429B3CF: symbol__annotate (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x429C233: symbol__annotate2 (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x42804D3: __hist_entry__tui_annotate (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x42848D7: do_annotate (in /home/csmantle/dist/linux-arch/tools/perf/perf)
        ==1721834==    by 0x428CF33: evsel__hists_browse (in /home/csmantle/dist/linux-arch/tools/perf/perf)

This patch adds the missing free() specialization in loongarch_jump_ops,
which prevents disasm_line__free() from invoking the default cleanup
function.

Fixes: fb7fd2a14a ("perf annotate: Move raw_comment and raw_func_start fields out of 'struct ins_operands'")
Cc: stable@vger.kernel.org
Cc: WANG Rui <wangrui@loongson.cn>
Cc: Huacai Chen <chenhuacai@kernel.org>
Cc: WANG Xuerui <kernel@xen0n.name>
Cc: loongarch@lists.linux.dev
Signed-off-by: Rong Bao <rong.bao@csmantle.top>
Tested-by: WANG Rui <wangrui@loongson.cn>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2026-04-13 23:41:11 -07:00
..
annotate-arch perf annotate: Use jump__delete when freeing LoongArch jumps 2026-04-13 23:41:11 -07:00
arm-spe-decoder perf arm_spe: Expose SIMD information in other operations 2025-11-18 20:31:30 -08:00
bpf_skel perf trace: Handle task exit in BPF syscall summary 2026-02-26 10:49:00 -08:00
cs-etm-decoder perf tools fixes for v7.0: 2nd batch 2026-03-25 00:06:23 -07:00
dwarf-regs-arch perf dwarf-regs: Add MIPS perf to DWARF register number mapping functions 2026-01-20 15:43:56 -03:00
hisi-ptt-decoder perf build: Remove NO_AUXTRACE build option 2025-11-13 23:03:11 -08:00
include perf dwarf-regs: Add MIPS perf to DWARF register number mapping functions 2026-01-20 15:43:56 -03:00
intel-pt-decoder perf build: Remove NO_AUXTRACE build option 2025-11-13 23:03:11 -08:00
kvm-stat-arch perf kvm stat: Fix relative paths for including headers 2026-03-17 17:16:45 -03:00
libunwind perf unwind: Use perf_arch_reg_{ip|sp}() to substitute macros 2023-08-16 08:48:06 -03:00
perf-regs-arch perf record: Add support for arch_sdt_arg_parse_op() on s390 2026-03-26 14:38:54 -07:00
scripting-engines libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
addr_location.c perf map_symbol: Switch from holding maps to holding thread 2026-01-23 16:58:39 -03:00
addr_location.h perf map_symbol: Switch from holding maps to holding thread 2026-01-23 16:58:39 -03:00
addr2line.c perf addr2line: Remove global variable addr2line_timeout_ms 2026-04-08 10:28:49 -07:00
addr2line.h perf addr2line: Remove global variable addr2line_timeout_ms 2026-04-08 10:28:49 -07:00
affinity.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
affinity.h perf test: Expand user space event reading (rdpmc) tests 2025-06-20 13:14:07 -07:00
amd-sample-raw.c perf evlist: Change env variable to session 2025-07-25 10:37:56 -07:00
annotate-data.c perf annotate-data: Use DWARF location ranges to preserve reg state 2026-03-19 14:42:29 -07:00
annotate-data.h perf annotate-data: Use DWARF location ranges to preserve reg state 2026-03-19 14:42:29 -07:00
annotate.c perf tools: Replace basename() calls with perf_basename() 2026-04-08 19:21:05 -07:00
annotate.h perf disasm: Refactor arch__find and initialization of arch structs 2026-01-23 16:58:39 -03:00
arm-spe.c perf arm_spe: Improve SIMD flags setting 2026-04-10 09:52:06 -07:00
arm-spe.h perf arm_spe: Add "event_filter" entry in meta data 2025-09-19 12:14:28 -03:00
arm64-frame-pointer-unwind-support.c perf regs: Refactor use of arch__sample_reg_masks() to perf_reg_name() 2026-01-23 16:58:39 -03:00
arm64-frame-pointer-unwind-support.h
auxtrace.c perf tool: Add the perf_tool argument to all callbacks 2025-11-07 13:25:05 -08:00
auxtrace.h perf auxtrace: Include sys/types.h for pid_t 2025-12-03 11:01:05 -08:00
blake2s.c perf util: Add BLAKE2s support 2026-01-13 17:03:25 -03:00
blake2s.h perf util: Add BLAKE2s support 2026-01-13 17:03:25 -03:00
block-info.c perf config: Rename symbol_conf::disable_add2line_warn 2026-04-08 10:28:49 -07:00
block-info.h perf report: Display the branch counter histogram 2024-08-14 10:20:40 -03:00
block-range.c perf tools: Make more global variables static 2026-04-08 19:21:04 -07:00
block-range.h
bpf_counter_cgroup.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
bpf_counter.c perf tools: Make more global variables static 2026-04-08 19:21:04 -07:00
bpf_counter.h perf bpf_counter: Move header declarations into C code 2025-10-01 15:27:02 -03:00
bpf_ftrace.c perf auxtrace: Remove errno.h from auxtrace.h and fix transitive dependencies 2025-11-13 23:03:11 -08:00
bpf_kwork_top.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
bpf_kwork.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
bpf_lock_contention.c perf lock contention: fix segfault in lock contention -b/--use-bpf 2026-02-06 18:57:26 -03:00
bpf_off_cpu.c perf tools: Make more global variables static 2026-04-08 19:21:04 -07:00
bpf_trace_augment.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
bpf-event.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
bpf-event.h perf record: collect BPF metadata from new programs 2025-06-20 14:48:49 -07:00
bpf-filter.c perf bpf: Move the LIBBPF_CURRENT_VERSION_GEQ macro to bpf-utils.h 2025-09-30 13:36:03 -03:00
bpf-filter.h perf auxtrace: Remove errno.h from auxtrace.h and fix transitive dependencies 2025-11-13 23:03:11 -08:00
bpf-filter.l perf bpf-filter: Fix a parsing error with comma 2025-03-24 17:29:58 -07:00
bpf-filter.y perf bpf-filter: Support filtering on cgroups 2024-08-28 18:21:49 -03:00
bpf-trace-summary.c perf auxtrace: Remove errno.h from auxtrace.h and fix transitive dependencies 2025-11-13 23:03:11 -08:00
bpf-utils.c perf tools: Switch printf("...%s", strerror(errno)) to printf("...%m") 2026-01-14 17:22:50 -03:00
bpf-utils.h perf bpf-event: Use libbpf version rather than feature check 2025-10-03 16:49:51 -03:00
branch.c perf session: Add accessor for session->header.env 2025-07-25 10:37:56 -07:00
branch.h perf branch: Avoid incrementing NULL 2026-03-13 14:13:02 -07:00
btf.c perf btf: Make the sigtrap test helper to find a member by name widely available 2024-12-09 17:52:41 -03:00
btf.h perf btf: Make the sigtrap test helper to find a member by name widely available 2024-12-09 17:52:41 -03:00
Build perf bpf_map: Remove unused code 2026-03-13 14:26:28 -07:00
build-id.c perf tools: Don't read build-ids from non-regular files 2025-11-26 10:13:38 -08:00
build-id.h perf build-id: Change sprintf functions to snprintf 2025-07-25 10:37:13 -07:00
cache.h perf path: Make mkpath thread safe, remove 16384 bytes from .bss 2023-05-28 10:24:14 -03:00
cacheline.c
cacheline.h perf c2c: Add report option to show false sharing in adjacent cachelines 2023-02-16 09:33:45 -03:00
call-path.c
call-path.h
callchain.c perf sample: Make sure perf_sample__init/exit are used 2026-04-05 23:12:15 -07:00
callchain.h perf callchain: Refactor callchain option parsing 2026-03-19 14:42:46 -07:00
cap.c perf tools: Switch printf("...%s", strerror(errno)) to printf("...%m") 2026-01-14 17:22:50 -03:00
cap.h perf bpf-filter: Improve error messages 2025-06-09 11:18:17 -07:00
capstone.c perf capstone: Support for dlopen-ing libcapstone.so 2026-02-03 11:34:02 -03:00
capstone.h perf capstone: Support for dlopen-ing libcapstone.so 2026-02-03 11:34:02 -03:00
cgroup.c perf cgroup: Update metric leader in evlist__expand_cgroup 2026-04-05 23:23:33 -07:00
cgroup.h perf stat: Move metric list from config to evlist 2025-07-11 12:36:40 -07:00
clockid.c
clockid.h perf clockid: Add missing include 2026-04-02 19:35:16 -07:00
cloexec.c perf util: Remove weak sched_getcpu 2023-03-14 08:29:46 -03:00
cloexec.h
color_config.c perf util: Remove unused perf_color_default_config 2025-03-10 11:31:24 -07:00
color.c perf tools: Remove unused color_fwrite_lines 2024-10-10 23:38:33 -07:00
color.h perf util: Remove unused perf_color_default_config 2025-03-10 11:31:24 -07:00
comm.c perf thread: Ensure comm_lock held for comm_list 2025-06-11 13:40:31 -07:00
comm.h
compress.h perf tools: Add LZMA decompression from FILE 2025-03-10 14:37:02 -07:00
config.c perf addr2line: Remove global variable addr2line_timeout_ms 2026-04-08 10:28:49 -07:00
config.h perf util: Remove unused perf_config__refresh 2025-03-10 11:31:24 -07:00
copyfile.c
copyfile.h
counts.c
counts.h
cpumap.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
cpumap.h perf cpumap: Remove refcnt from 'struct cpu_aggr_map' 2024-05-07 18:06:44 -03:00
cputopo.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
cputopo.h perf expr: Make the online topology accessible globally 2023-02-19 08:03:12 -03:00
cs-etm-base.c perf cs-etm: Move mapping of Trace ID and cpu into helper function 2023-04-04 09:39:56 -03:00
cs-etm.c perf cs-etm: Finish removal of ETM_OPT_* 2026-03-10 09:50:44 -03:00
cs-etm.h perf cs-etm: Finish removal of ETM_OPT_* 2026-03-10 09:50:44 -03:00
data-convert-bt.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
data-convert-json.c perf tools: Replace basename() calls with perf_basename() 2026-04-08 19:21:05 -07:00
data-convert.h perf data: Allow filtering conversion by time range 2026-01-06 19:20:02 -03:00
data.c perf data: Clean up use_stdio and structures 2026-04-08 19:21:17 -07:00
data.h perf data: Clean up use_stdio and structures 2026-04-08 19:21:17 -07:00
db-export.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
db-export.h
debug.c perf tools: Make more global variables static 2026-04-08 19:21:04 -07:00
debug.h perf debug: Add function symbols to dump_stack 2025-06-25 10:59:19 -07:00
debuginfo.c perf tools: Make more global variables static 2026-04-08 19:21:04 -07:00
debuginfo.h perf build: Rename HAVE_DWARF_SUPPORT to HAVE_LIBDW_SUPPORT 2024-10-18 10:17:40 -07:00
demangle-cxx.cpp perf symbol: Avoid memory leak from abi::__cxa_demangle 2023-03-20 12:49:58 -03:00
demangle-cxx.h perf symbol: Move demangling code out of symbol-elf.c 2025-05-28 19:02:58 -03:00
demangle-java.c perf demangle-java: Constify variables storing the result of strchr() on const tables 2026-01-27 02:33:29 -03:00
demangle-java.h
demangle-ocaml.c
demangle-ocaml.h
demangle-rust-v0.c perf demangle-rust: Add rustc-demangle C demangler 2025-05-09 17:00:05 -03:00
demangle-rust-v0.h perf demangle-rust: Add rustc-demangle C demangler 2025-05-09 17:00:05 -03:00
disasm.c perf annotate: Use jump__delete when freeing LoongArch jumps 2026-04-13 23:41:11 -07:00
disasm.h perf annotate: Use jump__delete when freeing LoongArch jumps 2026-04-13 23:41:11 -07:00
dlfilter.c perf script: Fix script_fetch_insn for more than just x86 2026-01-27 01:35:22 -03:00
dlfilter.h
drm_pmu.c perf pmu: Replace starts_with with strstarts 2026-03-03 17:04:49 -08:00
drm_pmu.h perf drm_pmu: Add a tool like PMU to expose DRM information 2025-06-25 11:12:35 -07:00
dso.c perf thread: Add optional e_flags output argument to thread__e_machine 2026-01-26 18:21:20 -03:00
dso.h perf thread: Add optional e_flags output argument to thread__e_machine 2026-01-26 18:21:20 -03:00
dsos.c perf tools: Replace basename() calls with perf_basename() 2026-04-08 19:21:05 -07:00
dsos.h perf dso: Constify dso_id 2024-08-19 14:52:13 -03:00
dump-insn.h perf script: Minimize "not reaching sample" for '-F +brstackinsn' 2024-09-03 12:22:01 -03:00
dwarf-aux.c perf dwarf-aux: Collect all variable locations for insn tracking 2026-03-19 14:42:30 -07:00
dwarf-aux.h perf annotate-data: Use DWARF location ranges to preserve reg state 2026-03-19 14:42:29 -07:00
dwarf-regs.c perf dwarf-regs: Add MIPS perf to DWARF register number mapping functions 2026-01-20 15:43:56 -03:00
env.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
env.h perf tools: Save cln_size header 2026-04-05 22:30:52 -07:00
event.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
event.h perf sched stats: Add record and rawdump support 2026-01-22 12:29:28 -03:00
events_stats.h perf report: Add latency output field 2025-02-18 14:04:32 -08:00
evlist.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
evlist.h perf evlist: Improve default event for s390 2026-03-19 14:42:46 -07:00
evsel_config.h perf parse-events: Track all user changed config bits 2026-01-14 23:14:54 -03:00
evsel_fprintf.c perf callchain: Fix srcline printing with inlines 2026-01-13 16:21:33 -03:00
evsel_fprintf.h perf script: Add new output field 'dsoff' to print dso offset 2023-05-12 15:21:49 -03:00
evsel.c perf sample: Add evsel to struct perf_sample 2026-04-05 23:12:15 -07:00
evsel.h perf evsel: Constify option arguments to config functions 2026-03-19 14:42:46 -07:00
evswitch.c perf auxtrace: Remove errno.h from auxtrace.h and fix transitive dependencies 2025-11-13 23:03:11 -08:00
evswitch.h perf: Various spelling fixes 2023-01-23 10:00:47 -03:00
expr.c perf expr: Add '\n' in literal parse errors 2026-04-02 18:10:59 -07:00
expr.h perf jevents: Add a new expression builtin strcmp_cpuid_str() 2023-08-17 14:12:14 -03:00
expr.l perf expr: Allow NaN to be a valid number 2024-02-13 13:47:08 -08:00
expr.y perf expr: Make YYDEBUG dependent on doing a debug build 2023-09-12 17:46:50 -03:00
find-map.c
fncache.c perf fncache: Switch to using hashmap 2025-05-13 16:36:22 -03:00
fncache.h perf fncache: Switch to using hashmap 2025-05-13 16:36:22 -03:00
ftrace.h perf: ftrace: add graph tracer options args/retval/retval-hex/retaddr 2025-07-22 17:47:22 -07:00
genelf_debug.c perf jit: Fix incorrect file name in DWARF line table 2023-06-20 22:18:58 -07:00
genelf.c perf genelf: Switch from SHA-1 to BLAKE2s for build ID generation 2026-01-13 17:03:28 -03:00
genelf.h perf build: Rename HAVE_DWARF_SUPPORT to HAVE_LIBDW_SUPPORT 2024-10-18 10:17:40 -07:00
hashmap.c
hashmap.h perf tools: Fix possible compiler warnings in hashmap 2024-10-14 12:04:31 -07:00
header.c perf header: Add sanity checks to HEADER_BPF_BTF processing 2026-04-13 23:21:53 -07:00
header.h perf tools: Save cln_size header 2026-04-05 22:30:52 -07:00
help-unknown-cmd.c perf help: Lower levenshtein penality for deleting character 2024-03-21 13:54:40 -03:00
help-unknown-cmd.h
hisi-ptt.c perf tool: Constify tool pointers 2024-08-12 18:05:14 -03:00
hisi-ptt.h
hist.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
hist.h perf report: Add comm_nodigit sort key 2026-03-26 15:22:18 -07:00
hwmon_pmu.c perf hwmon_pmu: Constify the variables returning bsearch() on const tables 2026-01-27 02:15:30 -03:00
hwmon_pmu.h perf tools: Fix duplicated words in documentation and comments 2025-10-01 09:44:02 -03:00
intel-bts.c perf auxtrace: Add auxtrace_synth_id_range_start() helper 2025-10-25 17:44:57 -07:00
intel-bts.h
intel-pt.c perf auxtrace: Add auxtrace_synth_id_range_start() helper 2025-10-25 17:44:57 -07:00
intel-pt.h perf pmu: Lazily compute default config 2023-10-17 12:40:50 -07:00
intel-tpebs.c perf header: Refactor pipe mode end marker handling 2026-04-02 19:35:16 -07:00
intel-tpebs.h perf stat: Add mean, min, max and last --tpebs-mode options 2025-04-25 12:31:36 -03:00
intlist.c
intlist.h
iostat.c
iostat.h
jit.h perf jit: Constify filename argument 2024-08-19 14:51:46 -03:00
jitdump.c perf jitdump: Constify variables storing the result of strchr() on const tables 2026-01-27 02:36:24 -03:00
jitdump.h
kvm-stat.c perf session: Add e_flags to the e_machine helper 2026-02-03 18:01:27 -03:00
kvm-stat.h perf kvm: Wire up e_machine 2026-02-03 18:01:27 -03:00
kwork.h perf kwork: Make perf_kwork_add_work a callback 2024-12-18 16:24:33 -03:00
levenshtein.c
levenshtein.h
libbfd.c perf config: Rename symbol_conf::disable_add2line_warn 2026-04-08 10:28:49 -07:00
libbfd.h perf tools: Don't read build-ids from non-regular files 2025-11-26 10:13:38 -08:00
libdw.c perf powerpc: Unify the skip-callchain-idx libdw with that for addr2line 2026-01-20 13:04:38 -03:00
libdw.h perf powerpc: Unify the skip-callchain-idx libdw with that for addr2line 2026-01-20 13:04:38 -03:00
llvm-c-helpers.cpp perf llvm-add2line: Remove unused symbol_conf.h include 2025-01-08 17:38:32 -03:00
llvm-c-helpers.h perf annotate: LLVM-based disassembler 2024-09-03 10:39:20 -03:00
llvm.c perf annotate: Specify llvm features="+all" for aarch64 2026-03-04 18:05:18 -08:00
llvm.h perf srcline: Fallback between addr2line implementations 2025-10-06 16:47:49 -03:00
lock-contention.c perf lock: Move common lock contention code to new file 2024-12-18 16:24:33 -03:00
lock-contention.h perf lock contention: Add -J/--inject-delay option 2025-05-09 14:32:15 -03:00
lzma.c perf tools: Switch printf("...%s", strerror(errno)) to printf("...%m") 2026-01-14 17:22:50 -03:00
machine.c perf callchain lbr: Make the leaf IP that of the sample 2026-02-06 18:10:44 -03:00
machine.h perf machine: Explicitly pass in host perf_env 2025-07-25 10:37:57 -07:00
map_symbol.c perf map_symbol: Switch from holding maps to holding thread 2026-01-23 16:58:39 -03:00
map_symbol.h perf map_symbol: Switch from holding maps to holding thread 2026-01-23 16:58:39 -03:00
map.c perf map: Constify objdump offset/address conversion APIs 2025-10-02 15:36:13 -03:00
map.h perf map: Constify objdump offset/address conversion APIs 2025-10-02 15:36:13 -03:00
maps.c perf maps: Fix copy_from that can break sorted by name order 2026-04-08 10:28:49 -07:00
maps.h perf unwind-libdw: Don't discard loaded ELF/DWARF after every unwind 2026-01-20 15:43:56 -03:00
mem-events.c perf mem-events: Don't leak online CPU map 2025-12-03 11:07:46 -08:00
mem-events.h perf mem: Add 'dtlb' output field 2025-05-02 15:36:14 -03:00
mem-info.c perf hist: Correct hist_entry->mem_info refcounts 2024-08-01 18:55:55 -03:00
mem-info.h perf hist: Correct hist_entry->mem_info refcounts 2024-08-01 18:55:55 -03:00
mem2node.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
mem2node.h
memswap.c
memswap.h
metricgroup.c perf metricgroup: Refine error logs 2026-04-02 18:11:00 -07:00
metricgroup.h perf metricgroup: Update comment on location of metric_event list 2025-11-03 20:57:21 -08:00
mmap.c perf auxtrace: Remove errno.h from auxtrace.h and fix transitive dependencies 2025-11-13 23:03:11 -08:00
mmap.h perf tools: Deadcode removal 2025-02-10 11:46:02 -08:00
mutex.c perf libbfd: Ensure libbfd is initialized prior to use 2025-11-13 17:55:19 -03:00
mutex.h perf libbfd: Ensure libbfd is initialized prior to use 2025-11-13 17:55:19 -03:00
namespaces.c perf namespaces: Avoid get_current_dir_name dependency 2025-10-03 15:28:04 -03:00
namespaces.h perf namespaces: Fixup the nsinfo__in_pidns() return type, its bool 2025-01-08 17:31:06 -03:00
off_cpu.h perf record --off-cpu: Add --off-cpu-thresh option 2025-05-05 21:51:54 -03:00
ordered-events.c perf ordered-events: Event processing consistency with the regular reader 2026-04-02 19:35:16 -07:00
ordered-events.h
parse-branch-options.c perf tools: Add branch counter knob 2023-11-09 13:47:50 -03:00
parse-branch-options.h
parse-events.c perf tools: Add --pmu-filter option for filtering PMUs 2026-03-27 13:58:01 -07:00
parse-events.h perf tools: Add support for perf_event_attr::config4 2025-11-24 12:20:06 -08:00
parse-events.l perf tools: Add support for perf_event_attr::config4 2025-11-24 12:20:06 -08:00
parse-events.y perf parse-events: Remove hard coded legacy hardware and cache parsing 2025-10-15 23:59:11 +09:00
parse-regs-options.c perf regs: Remove __weak attributive arch__xxx_reg_mask() functions 2026-02-06 12:16:09 -03:00
parse-regs-options.h
parse-sublevel-options.c
parse-sublevel-options.h
path.c perf path: Remove unused is_executable_file() 2024-12-23 13:53:08 -03:00
path.h perf path: Remove unused is_executable_file() 2024-12-23 13:53:08 -03:00
perf_api_probe.c perf perf_api_probe: Avoid scanning all PMUs, try software PMU first 2025-10-15 23:59:10 +09:00
perf_api_probe.h
perf_event_attr_fprintf.c perf tools: Minimal DEFERRED_CALLCHAIN support 2025-12-02 16:13:32 -08:00
perf_regs.c perf record: Add support for arch_sdt_arg_parse_op() on s390 2026-03-26 14:38:54 -07:00
perf_regs.h perf record: Add support for arch_sdt_arg_parse_op() on s390 2026-03-26 14:38:54 -07:00
perf-hooks-list.h
perf-hooks.c
perf-hooks.h
PERF-VERSION-GEN perf tools: Don't include signature in version strings 2023-01-02 12:34:06 -03:00
pfm.c perf auxtrace: Remove errno.h from auxtrace.h and fix transitive dependencies 2025-11-13 23:03:11 -08:00
pfm.h
pmu.c perf tools changes for v7.0: 2026-02-21 10:51:08 -08:00
pmu.h perf evlist: Reduce affinity use and move into iterator, fix no affinity 2026-02-10 09:34:44 -03:00
pmu.l perf pmu: Make parser reentrant 2023-04-06 21:40:28 -03:00
pmu.y perf pmu: Add YYDEBUG 2023-09-12 17:47:00 -03:00
pmus.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
pmus.h perf pmus: Factor perf_pmus__find_by_attr out of evsel__find_pmu 2025-07-24 13:41:35 -07:00
powerpc-vpadtl.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
powerpc-vpadtl.h perf powerpc: Process auxtrace events and display in 'perf report -D' 2025-10-01 11:22:04 -03:00
print_binary.c
print_binary.h
print_insn.c perf capstone: Move capstone functionality into its own file 2025-10-02 15:36:59 -03:00
print_insn.h perf annotate: Use capstone_init and remove open_capstone_handle from disasm.c 2024-07-31 16:12:59 -03:00
print-events.c perf list: Don't write to const memory 2026-01-21 11:01:22 -03:00
print-events.h perf print-events: Remove print_symbol_events 2025-10-15 23:59:11 +09:00
probe-event.c perf tools: Replace basename() calls with perf_basename() 2026-04-08 19:21:05 -07:00
probe-event.h perf probe: Replace unacceptable characters when generating event name 2024-12-10 15:41:10 -03:00
probe-file.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
probe-file.h perf: Remove unused del_perf_probe_events() 2024-11-16 17:07:31 -03:00
probe-finder.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
probe-finder.h perf probe: Pick the correct dwarf die while adding probe points 2025-02-26 14:25:14 -08:00
pstack.c perf util: Remove unused pstack__pop 2025-03-10 11:31:24 -07:00
pstack.h perf util: Remove unused pstack__pop 2025-03-10 11:31:24 -07:00
python.c perf python: Correct copying of metric_leader in an evsel 2025-12-02 16:12:49 -08:00
rblist.c
rblist.h
record.c perf cpumap: Clean up use of perf_cpu_map__has_any_cpu_or_is_empty 2024-03-21 10:41:28 -03:00
record.h perf record: Split --data-mmap option 2025-12-17 09:30:37 -03:00
rlimit.c perf evsel: Rename evsel__increase_rlimit to rlimit__increase_nofile 2023-10-25 10:02:11 -07:00
rlimit.h perf evsel: Rename evsel__increase_rlimit to rlimit__increase_nofile 2023-10-25 10:02:11 -07:00
rwsem.c perf rwsem: Add clang's -Wthread-safety annotations 2025-05-21 15:07:13 -03:00
rwsem.h perf rwsem: Add clang's -Wthread-safety annotations 2025-05-21 15:07:13 -03:00
s390-cpumcf-kernel.h perf report: Add s390 raw data interpretation for PAI counters 2023-11-15 12:51:53 -05:00
s390-cpumsf-kernel.h
s390-cpumsf.c perf evlist: Change env variable to session 2025-07-25 10:37:56 -07:00
s390-cpumsf.h
s390-sample-raw.c perf tools: Cache counter names for raw samples on s390 2025-10-31 12:46:19 -07:00
sample-raw.c perf evlist: Change env variable to session 2025-07-25 10:37:56 -07:00
sample-raw.h perf evlist: Change env variable to session 2025-07-25 10:37:56 -07:00
sample.c perf sample: Add evsel to struct perf_sample 2026-04-05 23:12:15 -07:00
sample.h perf sample: Fix documentation typo 2026-04-12 12:12:11 -07:00
session.c perf data: Clean up use_stdio and structures 2026-04-08 19:21:17 -07:00
session.h perf session: Add e_flags to the e_machine helper 2026-02-03 18:01:27 -03:00
setns.c
setup.py perf build python: Don't leave a.out file when building with clang 2025-10-13 01:58:51 -07:00
sharded_mutex.c perf sharded_mutex: Introduce sharded_mutex 2023-06-20 17:03:43 -07:00
sharded_mutex.h perf sharded_mutex: Introduce sharded_mutex 2023-06-20 17:03:43 -07:00
sideband_evlist.c
smt.c perf expr: Make the online topology accessible globally 2023-02-19 08:03:12 -03:00
smt.h perf expr: Make the online topology accessible globally 2023-02-19 08:03:12 -03:00
sort.c perf sort: Sort disabled and full predicated flags 2026-04-10 09:52:06 -07:00
sort.h perf report: Add comm_nodigit sort key 2026-03-26 15:22:18 -07:00
spark.c perf spark: Fix includes and add SPDX 2025-07-11 12:36:40 -07:00
spark.h perf spark: Fix includes and add SPDX 2025-07-11 12:36:40 -07:00
srccode.c perf fncache: Switch to using hashmap 2025-05-13 16:36:22 -03:00
srccode.h
srcline.c perf tools: Replace basename() calls with perf_basename() 2026-04-08 19:21:05 -07:00
srcline.h perf srcline: Add configuration support for the addr2line style 2026-01-13 16:09:14 -03:00
stat-display.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
stat-shadow.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
stat.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
stat.h perf stat: Ensure metrics are displayed even with failed events 2026-02-06 18:18:32 -03:00
strbuf.c
strbuf.h
stream.c perf stream: Use evsel rather than evsel->idx 2024-12-23 13:53:08 -03:00
stream.h perf stream: Use evsel rather than evsel->idx 2024-12-23 13:53:08 -03:00
strfilter.c tools: Rename __fallthrough to fallthrough 2023-04-06 21:41:00 -03:00
strfilter.h
string.c perf string: Avoid undefined NULL+1 2024-12-12 15:53:36 -03:00
string2.h perf string: Add strpbrk_esq() and strdup_esq() for escape and quote 2024-11-14 16:56:32 -03:00
strlist.c perf strlist: Remove dont_dupstr logic, used only once 2026-01-27 21:19:24 -03:00
strlist.h perf strlist: Remove dont_dupstr logic, used only once 2026-01-27 21:19:24 -03:00
svghelper.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
svghelper.h
symbol_conf.h perf addr2line: Remove global variable addr2line_timeout_ms 2026-04-08 10:28:49 -07:00
symbol_fprintf.c perf dso: Add reference count checking and accessor functions 2024-05-06 15:28:49 -03:00
symbol-elf.c perf tools: Fix module symbol resolution for non-zero .text sh_addr 2026-04-02 12:51:10 -07:00
symbol-minimal.c perf symbol: Fix ENOENT case for filename__read_build_id 2025-12-17 07:30:51 -08:00
symbol.c perf symbols: Make variable receiving result strrchr() const 2026-04-08 19:21:04 -07:00
symbol.h perf tools: Replace basename() calls with perf_basename() 2026-04-08 19:21:05 -07:00
symsrc.h perf symbols: Allow for static executables with .plt 2023-02-01 21:51:51 -03:00
synthetic-events.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
synthetic-events.h perf sched stats: Add record and rawdump support 2026-01-22 12:29:28 -03:00
syscalltbl.c perf syscalltbl: Mask off ABI type for MIPS system calls 2025-03-20 22:58:23 -07:00
syscalltbl.h perf syscalltbl: Remove struct syscalltbl 2025-03-20 22:57:57 -07:00
target.c perf target: Remove uid from target 2025-06-09 11:18:18 -07:00
target.h perf target: Constify simple check functions 2026-03-19 14:42:46 -07:00
term.c
term.h
thread_map.c perf strlist: Remove dont_dupstr logic, used only once 2026-01-27 21:19:24 -03:00
thread_map.h perf thread_map: Remove uid options 2025-06-09 11:18:18 -07:00
thread-stack.c perf thread-stack: Switch thread_stack__init() to use e_machine 2026-01-27 01:35:47 -03:00
thread-stack.h
thread.c perf thread: Don't require machine to compute the e_machine 2026-02-03 18:01:27 -03:00
thread.h perf thread: Add optional e_flags output argument to thread__e_machine 2026-01-26 18:21:20 -03:00
threads.c perf tools: Remove unnecessary parentheses 2024-10-14 12:04:31 -07:00
threads.h perf threads: Reduce table size from 256 to 8 2024-03-03 22:52:13 -08:00
time-utils.c perf time-utils: Constify variables storing the result of strchr() on const tables 2026-01-27 02:31:29 -03:00
time-utils.h
tool_pmu.c Revert "perf tool_pmu: More accurately set the cpus for tool events" 2026-02-10 09:32:34 -03:00
tool_pmu.h Revert "perf tool_pmu: More accurately set the cpus for tool events" 2026-02-10 09:32:34 -03:00
tool.c perf sched stats: Add record and rawdump support 2026-01-22 12:29:28 -03:00
tool.h perf sched stats: Add record and rawdump support 2026-01-22 12:29:28 -03:00
top.c perf top: Switch user option to use BPF filter 2025-06-09 11:18:18 -07:00
top.h perf top: Switch user option to use BPF filter 2025-06-09 11:18:18 -07:00
topdown.c perf stat: Implement --topdown using json metrics 2023-02-19 08:07:24 -03:00
topdown.h perf stat: Implement --topdown using json metrics 2023-02-19 08:07:24 -03:00
tp_pmu.c perf tp_pmu: Address const-correctness errors in recent glibcs 2026-01-27 02:22:00 -03:00
tp_pmu.h perf tp_pmu: Add event APIs 2025-07-26 16:31:43 -07:00
trace_augment.h perf trace: Split BPF skel code to util/bpf_trace_augment.c 2025-06-26 10:31:05 -07:00
trace-event-info.c perf trace-event: Constify variables storing the result of strchr() on const tables 2026-01-27 02:26:48 -03:00
trace-event-parse.c perf trace-event: Constify print arguments 2024-12-09 17:52:42 -03:00
trace-event-read.c perf build: Include libtraceevent headers directly indicated by pkg-config 2024-11-08 22:42:57 -08:00
trace-event-scripting.c perf script: Fix script_fetch_insn for more than just x86 2026-01-27 01:35:22 -03:00
trace-event.c perf build: Include libtraceevent headers directly indicated by pkg-config 2024-11-08 22:42:57 -08:00
trace-event.h perf script: Fix script_fetch_insn for more than just x86 2026-01-27 01:35:22 -03:00
trace.h perf trace: Add --max-summary option 2025-09-19 12:14:29 -03:00
tracepoint.c perf tracepoint: Don't scan all tracepoints to test if one exists 2024-05-09 18:46:43 -03:00
tracepoint.h perf tracepoint: Don't scan all tracepoints to test if one exists 2024-05-09 18:46:43 -03:00
trigger.h
tsc.c perf tools: Fix typos Muliplier -> Multiplier 2024-11-13 16:27:35 -03:00
tsc.h perf tool_pmu: Move expr literals to tool_pmu 2024-10-10 23:40:32 -07:00
units.c perf units: Constify variables storing the result of strchr() on const tables 2026-01-27 02:28:33 -03:00
units.h
unwind-libdw.c perf unwind-libdw: Wire up e_flags for CSKY 2026-01-26 18:31:27 -03:00
unwind-libdw.h perf unwind-libdw: Wire up e_flags for CSKY 2026-01-26 18:31:27 -03:00
unwind-libunwind-local.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
unwind-libunwind.c perf dso: Add reference count checking and accessor functions 2024-05-06 15:28:49 -03:00
unwind.h perf unwind: Use perf_arch_reg_{ip|sp}() to substitute macros 2023-08-16 08:48:06 -03:00
usage.c perf usage: Move usage strings 2023-04-10 19:20:53 -03:00
util.c perf tools: Replace basename() calls with perf_basename() 2026-04-08 19:21:05 -07:00
util.h perf tools: Replace basename() calls with perf_basename() 2026-04-08 19:21:05 -07:00
values.c perf tools: Use calloc() where applicable 2026-04-08 19:21:05 -07:00
values.h perf values: Use evsel rather than evsel->idx 2024-12-23 13:53:08 -03:00
vdso.c perf vdso: Missed put on 32-bit dsos 2024-09-27 15:38:52 -03:00
vdso.h
zlib.c perf util: Fix compression checks returning -1 as bool 2025-09-12 15:41:57 -03:00
zstd.c perf mmap: Lazily initialize zstd streams to save memory when not using it 2023-11-28 14:25:06 -03:00