]> git.ipfire.org Git - thirdparty/elfutils.git/commit
backends/: add aarch64 sample_regs support
authorSerhei Makarov <serhei@serhei.io>
Fri, 6 Mar 2026 17:10:29 +0000 (12:10 -0500)
committerSerhei Makarov <serhei@serhei.io>
Tue, 14 Apr 2026 20:50:51 +0000 (16:50 -0400)
commit07c5f3229bc31c785ea3bb51e241d8a2e1167ccc
tree1b552dcb636ea7bb65d2b13155b87c5ecb81e720
parent9ba5dfd4744308eb41f00b4dace629bd2d172d39
backends/: add aarch64 sample_regs support

Expanding the libdwflst support for handling perf sample_regs register
files to other architectures. First, add the pieces for aarch64.

* backends/Makefile.am (aarch64_SRCS): Add aarch64_initreg_sample.c.
* backends/aarch64_init.c (aarch64_init): Add hooks for
  set_initial_registers_sample, sample_sp_pc, perf_frame_regs_mask.
* backends/aarch64_initreg_sample.c: New file. Implement
  aarch64_set_initial_registers_sample mirroring the ptrace->dwarf_regs
  logic in aarch64_initreg.c.
* backends/libebl_PERF_FLAGS.h (PERF_FRAME_REGISTERS_AARCH64): New
  constant describing registers needed for aarch64 unwinding.
  (generic_sample_sp_pc): New inline function generalizing existing
  x86_sample_sp_pc code to any arch given sp_index and pc_index.
* libebl/eblinitreg_sample.c (ebl_sample_perf_regs_mapping): Update
  with a default implementation for arches where perf_regs and
  dwarf_regs order coincides (we just need the mapping to account for
  present/absent registers in perf_regs mask).
* libebl/eblopenbackend.c (__libebl_init_cached_regs_mapping): New
  function generalizing a bit of ARCH_init regs_mapping boilerplate.
* libebl/eblopenbackend.c (__libebl_init_cached_regs_mapping):
  Implement new function.

Signed-off-by: Serhei Makarov <serhei@serhei.io>
backends/Makefile.am
backends/aarch64_init.c
backends/aarch64_initreg_sample.c [new file with mode: 0644]
backends/libebl_PERF_FLAGS.h
libebl/eblinitreg_sample.c
libebl/eblopenbackend.c
libebl/libeblP.h