// SPDX-License-Identifier: GPL-2.0 #include "perf.h" #include "archinsn.h" #include "util/intel-pt-decoder/insn.h" #include "machine.h" #include "thread.h" #include "symbol.h" void arch_fetch_insn(struct perf_sample *sample, struct thread *thread, struct machine *machine) { struct insn insn; int len; bool is64bit = false; if (!sample->ip) return; len = thread__memcpy(thread, machine, sample->insn, sample->ip, sizeof(sample->insn), &is64bit); if (len <= 0) return; insn_init(&insn, sample->insn, len, is64bit); insn_get_length(&insn); if (insn_complete(&insn) && insn.length <= len) sample->insn_len = insn.length; }