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
Daniel Martí 96b15e0ac5 support GOGARBLE=* with -literals again
We recently made an important change when obfuscating the runtime,
so that if it's missing any linkname packages in ListedPackages,
it does an extra "go list" call to obtain their information.

This works very well, but we missed an edge case.
In main.go, we disable flagLiterals for the runtime package,
but not for other packages like sync/atomic.

And, since the runtime's extra "go list" has to compute GarbleActionIDs,
it uses the list of garble flags via appendFlags.
Unfortunately, it thinks "-literals" isn't set, when it is,
and the other packages see it as being set.

This discrepancy results in link time errors,
as each end of the linkname obfuscates with a different hash:

	> garble -literals build
	[stderr]
	# test/main
	jccGkbFG.(*yijmzGHo).String: relocation target jccGkbFG.e_77sflf not defined
	jQg9GEkg.(*NLxfRPAP).pB5p2ZP0: relocation target jQg9GEkg.ce66Fmzl not defined
	jQg9GEkg.(*NLxfRPAP).pB5p2ZP0: relocation target jQg9GEkg.e5kPa1qY not defined
	jQg9GEkg.(*NLxfRPAP).pB5p2ZP0: relocation target jQg9GEkg.aQ_3sL3Q not defined
	jQg9GEkg.(*NLxfRPAP).pB5p2ZP0: relocation target jQg9GEkg.zls3wmws not defined
	jQg9GEkg.(*NLxfRPAP).pB5p2ZP0: relocation target jQg9GEkg.g69WgKIS not defined

To fix the problem, treat flagLiterals as read-only after flag.Parse,
just like we already do with the other flags except flagDebugDir.
The code that turned flagLiterals to false is no longer needed,
as literals.Obfuscate is only called when ToObfuscate is true,
and ToObfuscate is false for runtimeAndDeps already.
4 years ago
..
asm.txt CI: test on GOARCH=386 4 years ago
basic.txt fix binsubstr calls to not prepare for a regexp 4 years ago
cgo.txt CI: test on GOARCH=386 4 years ago
crossbuild.txt only list missing packages when obfuscating the runtime 4 years ago
debugdir.txt avoid build ID mismatches when using -debugdir 4 years ago
embed.txt deprecate using GOPRIVATE in favor of GOGARBLE (#427) 4 years ago
gogarble.txt only list missing packages when obfuscating the runtime 4 years ago
goversion.txt drop support for Go 1.16.x 4 years ago
help.txt give a useful error for "garble build -tiny" 4 years ago
implement.txt deprecate using GOPRIVATE in favor of GOGARBLE (#427) 4 years ago
imports.txt handle --long build flags properly 4 years ago
init.txt drop support for Go 1.16.x 4 years ago
ldflags.txt deprecate using GOPRIVATE in favor of GOGARBLE (#427) 4 years ago
linkname.txt deprecate using GOPRIVATE in favor of GOGARBLE (#427) 4 years ago
literals.txt support GOGARBLE=* with -literals again 4 years ago
modinfo.txt testdata: adjust for newer Go 1.18 tip version 4 years ago
plugin.txt deprecate using GOPRIVATE in favor of GOGARBLE (#427) 4 years ago
position.txt deprecate using GOPRIVATE in favor of GOGARBLE (#427) 4 years ago
reflect.txt deprecate using GOPRIVATE in favor of GOGARBLE (#427) 4 years ago
reverse.txt testdata: make pointer regexp less prone to flakes 4 years ago
seed.txt deprecate using GOPRIVATE in favor of GOGARBLE (#427) 4 years ago
syntax.txt testdata: ensure go:noinline works via runtime.Callers 4 years ago
test.txt drop support for Go 1.16.x 4 years ago
tiny.txt deprecate using GOPRIVATE in favor of GOGARBLE (#427) 4 years ago