I encountered an issue when trying to use pragma *//go:cgo_export_static *in my Go code similar to the *ASAN* code. https://github.com/golang/go/blob/f0d1195e13e06acdf8999188decc63306f9903f5/src/runtime/asan.go#L65 It seems there is a check in the compile utility preventing this. https://github.com/golang/go/blob/f0d1195e13e06acdf8999188decc63306f9903f5/src/cmd/compile/internal/noder/noder.go#L301
As a workaround, I'm using the *-gcflags="-std"* flag, but I'm unsure if this is a viable option. How can I correctly import C symbols in Go code for static linking without using* //go:cgo_import_dynamic*? понедельник, 4 марта 2024 г. в 21:00:11 UTC+3, Ian Lance Taylor: > On Mon, Mar 4, 2024 at 9:55 AM Evgeny Chormonov <en.cho...@gmail.com> > wrote: > > > > I'm using Linux as my platform, but I'm curious why this solution is > restricted to Linux systems only? > > https://github.com/golang/go/blob/master/src/runtime/asan/asan.go#L5 > > That's just the list of systems for which we support asan. Offhand I > don't know what other systems the asan library supports. I don't > think there is any obstacle to porting Go's asan support to other > systems that the asan library supports, though of course some such > ports would require new Go assembly code. > > Ian > > > > понедельник, 4 марта 2024 г. в 00:43:09 UTC+3, Ian Lance Taylor: > >> > >> On Sun, Mar 3, 2024 at 1:25 PM Evgeny Chormonov <en.cho...@gmail.com> > wrote: > >> > > >> > I noticed that ASAN checker in the Go source code is defined using > CGO https://github.com/golang/go/blob/master/src/runtime/asan/asan.go > >> > But the C ASAN functions are called from the Go runtime using > assembly code instead of a common CGO call. > https://github.com/golang/go/blob/master/src/runtime/asan_amd64.s#L36 > >> > > >> > This discovery has sparked my interest, and I am curious to know if I > can employ a similar method to execute my own C functions from my Go code. > Could you clarify if this is a viable option? > >> > >> Viable is in the eyes of the beholder. You can use a similar method. > >> But you have to hand-write the assembler code for each C function you > >> want to call. And if the C function ever blocks on, say, network I/O, > >> your entire Go program can hang unexpectedly. We only use this > >> technique for ASAN because we have a very limited number of functions > >> to call, and we know for sure that those functions can never block. > >> > >> Ian > > > > -- > > 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...@googlegroups.com. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/e5dd08b6-2e05-4bf2-9f51-89d2cb55622fn%40googlegroups.com > . > -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/f1ede3e5-059e-4334-ad38-c6628929e596n%40googlegroups.com.