mirror of
https://github.com/burrowers/garble.git
synced 2025-12-24 12:58:05 +08:00
We can drop the code that kicked in when GOGARBLE was empty. We can also add the value in addGarbleToHash unconditionally, as we never allow it to be empty. In the tests, remove all GOGARBLE lines where it just meant "obfuscate everything" or "obfuscate the entire main module". cgo.txtar had "obfuscate everything" as a separate step, so remove it entirely. linkname.txtar started failing because the imported package did not import strings, so listPackage errored out. This wasn't a problem when strings itself wasn't obfuscated, as transformLinkname silently left strings.IndexByte untouched. It is a problem when IndexByte does get obfuscated. Make that kind of listPackage error visible, and fix it. reflect.txtar started failing with "unreachable method" runtime throws. It's not clear to me why; it appears that GOGARBLE=* makes the linker think that ExportedMethodName is suddenly unreachable. Work around the problem by making the method explicitly reachable, and leave a TODO as a reminder to investigate. Finally, gogarble.txtar no longer needs to test for GOPRIVATE. The rest of the test is left the same, as we still want the various values for GOGARBLE to continue to work just like before. Fixes #594.
47 lines
1.2 KiB
Plaintext
47 lines
1.2 KiB
Plaintext
garble -debugdir ./debug1 build
|
|
exists 'debug1/test/main/imported/imported.go' 'debug1/test/main/main.go' 'debug1/reflect/type.go'
|
|
exists 'debug1/runtime/map.go' 'debug1/runtime/funcdata.h' 'debug1/runtime/asm.s'
|
|
[amd64] exists 'debug1/runtime/cpuflags_amd64.go' 'debug1/runtime/asm_amd64.s'
|
|
[!amd64] ! exists 'debug1/runtime/cpuflags_amd64.go' 'debug1/runtime/asm_amd64.s'
|
|
! grep ImportedFunc $WORK/debug1/test/main/imported/imported.go
|
|
! grep ImportedFunc $WORK/debug1/test/main/main.go
|
|
! grep 'some comment' $WORK/debug1/test/main/main.go
|
|
|
|
[short] stop
|
|
|
|
# Sources from previous builds should be deleted
|
|
cp $WORK/debug1/test/main/main.go $WORK/debug1/some_file_from_prev_build.go
|
|
|
|
garble -debugdir ./debug1 build -v
|
|
stderr 'test/main' # we force rebuilds with -debugdir
|
|
! exists $WORK/debug1/some_file_from_prev_build.go
|
|
-- go.mod --
|
|
module test/main
|
|
|
|
go 1.19
|
|
-- main.go --
|
|
package main
|
|
|
|
import (
|
|
"reflect"
|
|
|
|
"test/main/imported" // some comment
|
|
)
|
|
|
|
type someType int // some comment
|
|
var someVar = 0
|
|
|
|
type someStruct struct {
|
|
someField int // some comment
|
|
}
|
|
|
|
func main() {
|
|
imported.ImportedFunc()
|
|
reflect.TypeOf(123)
|
|
}
|
|
|
|
-- imported/imported.go --
|
|
package imported
|
|
|
|
func ImportedFunc() {}
|