Hacker News new | ask | show | jobs
by Julio-Guerra 2209 days ago
Something to note here is that everything is known and done statically in the source code. This could be addressed through metaprogramming if only the Go language had some ^^

We have similar needs at Sqreen but for security monitoring and protection reasons: we need to dynamically instrument functions at run time, while not asking any code modification to our users. To do so, we instead leverage the Go compiler to perform compile-time instrumentation that inserts hooks anywhere interesting. You can read more about this approach at https://blog.sqreen.com/dynamic-instrumentation-go/

1 comments

I have read this article before and I really like the idea of doing so. I would love to read more about how you guys modified the compiler!
We haven't modified the compiler but instead plugged into it an external instrumentation tool using the compiler option `-toolexec`.

With this option, the compiler invokes every toolchain binary (compile, asm, link, etc.) through the provided program. So you can basically write a proxy program intercepting calls to `compile` to do source-code instrumentation, exactly like you would with go generate, but now automatically done during compilation on every package.

Ah, cool! Thank you so much, didn't know about this parameter :D Will try it definitely.