Daniel Martí
b8aec97e86
don't garble any embedded fields
...
In the added test case, we'd see a failure, since we garbled the name of
the "Embedded" type but not its use as an anonymous field. Garble both.
This might possibly break some reflect code, but it doesn't seem like we
have an option. When we garble a type, it's impossible to tell if it's
going to be used as an anonymous field later.
Updates #9 .
5 years ago
Daniel Martí
95c59d7f9a
add Go 1.14
5 years ago
Daniel Martí
302cc137b6
test that filenames are garbled
...
We've done this for a while, but we weren't testing it.
Fixes #1 .
5 years ago
Daniel Martí
308e984293
don't use regexes when searching binaries for strings
...
This is a bit simpler, and saves us a small amount of CPU work in the
tests.
5 years ago
Daniel Martí
f135b9fb7a
CI: remove the 'garble test' step
...
It fails on all three GitHub platforms, for some reason. Something
related to permission denied errors in the module cache.
It's unclear to me why we're trying to modify the build cache. For now,
un-break master.
5 years ago
Daniel Martí
4d5ad43f10
allow garble to test itself
...
With this patch, 'go install && garble test' works.
5 years ago
Daniel Martí
1ce5310440
don't garble exported struct fields
...
They might reasonably affect the behavior of the code, such as when
encoding/json is used without tags.
5 years ago
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í
a6d2891a90
switch to gotooltest
5 years ago
Daniel Martí
39802aae19
update deps
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í
2067ad57aa
ensure that tests with separate packages work
5 years ago
Daniel Martí
30524ea282
shorten 'go test -short' run time
...
Down from ~11s to ~7s, as we can skip some extra checks.
While at it, avoid duplicate 'go test' builds in test.txt.
5 years ago
Daniel Martí
9cf7df925d
make "no such file" test pass on Windows
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í
2ad7593b06
README: mention filenames, and the difficulty with methods
5 years ago
Daniel Martí
6bbb2088f7
add a caveat about the reflect package
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í
22e7e4e848
add a bincmp builtin test command
...
To be used soon for reproducible builds.
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í
e08dd99c1e
introduce a binary grep command for the tests
...
The problem with the "grep" built-in command is that it prints the
entire data if there is an error. We don't want megabytes of binary
output for a test.
5 years ago
Daniel Martí
c19a41c882
README: add build instructions
...
The import path works now too.
5 years ago
Daniel Martí
3f7e8add01
README: add a standard library caveat
5 years ago
Daniel Martí
bd13893d65
README: forgot to finish a sentence
5 years ago
Daniel Martí
522e0d8345
add README
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í
63f58242fb
move garble binary setup with $PATH to Setup
...
This way, it's ready for multiple scripts.
5 years ago
Daniel Martí
8119fa0e62
use readelf in a way that it prints less output
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