On Wed, Aug 5, 2020 at 8:02 PM Yosef Yo <[email protected]> wrote:
> In go/src/runtime/os/linux.go, function futexsleep is defined as to call > futex function of linux. runtime. futex is implemented in syscall assembly > instruction. I am currently dynamically loading a golang c-shared library > as a plugin, and I wanted to intercept the futex syscall and use my own > implementation. Can anyone give me a hint on how to intercept runtime > functions? OR is it even possible? What you want to do isn't possible without resorting to "monkey patching" (see https://en.wikipedia.org/wiki/Monkey_patch) since the wrapper you want to intercept is part of the runtime support code that is statically linked into the binary. At least not in any practical manner. The impractical solutions involve mechanisms such as the platform (not Go) "ptrace" API. The only practical solution is to create your own custom Go compiler that incorporates your modification to the use of the futex syscall. On the other hand your question is unclear, even puzzling, because the use of a dynamically loaded shared library, written in C, doesn't depend on the Go runtime use of the futex API. At least not directly. That dynamically loaded code won't be using the futex code in the Go runtime. -- Kurtis Rader Caretaker of the exceptional canines Junior and Hank -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CABx2%3DD9fb9ikSKmc9JD5hhm3x9goDyfNu10h9ViaUfm_omqVgQ%40mail.gmail.com.
