With respect to reproducible builds, you could define a hash function which has deliberate collisions for binaries which are semantically equivalent.<p>In this case, what you would do is sort the symbols to produce a new binary, then run the binary with sorted symbols through sha256.  So you&#x27;re no longer asking if your binary is byte-for-byte equal to someone else&#x27;s binary, you&#x27;re asking if your binary is byte-for-byte equal if their symbols were sorted.<p>It complicates matters because you now have to do this custom reordering step before you hash (which means you can no longer do it easily with sha256sum or the type of program you might write in CS 101 that compares files byte-for-byte, you have to have trusted code which gets into the guts of the ELF format and reorder the symbols which increases the complexity and attack surface for reproducible binaries.)