The result of pointer arithmetic is of type ptrdiff_t, which is not
necessarily the same underlying type as ssize_t.

--- llvm-project-14.0.6.src/llvm/tools/llvm-objcopy/MachO/MachOWriter.cpp.orig	2022-06-23 02:46:24.000000000 +1000
+++ llvm-project-14.0.6.src/llvm/tools/llvm-objcopy/MachO/MachOWriter.cpp	2022-07-02 20:05:12.000000000 +1000
@@ -566,8 +566,8 @@ void MachOWriter::writeCodeSignatureData
   uint8_t *CurrHashWritePosition = HashWriteStart;
   while (CurrHashReadPosition < HashReadEnd) {
     StringRef Block(reinterpret_cast<char *>(CurrHashReadPosition),
-                    std::min(HashReadEnd - CurrHashReadPosition,
-                             static_cast<ssize_t>(CodeSignature.BlockSize)));
+                    std::min(static_cast<size_t>(HashReadEnd - CurrHashReadPosition),
+                             static_cast<size_t>(CodeSignature.BlockSize)));
     SHA256 Hasher;
     Hasher.update(Block);
     StringRef Hash = Hasher.final();
