On Sat, May 2, 2020, 20:31 Michael Brown <mc...@ipxe.org> wrote: > On 03/05/2020 00:10, Neil Roza wrote: > > Hashing the build target name is not sufficient, because that would > > result in a collision between the same ROM built at different times > > from > > different source trees. > > > > Okay, understood. If I take your meaning correctly, then it would be > > enough to hash a concatenation of the `$(SOURCE_DATE_EPOCH)` with the > > target name. The relevant shell expression would become... > > > > echo $(SOURCE_DATE_EPOCH) $@ | md5sum | head -c8 > > > > Would that get it done? Or did I interpret your mention of "different > > times" too literally? > > Different build configurations (e.g. config/*.h setting, or even > DEBUG=... options specified on the make command line) also count as > needing different build IDs. Basically: anything that could possibly > affect the runtime memory layout is relevant. > > It should really be a hash of the object that results from the link. > The only reason it doesn't already use a hash is because the build ID is > itself used as an input to the link (since that's how the value ends up > in the binary). It's possible that binutils now offers a clean and sane > way to construct a hash value over the object: if so, then we could use > that instead. (If the result ends up being more than 32 bits then the > consuming code would need to be updated accordingly.)
I think one Matt Turner has discovered the trick we need: https://github.com/mattst88/build-id/
_______________________________________________ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel