Re: [PATCH v5 12/12] eu-stacktrace [12/12]: use dwflst_perf_sample_getframes

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:52 PM Serhei Makarov wrote: > > Changes for v4: > > - Separate out libdwfl_stacktrace, as requested. > > Changes for v3: > > - Fix initialization of elf in sysprof_init_dwfl > (previously triggered -Wmaybe-uninitialized). > > * * * > > Remove the code from src/stacktrac

Re: [PATCH v5 11/12] libdwfl_stacktrace [11/12]: add dwflst_perf_sample_getframes

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:53 PM Serhei Makarov wrote: > > Changes for v4: > > - Separate out libdwfl_stacktrace, as requested. > > Changes for v3: > > - use const void *stack, not void *, to allow users > to pass a const stack sample > > Changes for v2: > > - use renamed __libdwfl_set_initial_re

Re: [PATCH v5 10/12] eu-stacktrace [10/12]: use dwflst_tracker_find_pid

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:49 PM Serhei Makarov wrote: > > Changes for v4: > > - Separate out libdwfl_stacktrace, as requested. > > * * * > > Initial minimal change to ensure dwflst_tracker_find_pid is > tested. For now, we keep the additional dwfltab implementation in > stacktrace.c, since it's be

Re: [PATCH v5 09/12] libdwfl_stacktrace [9/12]: add dwflst_tracker_find_pid

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:49 PM Serhei Makarov wrote: > > Changes for v4: > > - Separate out libdwfl_stacktrace, as requested. > > Changes for v2: > > - Add locking for dwfltab. > > * * * > > New function that retrieves the Dwfl for a particular PID, or, > if the Dwfl is absent, creates it via a p

Re: [PATCH v5 08/12] libdwfl_stacktrace [8/12]: Dwfl* caching via Dwflst_Process_Tracker

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:52 PM Serhei Makarov wrote: > > Changes for v4: > > - Separate out libdwfl_stacktrace, as requested. > > Changes for v3: > > - Handle dwfl->process == NULL case in __libdwfl_remove_dwfl_from_tracker. > > * * * > > The Dwflst_Process_Tracker also includes a dynamicsizehash

Re: [PATCH v5 07/12] eu-stacktrace [7/12]: use Dwflst_Process_Tracker for Elf * caching

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:50 PM Serhei Makarov wrote: > > Changes for v4: > > - Separate out libdwfl_stacktrace, as requested. > > * * * > > * src/Makefile.am (AM_CPPFLAGS): Include headers from > ../libdwfl_stacktrace. > * src/stacktrace.c (tracker): New global variable. > (sample_callbacks):

Re: [PATCH v5 06/12] libdwfl_stacktrace [6/12]: Elf* caching via dwflst_process_tracker

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:52 PM Serhei Makarov wrote: > > Changes for v5: > > - Bugfixes in dwflst_tracker_find_elf.c. > > Changes for v4: > > - Separate out libdwfl_stacktrace, as requested. > > - dwfl_module_getdwarf.c now uses the dwflst_tracker_cache_elf() > interface instead of editing the

Re: [PATCH v5 05/12] libdwfl_stacktrace [5/12]: introduce Dwflst_Process_Tracker

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:48 PM Serhei Makarov wrote: > > Changes for v4: > > - Separate out libdwfl_stacktrace, as requested. > > * * * > > New data structure to coordinate caching Elf data among multiple Dwfl > structs attached to different processes. Meant to reduce the overhead > for profilers

Re: [PATCH v5 04/12] libdwfl_stacktrace [4/12]: intro library, add dwflst_perf_sample_preferred_regs_mask

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:50 PM Serhei Makarov wrote: > > Changes for v5: > > - Separate ELFUTILS_0.193_EXPERIMENTAL namespace, mark library experimental. > > Changes for v4: > > - Separate out libdwfl_stacktrace, as requested. > > Changes for v2: > > - guard the linux/perf_events.h include proper

Re: [PATCH v5 03/12] libebl [3/12]: eu-stacktrace: use new register handling api

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:48 PM Serhei Makarov wrote: > > Changes for v4: > > - Since __libdwfl_set_initial_registers_thread is now private to > libdwfl, the modified code in this patch has been disabled. > > * * * > > Dummy commit to show how the sample_set_initial_registers callback in > eu-st

Re: [PATCH v5 02/12] libdwfl [2/12]: expose setfunc callback for libdwflP+libebl clients

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:48 PM Serhei Makarov wrote: > > Changes for v2: > > - No longer exposing this in public libdwfl.h api. > > * * * > > Renaming pid_set_initial_registers to > __libdwfl_set_initial_registers_thread and adding to libdwflP.h. > > This callback was private to one file, but now

Re: [PATCH v5 01/12] libebl [1/12]: api for perf register handling, start with x86_64

2025-04-24 Thread Aaron Merey
On Thu, Apr 24, 2025 at 5:49 PM Serhei Makarov wrote: > > Changes for v2: > > - Merged commit 11 into commit 1 (both sample_base_addr/sample_pc and > set_initial_registers_sample make sense to introduce in the same > commit). > > - Added i386 backend and factored out common code. > > * * * > >

[PATCH v5 11/12] libdwfl_stacktrace [11/12]: add dwflst_perf_sample_getframes

2025-04-24 Thread Serhei Makarov
Changes for v4: - Separate out libdwfl_stacktrace, as requested. Changes for v3: - use const void *stack, not void *, to allow users to pass a const stack sample Changes for v2: - use renamed __libdwfl_set_initial_registers_thread - oops, should use provided sample_arg->perf_regs_mask in

Re: [PATCH v5 07/14] libdwfl_stacktrace [6/12]: Elf* caching via dwflst_process_tracker

2025-04-24 Thread Serhei Makarov
On Thu, Apr 24, 2025, at 5:47 PM, Serhei Makarov wrote: > Changes Sorry, this one (with 07/14 in the title) was accidentally mixed in with the v5 submission. It's from a draft copy generated with an earlier git send-email command, please ignore.

[PATCH v5 12/12] eu-stacktrace [12/12]: use dwflst_perf_sample_getframes

2025-04-24 Thread Serhei Makarov
Changes for v4: - Separate out libdwfl_stacktrace, as requested. Changes for v3: - Fix initialization of elf in sysprof_init_dwfl (previously triggered -Wmaybe-uninitialized). * * * Remove the code from src/stacktrace.c that is now covered by libdwfl_stacktrace/dwflst_perf_frame.c and dwflst

[PATCH v5 08/12] libdwfl_stacktrace [8/12]: Dwfl* caching via Dwflst_Process_Tracker

2025-04-24 Thread Serhei Makarov
Changes for v4: - Separate out libdwfl_stacktrace, as requested. Changes for v3: - Handle dwfl->process == NULL case in __libdwfl_remove_dwfl_from_tracker. * * * The Dwflst_Process_Tracker also includes a dynamicsizehash cache which maps process ids to Dwfl * (or rather, dwflst_tracker_dwfl_in

[PATCH v5 06/12] libdwfl_stacktrace [6/12]: Elf* caching via dwflst_process_tracker

2025-04-24 Thread Serhei Makarov
Changes for v5: - Bugfixes in dwflst_tracker_find_elf.c. Changes for v4: - Separate out libdwfl_stacktrace, as requested. - dwfl_module_getdwarf.c now uses the dwflst_tracker_cache_elf() interface instead of editing the elftab directly. Changes for v3: - Reworked elftab to incorporate dev/i

[PATCH v5 04/12] libdwfl_stacktrace [4/12]: intro library, add dwflst_perf_sample_preferred_regs_mask

2025-04-24 Thread Serhei Makarov
Changes for v5: - Separate ELFUTILS_0.193_EXPERIMENTAL namespace, mark library experimental. Changes for v4: - Separate out libdwfl_stacktrace, as requested. Changes for v2: - guard the linux/perf_events.h include properly with an #if defined __linux__ * * * Subsequent patches in the series

[PATCH v5 07/12] eu-stacktrace [7/12]: use Dwflst_Process_Tracker for Elf * caching

2025-04-24 Thread Serhei Makarov
Changes for v4: - Separate out libdwfl_stacktrace, as requested. * * * * src/Makefile.am (AM_CPPFLAGS): Include headers from ../libdwfl_stacktrace. * src/stacktrace.c (tracker): New global variable. (sample_callbacks): Use dwflst_tracker_linux_proc_find_elf for caching. (sysprof_init_dwf

[PATCH v5 09/12] libdwfl_stacktrace [9/12]: add dwflst_tracker_find_pid

2025-04-24 Thread Serhei Makarov
Changes for v4: - Separate out libdwfl_stacktrace, as requested. Changes for v2: - Add locking for dwfltab. * * * New function that retrieves the Dwfl for a particular PID, or, if the Dwfl is absent, creates it via a provided callback and adds it to the table later, when the PID is confirmed v

[PATCH v5 10/12] eu-stacktrace [10/12]: use dwflst_tracker_find_pid

2025-04-24 Thread Serhei Makarov
Changes for v4: - Separate out libdwfl_stacktrace, as requested. * * * Initial minimal change to ensure dwflst_tracker_find_pid is tested. For now, we keep the additional dwfltab implementation in stacktrace.c, since it's being used to track statistics. In future follow-ups, it will be good to

[PATCH v5 07/14] libdwfl_stacktrace [6/12]: Elf* caching via dwflst_process_tracker

2025-04-24 Thread Serhei Makarov
Changes Changes for v4: - Separate out libdwfl_stacktrace, as requested. - dwfl_module_getdwarf.c now uses the dwflst_tracker_cache_elf() interface instead of editing the elftab directly. Changes for v3: - Reworked elftab to incorporate dev/ino into the caching key (to allow caching module

[PATCH v5 05/12] libdwfl_stacktrace [5/12]: introduce Dwflst_Process_Tracker

2025-04-24 Thread Serhei Makarov
Changes for v4: - Separate out libdwfl_stacktrace, as requested. * * * New data structure to coordinate caching Elf data among multiple Dwfl structs attached to different processes. Meant to reduce the overhead for profilers that use elfutils for unwinding. The caching is well-justified, as the

[PATCH v5 02/12] libdwfl [2/12]: expose setfunc callback for libdwflP+libebl clients

2025-04-24 Thread Serhei Makarov
Changes for v2: - No longer exposing this in public libdwfl.h api. * * * Renaming pid_set_initial_registers to __libdwfl_set_initial_registers_thread and adding to libdwflP.h. This callback was private to one file, but now we need to access it from the perf_events sampling code as well. * libd

[PATCH v5 03/12] libebl [3/12]: eu-stacktrace: use new register handling api

2025-04-24 Thread Serhei Makarov
Changes for v4: - Since __libdwfl_set_initial_registers_thread is now private to libdwfl, the modified code in this patch has been disabled. * * * Dummy commit to show how the sample_set_initial_registers callback in eu-stacktrace would use the proper libebl ebl_set_initial_registers_sample fu

[PATCH v5 01/12] libebl [1/12]: api for perf register handling, start with x86_64

2025-04-24 Thread Serhei Makarov
Changes for v2: - Merged commit 11 into commit 1 (both sample_base_addr/sample_pc and set_initial_registers_sample make sense to introduce in the same commit). - Added i386 backend and factored out common code. * * * First patch of a series that reworks eu-stacktrace functionality into a li