aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2010-04-24 19:15:51 +0100
committerMichael Brown <mcb30@ipxe.org>2010-04-25 01:50:46 +0100
commit58f6e553625c90d928ddd54b8f31634a5b26f05e (patch)
tree6f454e053a5788834546e73de8a15deee218d816 /src
parent483c3c06ab17f799ae02041ac0dd992142bcc305 (diff)
downloadipxe-58f6e553625c90d928ddd54b8f31634a5b26f05e.zip
ipxe-58f6e553625c90d928ddd54b8f31634a5b26f05e.tar.gz
ipxe-58f6e553625c90d928ddd54b8f31634a5b26f05e.tar.bz2
[build] Generate random build identifier
Randomly generate a 32-bit build identifier that can be used to identify identical iPXE ROMs when multiple such ROMs are present in a system (e.g. when a multi-function NIC exposes the same iPXE ROM image via each function's expansion ROM BAR). Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.housekeeping9
-rw-r--r--src/arch/i386/prefix/romprefix.S3
2 files changed, 10 insertions, 2 deletions
diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
index a7162e6..685b6d6 100644
--- a/src/Makefile.housekeeping
+++ b/src/Makefile.housekeeping
@@ -686,13 +686,18 @@ $(BLIB) : $(BLIB_OBJS) $(BLIB_LIST) $(MAKEDEPS)
$(Q)$(RANLIB) $@
blib : $(BLIB)
+# Command to generate build ID. Must be unique for each $(BIN)/%.tmp,
+# even within the same build run.
+#
+BUILD_ID_CMD := perl -e 'printf "0x%08x", int ( rand ( 0xffffffff ) );'
+
# Build an intermediate object file from the objects required for the
# specified target.
#
-$(BIN)/%.tmp : $(BLIB) $(MAKEDEPS) $(LDSCRIPT)
+$(BIN)/%.tmp : $(BLIB) $(MAKEDEPS) $(LDSCRIPT)
$(QM)$(ECHO) " [LD] $@"
$(Q)$(LD) $(LDFLAGS) -T $(LDSCRIPT) $(TGT_LD_FLAGS) $(BLIB) -o $@ \
- -Map $(BIN)/$*.tmp.map
+ --defsym _build_id=`$(BUILD_ID_CMD)` -Map $(BIN)/$*.tmp.map
$(Q)$(OBJDUMP) -ht $@ | $(SORTOBJDUMP) >> $(BIN)/$*.tmp.map
# Keep intermediate object file (useful for debugging)
diff --git a/src/arch/i386/prefix/romprefix.S b/src/arch/i386/prefix/romprefix.S
index 6c9b4b0..dc7c074 100644
--- a/src/arch/i386/prefix/romprefix.S
+++ b/src/arch/i386/prefix/romprefix.S
@@ -52,6 +52,9 @@ checksum:
.long 0
.previous
+build_id:
+ .long _build_id /* Randomly-generated build ID */
+
pciheader:
.ascii "PCIR" /* Signature */
.word pci_vendor_id /* Vendor identification */