Daniel Martí
b10cce34f8
parse boolean flags differently from string flags
...
This is important, because "-std -foo" and "-buildid -foo" are entirely
different cases. The first is equivalent to "-std=true -foo" since the
flag is boolean, but the second is equivalent to "-buildid=-foo" since
the flag isn't boolean.
We can keep track of which of the flags we're interested in are boolean,
which isn't much extra work. Also add unit tests; the build ID is a
hash, so it's very hard to write an end-to-end test that reliably has an
ID starting with a dash.
5 years ago
Daniel Martí
ce0137fa6a
don't break TestMain funcs
...
Important for 'garble test', if a package uses one.
5 years ago
Daniel Martí
5ccf56662a
don't panic with struct pointer anonymous fields
...
While at it, make the "object of type" code shared and more robust.
5 years ago
Daniel Martí
bee30aff41
add initial support for running tests
...
For now, it mainly consists of not garbling Test* funcs, and not
garbling the _testmain.go file that will run them.
Updates #6 .
5 years ago
Daniel Martí
c23f529830
use real package paths when typechecking
...
'go tool compile' receives the package path via the -p flag. This is
better than making up one.
We have to be careful with "-p main" though, as that's not part of the
standard library.
5 years ago
Daniel Martí
b6d889cdcf
start rejecting unknown non-tool commands
5 years ago
Daniel Martí
0cc6e36414
split main1 with a func returning an error
5 years ago
Daniel Martí
5556be7402
make the tool work on Windows, enable tests
...
The tests required a few last tweaks to work on Windows.
5 years ago
Daniel Martí
0058dfc12a
make output binaries deterministic
...
We were leaking temporary file paths, which is no longer the case.
5 years ago
Daniel Martí
ab560ff007
start testing on GitHub Actions
...
No windows yet, because a few portability issues remain.
5 years ago
Daniel Martí
63cbc01628
support anonymous fields better
5 years ago
Daniel Martí
a87002e662
don't break types implementing interfaces
5 years ago
Daniel Martí
3f35fb07f2
remove module info from the resulting binary
5 years ago
Daniel Martí
33f2a4bc2e
remove all unnecessary empty lines from garbled Go
5 years ago
Daniel Martí
aba66758ca
support type switches with symbolic vars
5 years ago
Daniel Martí
766bb47b82
support std imports
5 years ago
Daniel Martí
1fe0351517
garbling imported packages starts being supported
5 years ago
Daniel Martí
764af03e89
introduce 'garble build' shortcut
...
This way, the user doesn't need to remember to use flags like -a and
-trimpath. Also because we might need more 'go build' flags in the
future.
5 years ago
Daniel Martí
f4e356ab13
start hashing identifiers
5 years ago
Daniel Martí
f47c12caba
add a bit more docs
5 years ago
Daniel Martí
a670f80fe9
error if the user forgot -trimpath
5 years ago
Daniel Martí
f81b92a0fa
start enforcing the link flags -w -s
5 years ago
Daniel Martí
f5f72ef626
initial commit
5 years ago