You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
garble/testdata/scripts/linkname.txt

72 lines
1.3 KiB
Plaintext

env GOPRIVATE=test/main
garble build
exec ./main
cmp stderr main.stderr
! binsubstr main$exe 'garbledFunc' 'GarbledFunc'
[short] stop # no need to verify this with -short
go build
exec ./main
cmp stderr main.stderr
-- go.mod --
module test/main
go 1.15
-- main.go --
package main
import (
_ "os/exec"
_ "strings"
_ "unsafe"
_ "test/main/imported"
)
// A linkname to an external non-garbled func.
//go:linkname byteIndex strings.IndexByte
func byteIndex(s string, c byte) int
// A linkname to an external non-garbled non-exported func.
//go:linkname interfaceEqual os/exec.interfaceEqual
func interfaceEqual(a, b interface{}) bool
// A linkname to an external garbled func.
//go:linkname garbledFunc test/main/imported.GarbledFuncImpl
func garbledFunc() string
// A linkname to an entirely made up name, implemented elsewhere.
//go:linkname renamedFunc madeup.newName
func renamedFunc() string
func main() {
println(byteIndex("01234", '3'))
println(interfaceEqual("Sephiroth", 7))
println(garbledFunc())
println(renamedFunc())
}
-- imported/imported.go --
package imported
import (
_ "unsafe"
)
func GarbledFuncImpl() string {
return "garbled func"
}
//go:linkname renamedFunc madeup.newName
func renamedFunc() string {
return "renamed func"
}
-- main.stderr --
3
false
garbled func
renamed func