Hi All, I'd like to experiment writing a shared library that will override system functions via LD_LIBRARY_PATH. I'd like to achieve something like the basic functionality demonstrated here <: https://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/> where rand() is overridden.
If I write a simple function to overwrite it (see here <https://play.golang.org/p/PF76cJVO6X>) I get the following error when trying to compile with go build -o rand.so -buildmode=c-shared test.go (Go 1.7.4 - same with 1.8 but a slightly different error): # command-line-arguments In file included from $WORK/command-line-arguments/_obj/_cgo_export.c:3:0: /tmp/go-build613177413/command-line-arguments/_obj/_cgo_export.h:55:14: error: conflicting types for ‘rand’ extern GoInt rand(); ^~~~ In file included from $WORK/command-line-arguments/_obj/_cgo_export.c:2:0: /usr/include/stdlib.h:335:12: note: previous declaration of ‘rand’ was here extern int rand (void) __THROW; ^~~~ /tmp/go-build613177413/command-line-arguments/_obj/_cgo_export.c:17:7: error: conflicting types for ‘rand’ GoInt rand() ^~~~ In file included from $WORK/command-line-arguments/_obj/_cgo_export.c:2:0: /usr/include/stdlib.h:335:12: note: previous declaration of ‘rand’ was here extern int rand (void) __THROW; ^~~~ I'm not clear whether I simply need to find a way to declare an equivalent signature which matches the stdlib, or whether creating a function which is already defined is just not allowed. Can anyone help here? Thanks, Tony -- 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 golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.