[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v3] build: remove shim related targets

There's no need to have shim specific targets, so just use the regular
xen makefile targets in order to build the shim binary.

When the shim is build as part of the firmware directory install the
stripped Xen binary to the firmware directory and place a binary with
symbols in the debug directory.

The objcopy step of the shim build is also removed in this patch:
since the shim is booted in PVH mode there's no need for the resulting
binary to be in elf32 format. Xen can load PVH kernels with either a
32 or 64bit elf header.

Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Cc: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
Cc: Jan Beulich <jbeulich@xxxxxxxx>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
Cc: Tim Deegan <tim@xxxxxxx>
Changes since v2:
 - Rebase to staging.
 - Remove $(TARGET)-common.
 - Use $@ in the xen-shim target rule.

Changes since v1:
 - Copy a shim binary with symbols to the debug dir.
 - Use ln to link xen-shim and xen-shim-syms instead of cp.
 - Expand commit message to explain the reason for dropping the
   objcopy step.
 tools/firmware/Makefile         |  4 ++++
 tools/firmware/xen-dir/Makefile |  9 +++++----
 xen/Makefile                    | 18 ++++--------------
 xen/arch/x86/Makefile           | 10 +++-------
 4 files changed, 16 insertions(+), 25 deletions(-)

diff --git a/tools/firmware/Makefile b/tools/firmware/Makefile
index b2f011df49..5a7cf7766d 100644
--- a/tools/firmware/Makefile
+++ b/tools/firmware/Makefile
@@ -8,6 +8,7 @@ endif
 # hvmloader is a 32-bit protected mode binary.
 TARGET      := hvmloader/hvmloader
 SUBDIRS-$(CONFIG_OVMF) += ovmf-dir
@@ -46,6 +47,7 @@ endif
 .PHONY: install
 install: all
        [ -d $(INST_DIR) ] || $(INSTALL_DIR) $(INST_DIR)
+       [ -d $(DEBG_DIR) ] || $(INSTALL_DIR) $(DEBG_DIR)
        [ ! -e $(TARGET) ] || $(INSTALL_DATA) $(TARGET) $(INST_DIR)
 ifeq ($(CONFIG_SEABIOS),y)
        $(INSTALL_DATA) seabios-dir/out/bios.bin $(INST_DIR)/seabios.bin
@@ -55,6 +57,7 @@ ifeq ($(CONFIG_OVMF),y)
 ifeq ($(CONFIG_PV_SHIM),y)
        $(INSTALL_DATA) xen-dir/xen-shim $(INST_DIR)/xen-shim
+       $(INSTALL_DATA) xen-dir/xen-shim-syms $(DEBG_DIR)/xen-shim-syms
 .PHONY: uninstall
@@ -68,6 +71,7 @@ ifeq ($(CONFIG_OVMF),y)
 ifeq ($(CONFIG_PV_SHIM),y)
        rm -f $(INST_DIR)/xen-shim
+       rm -f $(DEBG_DIR)/xen-shim-syms
 .PHONY: clean
diff --git a/tools/firmware/xen-dir/Makefile b/tools/firmware/xen-dir/Makefile
index 7fd36a0e15..57750bf2fd 100644
--- a/tools/firmware/xen-dir/Makefile
+++ b/tools/firmware/xen-dir/Makefile
@@ -48,13 +48,14 @@ shim-%config: $(D) FORCE
 xen-shim: $(D) shim-olddefconfig
-       $(MAKE) -C $(D)/xen install-shim \
+       $(MAKE) -C $(D)/xen build \
                XEN_CONFIG_EXPERT=y \
-               KCONFIG_CONFIG=$(CURDIR)/shim.config \
-               DESTDIR=$(CURDIR)
+               KCONFIG_CONFIG=$(CURDIR)/shim.config
+       ln -sf $(D)/xen/xen $@
+       ln -sf $(D)/xen/xen-syms $@-syms
 .PHONY: distclean clean
 distclean clean:
-       rm -f xen-shim *.old
+       rm -f xen-shim xen-shim-syms *.old
        rm -rf $(D)
        rm -f linkfarm.stamp*
diff --git a/xen/Makefile b/xen/Makefile
index 290dc93ddd..62d479c799 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -37,10 +37,10 @@ default: build
 .PHONY: dist
 dist: install
-build install build-shim:: include/config/auto.conf
+build install:: include/config/auto.conf
-.PHONY: build install uninstall clean distclean cscope TAGS tags MAP gtags 
tests install-shim build-shim
-build install uninstall debug clean distclean cscope TAGS tags MAP gtags tests 
install-shim build-shim::
+.PHONY: build install uninstall clean distclean cscope TAGS tags MAP gtags 
+build install uninstall debug clean distclean cscope TAGS tags MAP gtags 
 ifneq ($(XEN_TARGET_ARCH),x86_32)
        $(MAKE) -f Rules.mk _$@
@@ -80,13 +80,6 @@ _install: $(TARGET)$(CONFIG_XEN_INSTALL_SUFFIX)
                fi; \
-.PHONY: _build-shim
-_build-shim: $(TARGET)-shim
-.PHONY: _install-shim
-_install-shim: build-shim
-       $(INSTALL_DATA) $(TARGET)-shim $(DESTDIR)
 .PHONY: _tests
        $(MAKE) -f $(BASEDIR)/Rules.mk -C test tests
@@ -139,8 +132,7 @@ $(TARGET).gz: $(TARGET)
        gzip -n -f -9 < $< > $@.new
        mv $@.new $@
-.PHONY: $(TARGET)-common
-$(TARGET)-common: delete-unfresh-files
+$(TARGET): delete-unfresh-files
        $(MAKE) -C tools
        $(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h
        [ -e include/asm ] || ln -sf asm-$(TARGET_ARCH) include/asm
@@ -150,8 +142,6 @@ $(TARGET)-common: delete-unfresh-files
        $(MAKE) -f $(BASEDIR)/Rules.mk -C include
        $(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) asm-offsets.s
        $(MAKE) -f $(BASEDIR)/Rules.mk include/asm-$(TARGET_ARCH)/asm-offsets.h
-$(TARGET) $(TARGET)-shim: $(TARGET)-common
        $(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) $@
 # drivers/char/console.o contains static banner/compile info. Blow it away.
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index 7c6e93d560..5563c813dd 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -81,7 +81,9 @@ efi-y := $(shell if [ ! -r $(BASEDIR)/include/xen/compile.h 
-o \
 ifneq ($(build_id_linker),)
 notes_phdrs = --notes
-notes_phdrs =
+ifeq ($(CONFIG_PVH_GUEST),y)
+notes_phdrs = --notes
@@ -147,11 +149,6 @@ $(TARGET)-syms: prelink.o xen.lds 
        rm -f $(@D)/.$(@F).[0-9]*
-# Use elf32-x86-64 if toolchain support exists, elf32-i386 otherwise.
-$(TARGET)-shim: FORMAT = $(firstword $(filter elf32-x86-64,$(shell $(OBJCOPY) 
--help)) elf32-i386)
-$(TARGET)-shim: $(TARGET)-syms
-       $(OBJCOPY) -O $(FORMAT) $< $@
 note.o: $(TARGET)-syms
        $(OBJCOPY) -O binary --only-section=.note.gnu.build-id  
$(BASEDIR)/xen-syms $@.bin
        $(OBJCOPY) -I binary -O elf64-x86-64 -B i386:x86-64 \
@@ -236,6 +233,5 @@ clean::
        rm -f asm-offsets.s *.lds boot/*.o boot/*~ boot/core boot/mkelf32
        rm -f $(BASEDIR)/.xen-syms.[0-9]* boot/.*.d
        rm -f $(BASEDIR)/.xen.efi.[0-9]* efi/*.efi efi/disabled efi/mkreloc
-       rm -f $(BASEDIR)/xen-shim
        rm -f boot/cmdline.S boot/reloc.S boot/*.lnk boot/*.bin
        rm -f note.o

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.