diff --git a/core/arch/arm/include/kernel/generic_boot.h b/core/arch/arm/include/kernel/generic_boot.h index fc0e7e05236..fc568bb421b 100644 --- a/core/arch/arm/include/kernel/generic_boot.h +++ b/core/arch/arm/include/kernel/generic_boot.h @@ -58,4 +58,7 @@ extern uint8_t __pageable_part_end[]; extern uint8_t __pageable_start[]; extern uint8_t __pageable_end[]; +/* Generated by core/arch/arm/kernel/link.mk */ +extern const char core_v_str[]; + #endif /* KERNEL_GENERIC_BOOT_H */ diff --git a/core/arch/arm/kernel/generic_boot.c b/core/arch/arm/kernel/generic_boot.c index 84db4f4f563..b50065811fb 100644 --- a/core/arch/arm/kernel/generic_boot.c +++ b/core/arch/arm/kernel/generic_boot.c @@ -281,7 +281,7 @@ static void init_primary_helper(uint32_t pageable_part, uint32_t nsec_entry) init_runtime(pageable_part); - DMSG("TEE initializing\n"); + IMSG("Initializing (%s)\n", core_v_str); thread_init_primary(generic_boot_get_handlers()); thread_init_per_cpu(); diff --git a/core/arch/arm/kernel/link.mk b/core/arch/arm/kernel/link.mk index 333a067dbc1..e97310bc34a 100644 --- a/core/arch/arm/kernel/link.mk +++ b/core/arch/arm/kernel/link.mk @@ -16,7 +16,8 @@ link-ldflags += --print-gc-sections link-ldadd = $(LDADD) link-ldadd += $(addprefix -L,$(libdirs)) link-ldadd += $(addprefix -l,$(libnames)) -ldargs-tee.elf := $(link-ldflags) $(objs) $(link-ldadd) $(libgcccore) +ldargs-tee.elf := $(link-ldflags) $(objs) $(link-out-dir)/version.o \ + $(link-ldadd) $(libgcccore) link-script-cppflags := -DASM=1 \ $(filter-out $(CPPFLAGS_REMOVE) $(cppflags-remove), \ @@ -92,9 +93,37 @@ $(link-script-pp): $(link-script) $(link-script-extra-deps) $(q)$(CPPcore) -Wp,-P,-MT,$@,-MD,$(link-script-dep) \ $(link-script-cppflags) $< > $@ +define update-buildcount + @$(cmd-echo-silent) ' UPD $(1)' + $(q)if [ ! -f $(1) ]; then \ + mkdir -p $(dir $(1)); \ + echo 1 >$(1); \ + else \ + expr 0`cat $(1)` + 1 >$(1); \ + fi +endef + +define gen-version-o + $(call update-buildcount,$(link-out-dir)/.buildcount) + @$(cmd-echo-silent) ' GEN $(link-out-dir)/version.o' + $(q)echo -e "const char core_v_str[] =" \ + "\"`git describe --dirty` \"" \ + "\"#`cat $(link-out-dir)/.buildcount` \"" \ + "\"`date -u` \"" \ + "\"$(CFG_KERN_LINKER_ARCH)\";\n" \ + | $(CCcore) $(core-platform-cflags) \ + -xc - -c -o $(link-out-dir)/version.o +endef + +$(link-out-dir)/version.o: + $(call gen-version-o) + all: $(link-out-dir)/tee.elf cleanfiles += $(link-out-dir)/tee.elf $(link-out-dir)/tee.map +cleanfiles += $(link-out-dir)/version.o +cleanfiles += $(link-out-dir)/.buildcount $(link-out-dir)/tee.elf: $(objs) $(libdeps) $(link-script-pp) + $(call gen-version-o) @$(cmd-echo-silent) ' LD $@' $(q)$(LDcore) $(ldargs-tee.elf) -o $@