C++ Logo

std-proposals

Advanced search

Re: [std-proposals] Interceptor Function (preserve stack and all registers)

From: Frederick Virchanza Gotham <cauldwell.thomas_at_[hidden]>
Date: Mon, 29 Jul 2024 18:49:20 +0100
On Monday, July 29, 2024, Sebastian Wittmeier wrote:

> I think Thiago was referring to storing thread-local variables for
> reentrant intercepted function calls.
>


Pick a max recursion depth, let's say:

    #define MAX_RECURSION (16u)

and then we have:

    thread_local unsigned current_depth = 0u;

    thread_local void *addresses[ MAX_RECURSION ];

No linked list and no dynamic allocation.

I'm typing this out on my phone right now and I don't have a compiler, and
GodBolt is too big for my phone screen, but when I'm home later I'll show
an implementation of an interceptor of a recursive function.

(Although in most cases, once you call the original function in the
library, any subsequent recursive calls will directly call the original
function, thus bypassing the interceptor -- however this won't necessarily
happen in the case of a GUI loop, e.g. how wxWidgets starts a second
message loop when you show a modal message box).

Received on 2024-07-29 17:49:23