From 3752a970efbde961ae0182327d56216d49251f74 Mon Sep 17 00:00:00 2001 From: Patrick Lipka Date: Fri, 8 Aug 2025 11:58:03 +0200 Subject: [PATCH] Add modified cygnus hooks --- src/rvprof_hooks.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/rvprof_hooks.c diff --git a/src/rvprof_hooks.c b/src/rvprof_hooks.c new file mode 100644 index 0000000..6aa7268 --- /dev/null +++ b/src/rvprof_hooks.c @@ -0,0 +1,28 @@ +#include "rvprof_internal.h" + +// Here, we override cygnus function hooks to insert our own profiling logic for all +// code parts compiled using -finstrument functions. + +void __cyg_profile_func_enter(void *this_fn, void *call_site){ + + if (!g_rvprof.config.enable_hooks) return; + + const char* func_name = rvprof_symbols_lookup(this_fn); + rvprof_region_begin(func_name); + + +} + +void __cyg_profile_func_exit(void *this_fn, void *call_site){ + if (!g_rvprof.config.enable_hooks || !g_rvprof.initialized || g_rvprof.stack_ptr < 0) return; + + const char* func_name = rvprof_symbols_lookup(this_fn); + rvprof_region_end(func_name); + + // auto-finalize on main function exit + if (rvprof_utils_is_main_function(func_name)) { + fprintf(stderr, "RVProf: Auto-finalizing on main() exit\n"); + rvprof_finalize(); + } +} +