bsdiff(1)

bsdiff1

Generate a patch between two binary files

Usage

bsdiff oldfile newfile patchfile

Overview

The bsdiff utility compares oldfile to newfile and writes to patchfile a binary patch suitable for use by bspatch(1). When oldfile and newfile are two versions of an executable program, the patches produced are on average a factor of five smaller than those produced by any other binary patch tool known to the author.

The bsdiff utility uses memory equal to 17 times the size of oldfile, and requires an absolute minimum working set size of 8 times the size of oldfile.

Releases

50 releases since FreeBSD 5.5-RELEASE; the text changed 33 times.

  1. 5.5
  2. 6.0–6.3
  3. 6.4
  4. 7.0
  5. 7.1
  6. 7.2
  7. 7.3
  8. 7.4
  9. 8.0
  10. 8.1
  11. 8.2
  12. 8.3
  13. 8.4
  14. 9.0
  15. 9.1
  16. 9.2
  17. 9.3
  18. 10.0
  19. 10.1
  20. 10.2
  21. 10.3
  22. 10.4
  23. 11.0
  24. 11.1
  25. 11.2
  26. 11.3
  27. 11.4
  28. 12.0
  29. 12.1
  30. 12.2
  31. 12.3
  32. 12.4
  33. 13.0–13.2
  34. 13.3–16.0

Authors

Colin Percival ⟨[email protected]⟩

Bugs

The bsdiff utility does not store the hashes of oldfile or newfile in patchfile. As a result, it is possible to apply a patch to the wrong file; this will usually produce garbage. It is recommended that users of bsdiff store the hashes of oldfile and newfile and compare against them before and after applying patchfile.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.