|
|
|
# TODO: make this script run on mac and windows
|
|
|
|
|
|
|
|
# Check that the program works as expected without garble.
|
|
|
|
exec go build main.go
|
|
|
|
exec ./main
|
|
|
|
cmp stderr main.stderr
|
|
|
|
grep $WORK main
|
|
|
|
|
|
|
|
# The default build includes DWARF and the symbol table.
|
|
|
|
exec readelf --section-headers main
|
|
|
|
stdout 'debug_info'
|
|
|
|
stdout '\.symtab'
|
|
|
|
|
|
|
|
# The default build includes full non-trimmed paths.
|
|
|
|
grep $WORK main
|
|
|
|
|
|
|
|
# Check that we fail if the user forgot -trimpath.
|
|
|
|
! exec go build -a -toolexec=garble main.go
|
|
|
|
stderr 'should be used alongside -trimpath'
|
|
|
|
|
|
|
|
# Check that the simplest use of garble works.
|
|
|
|
exec go build -a -trimpath -toolexec=garble main.go
|
|
|
|
exec ./main
|
|
|
|
cmp stderr main.stderr
|
|
|
|
|
|
|
|
exec readelf --section-headers main
|
|
|
|
! stdout 'debug_info'
|
|
|
|
! stdout '\.symtab'
|
|
|
|
|
|
|
|
! grep $WORK main
|
|
|
|
! grep 'globalVar' main
|
|
|
|
! grep 'globalFunc' main
|
|
|
|
|
|
|
|
# Finally, check that the 'garble build' shortcut works.
|
|
|
|
# cp main main_old
|
|
|
|
garble build main.go
|
|
|
|
! grep 'globalVar' main
|
|
|
|
# cmp main main_old
|
|
|
|
|
|
|
|
-- main.go --
|
|
|
|
package main
|
|
|
|
|
|
|
|
var globalVar = "global value"
|
|
|
|
|
|
|
|
func globalFunc() { println("global func body") }
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
println(globalVar)
|
|
|
|
globalFunc()
|
|
|
|
}
|
|
|
|
-- main.stderr --
|
|
|
|
global value
|
|
|
|
global func body
|