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@citrix.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
Roger Pau Monné authored and Jan Beulich committed 2018-02-23 11:05:19 +01:00
1 parent 28e4db9949
commit b38c4e1763
4 files changed
+16 -25

No files matched your search

+4
View File
@@ -8,6 +8,7 @@ endif
# hvmloader is a 32-bit protected mode binary.
TARGET := hvmloader/hvmloader
INST_DIR := $(DESTDIR)$(XENFIRMWAREDIR)
DEBG_DIR := $(DESTDIR)$(DEBUG_DIR)$(XENFIRMWAREDIR)
SUBDIRS-y :=
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)
endif
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
endif
.PHONY: uninstall
@@ -68,6 +71,7 @@ ifeq ($(CONFIG_OVMF),y)
endif
ifeq ($(CONFIG_PV_SHIM),y)
rm -f $(INST_DIR)/xen-shim
rm -f $(DEBG_DIR)/xen-shim-syms
endif
.PHONY: clean
+5 -4
View File
@@ -48,13 +48,14 @@ shim-%config: $(D) FORCE
KCONFIG_CONFIG=$(CURDIR)/shim.config
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*
+4 -14
View File
@@ -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 tests
build install uninstall debug clean distclean cscope TAGS tags MAP gtags tests::
ifneq ($(XEN_TARGET_ARCH),x86_32)
$(MAKE) -f Rules.mk _$@
else
@@ -80,13 +80,6 @@ _install: $(TARGET)$(CONFIG_XEN_INSTALL_SUFFIX)
fi; \
fi
.PHONY: _build-shim
_build-shim: $(TARGET)-shim
.PHONY: _install-shim
_install-shim: build-shim
$(INSTALL_DATA) $(TARGET)-shim $(DESTDIR)
.PHONY: _tests
_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.
+3 -7
View File
@@ -81,7 +81,9 @@ efi-y := $(shell if [ ! -r $(BASEDIR)/include/xen/compile.h -o \
ifneq ($(build_id_linker),)
notes_phdrs = --notes
else
notes_phdrs =
ifeq ($(CONFIG_PVH_GUEST),y)
notes_phdrs = --notes
endif
endif
ifdef CONFIG_LIVEPATCH
@@ -147,11 +149,6 @@ $(TARGET)-syms: prelink.o xen.lds $(BASEDIR)/common/symbols-dummy.o
>$(@D)/$(@F).map
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
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.