By day I work a lot with C/C++ under Solaris 8. The binaries we generate are ELF format. I would like to provide my configuration management folks with a reliable way to run diffs after a build. Not diffs of the source files, that's easy... But they want to be sure that the *binary* files that are generated are functionally equivalent between builds.
For instance. Let's say we have build 2.0 of our software and they need to make a patch. They run a build, but if they use "diff" or "sum" on the resulting shared objects, every single shared object will show up as a difference, even though only one of them might have actually had any code changed. This is because there is some dynamic data which the linker seems to put into each binary, so even if you build from the same source code twice, you get different binaries. This is, of course, a feature rather than a bug.
The obvious answer is to know which object files are linked into which shared objects, but I'd like to give them an "idiot proof" way to show which shared objects have had *code* changed. I tried experimenting with "elfdump" but had no luck finding options which could be used to determine if the binaries contain the same code.
Any help is appreciated.