From: Olaf Hering Date: Tue, 3 Feb 2015 11:45:37 +0000 (+0100) Subject: mini-os: sort objects in binary archives X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=bd5920cb92e6799bfd64957284a9e2cfe7699039;p=people%2Fliuw%2Flibxenctrl-split%2Fmini-os.git mini-os: sort objects in binary archives When building stubdom the mini-os objects are also linked into the binary. Unfortunately the linker will place them in the order found in the archive. Since this order is random the resulting stubdom binary differs when it was built from identical sources but on different build hosts. To help with creating a reproducible binary the elements in an archive must simply be sorted before passing them to $(AR). Signed-off-by: Olaf Hering Cc: Stefano Stabellini Cc: Samuel Thibault Acked-by: Samuel Thibault [ ijc -- massaged paths to apply to external mini-os tree ] --- diff --git a/Makefile b/Makefile index f16520e..9482ec0 100644 --- a/Makefile +++ b/Makefile @@ -146,9 +146,9 @@ arch_lib: ifeq ($(CONFIG_LWIP),y) # lwIP library -LWC := $(shell find $(LWIPDIR)/src -type f -name '*.c') +LWC := $(sort $(shell find $(LWIPDIR)/src -type f -name '*.c')) LWC := $(filter-out %6.c %ip6_addr.c %ethernetif.c, $(LWC)) -LWO := $(patsubst %.c,%.o,$(LWC)) +LWO := $(patsubst %.c,%.o,$(LWC) LWO += $(OBJ_DIR)/lwip-arch.o ifeq ($(CONFIG_NETFRONT),y) LWO += $(OBJ_DIR)/lwip-net.o diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 9f04a93..a46766c 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -13,7 +13,7 @@ include ../../minios.mk # Sources here are all *.c *.S without $(MINIOS_TARGET_ARCH).S # This is handled in $(HEAD_ARCH_OBJ) -ARCH_SRCS := $(wildcard *.c) +ARCH_SRCS := $(sort $(wildcard *.c)) # The objects built from the sources. ARCH_OBJS := $(patsubst %.c,$(OBJ_DIR)/%.o,$(ARCH_SRCS))