diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2024-12-12 15:02:40 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2024-12-12 15:03:51 +0000 |
| commit | 1cc680471dc68c265d7dd55f80ef7a1de48fa63f (patch) | |
| tree | c38d7903d6247781c05b97b0e3b868d45b5d6654 /tools | |
| parent | 530e80f8ee7c0e39b3e98ed0839a557af2d6192e (diff) | |
pkg/clangtool: cache combined output
Instead of caching output for each file separately,
cache total combined output in a single file.
Caching output for each file is not useful in practice,
I either use everything cached, or regenerate whole cache.
Caching combined output is much more efficient.
With function info there are lots of duplication across
individual output files. E.g. I am getting 6GB cache
for individual files, and only 60MB for the combined cache.
Also change how caching works. Remove the flag and always
use the cache if it exists. It's much more convinient and
safer to use (accidentially not using the cache).
The cache file can be removed to force regeneration.
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/syz-declextract/declextract.go | 15 | ||||
| -rw-r--r-- | tools/syz-declextract/declextract_test.go | 9 |
2 files changed, 10 insertions, 14 deletions
diff --git a/tools/syz-declextract/declextract.go b/tools/syz-declextract/declextract.go index 5fe1edf52..ab8eac92b 100644 --- a/tools/syz-declextract/declextract.go +++ b/tools/syz-declextract/declextract.go @@ -34,10 +34,8 @@ var target = targets.Get(targets.Linux, targets.AMD64) func main() { var ( - flagConfig = flag.String("config", "", "manager config file") - flagBinary = flag.String("binary", "syz-declextract", "path to syz-declextract binary") - flagCacheExtract = flag.Bool("cache-extract", false, "use cached extract results if present"+ - " (cached in manager.workdir/declextract.cache)") + flagConfig = flag.String("config", "", "manager config file") + flagBinary = flag.String("binary", "syz-declextract", "path to syz-declextract binary") flagCacheProbe = flag.Bool("cache-probe", false, "use cached probe results if present"+ " (cached in manager.workdir/interfaces.json)") ) @@ -51,11 +49,10 @@ func main() { tool.Failf("kernel probing failed: %v", err) } if err := run(filepath.FromSlash("sys/linux/auto.txt"), probeInfo, &clangtool.Config{ - ToolBin: *flagBinary, - KernelSrc: cfg.KernelSrc, - KernelObj: cfg.KernelObj, - CacheDir: filepath.Join(cfg.Workdir, "declextract.cache"), - ReuseCache: *flagCacheExtract, + ToolBin: *flagBinary, + KernelSrc: cfg.KernelSrc, + KernelObj: cfg.KernelObj, + CacheFile: filepath.Join(cfg.Workdir, "declextract.cache"), }); err != nil { tool.Fail(err) } diff --git a/tools/syz-declextract/declextract_test.go b/tools/syz-declextract/declextract_test.go index e6f8da464..6d0f12039 100644 --- a/tools/syz-declextract/declextract_test.go +++ b/tools/syz-declextract/declextract_test.go @@ -129,11 +129,10 @@ func testEachFile(t *testing.T, fn func(t *testing.T, cfg *clangtool.Config, fil t.Fatal(err) } cfg := &clangtool.Config{ - ToolBin: *flagBin, - KernelSrc: testdata, - KernelObj: buildDir, - CacheDir: buildDir, - ReuseCache: true, + ToolBin: *flagBin, + KernelSrc: testdata, + KernelObj: buildDir, + CacheFile: filepath.Join(buildDir, filepath.Base(file)+".json"), } fn(t, cfg, file) }) |
