package main import _ "unsafe" // Creates an external global with name extern_global. //go:extern extern_global var externGlobal [0]byte // Creates a //go:align 32 var alignedGlobal [4]uint32 // Test conflicting pragmas (the last one counts). //go:align 64 //go:align 16 var alignedGlobal16 [4]uint32 // Test exported functions. //export extern_func func externFunc() { } // Define a function in a different package using go:linkname. //go:linkname withLinkageName1 somepkg.someFunction1 func withLinkageName1() { } // Import a function from a different package using go:linkname. //go:linkname withLinkageName2 somepkg.someFunction2 func withLinkageName2() // Function has an 'inline hint', similar to the inline keyword in C. //go:inline func inlineFunc() { } // Function should never be inlined, equivalent to GCC // __attribute__((noinline)). //go:noinline func noinlineFunc() { } // This function should have the specified section. //go:section .special_function_section func functionInSection() { } //export exportedFunctionInSection //go:section .special_function_section func exportedFunctionInSection() { } // This function should not: it's only a declaration and not a definition. //go:section .special_function_section func undefinedFunctionNotInSection() //go:section .special_global_section var globalInSection uint32 //go:section .special_global_section //go:extern undefinedGlobalNotInSection var undefinedGlobalNotInSection uint32 //go:align 1024 //go:section .global_section var multipleGlobalPragmas uint32