]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[build] Avoid using awk to format build ID as hexadecimal
authorMichael Brown <mcb30@ipxe.org>
Sun, 31 Jan 2021 00:41:34 +0000 (00:41 +0000)
committerMichael Brown <mcb30@ipxe.org>
Sun, 31 Jan 2021 00:41:34 +0000 (00:41 +0000)
The version of awk used in FreeBSD seems to be incapable of formatting
unsigned 32-bit integers above 0x80000000 and will silently render any
such value as 0x80000000.  For example:

  echo 3735928559 | awk '{printf "0x%08x", $1}'

will produce 0x80000000 instead of the correct 0xdeadbeef.

This results in an approximately 50% chance of a build ID collision
when building on FreeBSD.

Work around this problem by passing the decimal value directly in the
ld --defsym argument value.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/Makefile.housekeeping

index e91307023aef438259d9295b78bb338a0eee9125..91be542abd38b928c04864ded78c8bcb14b5182a 100644 (file)
@@ -1176,7 +1176,7 @@ blib : $(BLIB)
 # different builds (such as builds for multiple ROMs all built from
 # the same blib.a).
 #
-BUILD_ID_CMD = cat $^ | cksum | awk '{printf "0x%08x", $$1}'
+BUILD_ID_CMD = cat $^ | cksum | awk '{print $$1}'
 
 # Build timestamp
 #