.DS_Store
*/.DS_Store
*.exe
*.bin
*.app
hashcat
hashcat.exe
libhashcat.so.*
libhashcat*.dylib
hashcat.dll
*.debugfile
*.debug
*.potfile
*.restore
*.dictstat2
*.pot
*.pid
*.log
*.out
*.dSYM
*.su
cache/**

# the layout before everything rebuildable moved under cache/, left here so an older checkout
# does not report them as untracked. Removable once nobody is upgrading across that change.
kernels/**
seekdbs/**
pcfgdbs/**
lib/*.a
bridges/*.dll
bridges/*.so
bridges/subs/*.dll
bridges/subs/*.so
modules/*.dll
modules/*.so
feeds/*.dll
feeds/*.so
obj/*/*/*.o
obj/*.o
obj/*.a
obj/*/*/*.d
obj/*.d
obj/*.map
obj/*.def
obj/arrangement

# obj/api.c is written by the build, and make clean deletes it. Tracked it would make every
# tree that has been cleaned report as modified, and a fresh clone would find it already newer
# than the headers it is derived from and never regenerate it
obj/*.c
libhashcat.so.*
libhashcat.*.dylib
hashcat.dll
include/CL
tools/luks_tests
tools/luks2_tests
.vscode
test_edge*

# tools/test.sh names its working directory test_<unix timestamp> and leaves it in the repository
# root. Anchored and restricted to digits on purpose: a bare test_* would also match
# tools/test_modules/ and hide every new test module from git.
/test_[0-9]*/

# ROCm's compiler writes its scratch tree into the current working directory rather than a temp
# dir, and leaves it behind when a JIT compile is aborted, along with the preprocessed kernel it
# was given. Running hashcat from the repository root is enough to collect them.
comgr-*/
*.hipi

# tools/compute_sanitizer: the DEBUG=1 sibling binary, per-run results
# (never overwritten, so never something to commit), and the compiled
# ground-truth .cu fixtures (source is tracked, the nvcc-built binaries are not).
/hashcat-sanitizer
/tools/compute_sanitizer/results/
/tools/compute_sanitizer/modules/oob_write
/tools/compute_sanitizer/modules/oob_read
/tools/compute_sanitizer/modules/uninit_global

Rust/feeds/*/target
Rust/bridges/*/target
Rust/hashcat-sys/target

# Left behind by builds from before the bindings moved into OUT_DIR
Rust/hashcat-sys/src/bindings.rs

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# Generated docs are overwritten anyway
/docs/hashcat-example_hashes.md
/docs/hashcat-help.md

# ASan tooling output (tools/asan/)
/asan_harness
/asan-sweep/
/asan-gpu-sweep/
/asan-repro/

# fuzzing output (tools/fuzz/)
/fuzz_out/
/corpus/
/crashes/
