const tracebackCrash … const tracebackAll … const tracebackShift … var traceback_cache … var traceback_env … // gotraceback returns the current traceback settings. // // If level is 0, suppress all tracebacks. // If level is 1, show tracebacks, but exclude runtime frames. // If level is 2, show tracebacks including runtime frames. // If all is set, print all goroutine stacks. Otherwise, print just the current goroutine. // If crash is set, crash (core dump, etc) after tracebacking. // //go:nosplit func gotraceback() (level int32, all, crash bool) { … } var argc … var argv … // nosplit for use in linux startup sysargs. // //go:nosplit func argv_index(argv **byte, i int32) *byte { … } func args(c int32, v **byte) { … } func goargs() { … } func goenvs_unix() { … } func environ() []string { … } var ( test_z64 … test_x64 … ) func testAtomic64() { … } func check() { … } type dbgVar … var debug … var dbgvars … func parsedebugvars() { … } // reparsedebugvars reparses the runtime's debug variables // because the environment variable has been changed to env. func reparsedebugvars(env string) { … } // parsegodebug parses the godebug string, updating variables listed in dbgvars. // If seen == nil, this is startup time and we process the string left to right // overwriting older settings with newer ones. // If seen != nil, $GODEBUG has changed and we are doing an // incremental update. To avoid flapping in the case where a value is // set multiple times (perhaps in the default and the environment, // or perhaps twice in the environment), we process the string right-to-left // and only change values not already seen. After doing this for both // the environment and the default settings, the caller must also call // cleargodebug(seen) to reset any now-unset values back to their defaults. func parsegodebug(godebug string, seen map[string]bool) { … } //go:linkname setTraceback runtime/debug.SetTraceback func setTraceback(level string) { … } // Poor mans 64-bit division. // This is a very special function, do not use it if you are not sure what you are doing. // int64 division is lowered into _divv() call on 386, which does not fit into nosplit functions. // Handles overflow in a time-specific manner. // This keeps us within no-split stack limits on 32-bit processors. // //go:nosplit func timediv(v int64, div int32, rem *int32) int32 { … } //go:nosplit func acquirem() *m { … } //go:nosplit func releasem(mp *m) { … } // reflect_typelinks is meant for package reflect, // but widely used packages access it using linkname. // Notable members of the hall of shame include: // - gitee.com/quant1x/gox // - github.com/goccy/json // - github.com/modern-go/reflect2 // - github.com/vmware/govmomi // - github.com/pinpoint-apm/pinpoint-go-agent // - github.com/timandy/routine // - github.com/v2pro/plz // // Do not remove or change the type signature. // See go.dev/issue/67401. // //go:linkname reflect_typelinks reflect.typelinks func reflect_typelinks() ([]unsafe.Pointer, [][]int32) { … } // reflect_resolveNameOff resolves a name offset from a base pointer. // // reflect_resolveNameOff is for package reflect, // but widely used packages access it using linkname. // Notable members of the hall of shame include: // - github.com/agiledragon/gomonkey/v2 // // Do not remove or change the type signature. // See go.dev/issue/67401. // //go:linkname reflect_resolveNameOff reflect.resolveNameOff func reflect_resolveNameOff(ptrInModule unsafe.Pointer, off int32) unsafe.Pointer { … } // reflect_resolveTypeOff resolves an *rtype offset from a base type. // // reflect_resolveTypeOff is meant for package reflect, // but widely used packages access it using linkname. // Notable members of the hall of shame include: // - gitee.com/quant1x/gox // - github.com/modern-go/reflect2 // - github.com/v2pro/plz // - github.com/timandy/routine // // Do not remove or change the type signature. // See go.dev/issue/67401. // //go:linkname reflect_resolveTypeOff reflect.resolveTypeOff func reflect_resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer { … } // reflect_resolveTextOff resolves a function pointer offset from a base type. // // reflect_resolveTextOff is for package reflect, // but widely used packages access it using linkname. // Notable members of the hall of shame include: // - github.com/agiledragon/gomonkey/v2 // // Do not remove or change the type signature. // See go.dev/issue/67401. // //go:linkname reflect_resolveTextOff reflect.resolveTextOff func reflect_resolveTextOff(rtype unsafe.Pointer, off int32) unsafe.Pointer { … } // reflectlite_resolveNameOff resolves a name offset from a base pointer. // //go:linkname reflectlite_resolveNameOff internal/reflectlite.resolveNameOff func reflectlite_resolveNameOff(ptrInModule unsafe.Pointer, off int32) unsafe.Pointer { … } // reflectlite_resolveTypeOff resolves an *rtype offset from a base type. // //go:linkname reflectlite_resolveTypeOff internal/reflectlite.resolveTypeOff func reflectlite_resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer { … } // reflect_addReflectOff adds a pointer to the reflection offset lookup map. // //go:linkname reflect_addReflectOff reflect.addReflectOff func reflect_addReflectOff(ptr unsafe.Pointer) int32 { … } //go:linkname fips_getIndicator crypto/internal/fips.getIndicator func fips_getIndicator() uint8 { … } //go:linkname fips_setIndicator crypto/internal/fips.setIndicator func fips_setIndicator(indicator uint8) { … }