On Fri, Sep 17, 2021, at 9:36 PM, James Y Knight via Libc-alpha wrote: > Glibc currently implements bcmp as an alias to memcmp -- which is valid, > but provides more than just the boolean equality semantics. There was > concern raised that modifying that might break existing binaries. However, > this concern can be easily addressed in the same way glibc typically > addresses such compatibility concerns: creating a new symbol-version for > the new bcmp implementation, with the previous bcmp symbol-version > remaining as a memcmp alias.
Not speaking for anyone but myself, but IMO this tactic has proven not to preserve _enough_ backward compatibility. Old binaries keep working, but old code breaks when recompiled with new glibc. It's especially troublesome to do this for a semantic change that manifests only at runtime; the break can go undetected for quite some time and then cause catastrophe when someone finally hits the relevant edge case. zw