diff options
author | Michael Brown <mcb30@ipxe.org> | 2010-04-24 19:15:51 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2010-04-25 01:50:46 +0100 |
commit | 58f6e553625c90d928ddd54b8f31634a5b26f05e (patch) | |
tree | 6f454e053a5788834546e73de8a15deee218d816 /src | |
parent | 483c3c06ab17f799ae02041ac0dd992142bcc305 (diff) | |
download | ipxe-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.housekeeping | 9 | ||||
-rw-r--r-- | src/arch/i386/prefix/romprefix.S | 3 |
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 */ |