From 8ccaf3c3e8cb5605360b1f449ae42c0f1147d9e4 Mon Sep 17 00:00:00 2001 From: Huihuang Shi Date: Thu, 11 Oct 2018 09:35:49 +0800 Subject: [PATCH] use genld.sh to generate link_ram.ld Use genld.sh instead of config.h to generate link_ram.ld. It can avoid the conflicts of the syntax between ld script and C. V1->V2: change the deps name to config, Tracked-On: #861 Signed-off-by: Huihuang Shi reviewed-by: Junjie Mao --- hypervisor/Makefile | 5 ++++- hypervisor/bsp/ld/link_ram.ld.in | 2 -- hypervisor/scripts/genld.sh | 13 +++++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100755 hypervisor/scripts/genld.sh diff --git a/hypervisor/Makefile b/hypervisor/Makefile index 3e8dec1a7..1ba75b9b5 100644 --- a/hypervisor/Makefile +++ b/hypervisor/Makefile @@ -34,6 +34,9 @@ include $(BASEDIR)/../scripts/deps.mk include scripts/kconfig/kconfig.mk +LD_IN_TOOL = scripts/genld.sh +BASH = $(shell which bash) + CFLAGS += -Wall -W CFLAGS += -ffunction-sections -fdata-sections CFLAGS += -fshort-wchar -ffreestanding @@ -248,7 +251,7 @@ $(HV_OBJDIR)/$(HV_FILE).bin: $(HV_OBJDIR)/$(HV_FILE).out $(OBJCOPY) -O binary $< $(HV_OBJDIR)/$(HV_FILE).bin $(HV_OBJDIR)/$(HV_FILE).out: $(C_OBJS) $(S_OBJS) - $(CC) -E -x c $(patsubst %, -I%, $(INCLUDE_PATH)) $(ARCH_LDSCRIPT_IN) | grep -v '^#' > $(ARCH_LDSCRIPT) + ${BASH} ${LD_IN_TOOL} $(ARCH_LDSCRIPT_IN) $(ARCH_LDSCRIPT) ${HV_OBJDIR}/.config $(CC) -Wl,-Map=$(HV_OBJDIR)/$(HV_FILE).map -o $@ $(LDFLAGS) $(ARCH_LDFLAGS) -T$(ARCH_LDSCRIPT) $^ .PHONY: clean diff --git a/hypervisor/bsp/ld/link_ram.ld.in b/hypervisor/bsp/ld/link_ram.ld.in index ef6cfd77d..5d71602e4 100644 --- a/hypervisor/bsp/ld/link_ram.ld.in +++ b/hypervisor/bsp/ld/link_ram.ld.in @@ -1,5 +1,3 @@ -#include "config.h" - ENTRY(cpu_primary_start_32) MEMORY diff --git a/hypervisor/scripts/genld.sh b/hypervisor/scripts/genld.sh new file mode 100755 index 000000000..205b9a89c --- /dev/null +++ b/hypervisor/scripts/genld.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +in=$1 +out=$2 +config=$3 + +cp $in $out +grep -v "^#" ${config} | while read line; do + IFS='=' read -ra arr <<<"$line" + field=${arr[0]} + value=${arr[1]} + sed -i "s/\b$field\b/$value/g" $out +done