[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v4 1/2] xen/build: put image header into a separate section
So it can be explicitly placed ahead of the rest of the .text content in the linker script (and thus the resulting image). This is a prerequisite for further work that will add a catch-all to the text section (.text.*). Note that placement of the sections inside of .text is also slightly adjusted to be more similar to the position found in the default GNU ld linker script. The special handling of the object file containing the header data as the first object file passed to the linker command line can also be removed. While there also remove the special handling of efi/ on x86. There's no need for the resulting object file to be passed in any special order to the linker. Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Julien Grall <jgrall@xxxxxxxxxx> # xen/arm --- Changes since v3: - Drop .text.cold.* handling. Changes since v2: - New in this version (split from patch 2). --- xen/arch/arm/arch.mk | 2 -- xen/arch/arm/arm32/Makefile | 3 +-- xen/arch/arm/arm32/head.S | 1 + xen/arch/arm/arm64/Makefile | 3 +-- xen/arch/arm/arm64/head.S | 1 + xen/arch/arm/xen.lds.S | 8 ++++++-- xen/arch/x86/Makefile | 5 ++--- xen/arch/x86/arch.mk | 2 -- xen/arch/x86/boot/head.S | 2 +- xen/arch/x86/xen.lds.S | 11 +++++++---- 10 files changed, 20 insertions(+), 18 deletions(-) diff --git a/xen/arch/arm/arch.mk b/xen/arch/arm/arch.mk index 094b670723..58db76c4e1 100644 --- a/xen/arch/arm/arch.mk +++ b/xen/arch/arm/arch.mk @@ -23,5 +23,3 @@ ifeq ($(CONFIG_ARM64_ERRATUM_843419),y) LDFLAGS += --fix-cortex-a53-843419 endif endif - -ALL_OBJS-y := arch/arm/$(TARGET_SUBARCH)/head.o $(ALL_OBJS-y) diff --git a/xen/arch/arm/arm32/Makefile b/xen/arch/arm/arm32/Makefile index 3040eabce3..520fb42054 100644 --- a/xen/arch/arm/arm32/Makefile +++ b/xen/arch/arm/arm32/Makefile @@ -4,11 +4,10 @@ obj-$(CONFIG_EARLY_PRINTK) += debug.o obj-y += domctl.o obj-y += domain.o obj-y += entry.o +obj-y += head.o obj-y += insn.o obj-$(CONFIG_LIVEPATCH) += livepatch.o obj-y += proc-v7.o proc-caxx.o obj-y += smpboot.o obj-y += traps.o obj-y += vfp.o - -extra-y += head.o diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S index 7a906167ef..c837d3054c 100644 --- a/xen/arch/arm/arm32/head.S +++ b/xen/arch/arm/arm32/head.S @@ -120,6 +120,7 @@ #endif /* !CONFIG_EARLY_PRINTK */ + .section .text.header, "ax", %progbits .arm /* diff --git a/xen/arch/arm/arm64/Makefile b/xen/arch/arm/arm64/Makefile index baa87655fa..6d507da0d4 100644 --- a/xen/arch/arm/arm64/Makefile +++ b/xen/arch/arm/arm64/Makefile @@ -7,6 +7,7 @@ obj-$(CONFIG_EARLY_PRINTK) += debug.o obj-y += domctl.o obj-y += domain.o obj-y += entry.o +obj-y += head.o obj-y += insn.o obj-$(CONFIG_LIVEPATCH) += livepatch.o obj-y += smc.o @@ -14,5 +15,3 @@ obj-y += smpboot.o obj-y += traps.o obj-y += vfp.o obj-y += vsysreg.o - -extra-y += head.o diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S index 66d862fc81..e62c48ec1c 100644 --- a/xen/arch/arm/arm64/head.S +++ b/xen/arch/arm/arm64/head.S @@ -133,6 +133,7 @@ add \xb, \xb, x20 .endm + .section .text.header, "ax", %progbits /*.aarch64*/ /* diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S index 08016948ab..743455a5f9 100644 --- a/xen/arch/arm/xen.lds.S +++ b/xen/arch/arm/xen.lds.S @@ -30,9 +30,13 @@ SECTIONS _start = .; .text : { _stext = .; /* Text section */ - *(.text) + *(.text.header) + *(.text.cold) - *(.text.unlikely) + *(.text.unlikely .text.*_unlikely .text.unlikely.*) + + *(.text) + *(.fixup) *(.gnu.warning) _etext = .; /* End of text section */ diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile index 9c40e0b4d7..04065a7310 100644 --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -1,5 +1,7 @@ obj-y += acpi/ +obj-y += boot/ obj-y += cpu/ +obj-y += efi/ obj-y += genapic/ obj-$(CONFIG_GUEST) += guest/ obj-$(CONFIG_HVM) += hvm/ @@ -77,9 +79,6 @@ obj-$(CONFIG_COMPAT) += x86_64/platform_hypercall.o obj-y += sysctl.o endif -# Allows "clean" to descend into boot/ -subdir- += boot - extra-y += asm-macros.i extra-y += xen.lds diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk index 8e57476d65..c90e56aeab 100644 --- a/xen/arch/x86/arch.mk +++ b/xen/arch/x86/arch.mk @@ -117,5 +117,3 @@ endif # Set up the assembler include path properly for older toolchains. CFLAGS += -Wa,-I$(srctree)/include - -ALL_OBJS-y := arch/x86/boot/built_in.o arch/x86/efi/built_in.o $(ALL_OBJS-y) diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S index dd1bea0d10..92d73345f0 100644 --- a/xen/arch/x86/boot/head.S +++ b/xen/arch/x86/boot/head.S @@ -9,7 +9,7 @@ #include <asm/cpufeature.h> #include <public/elfnote.h> - .text + .section .text.header, "ax", @progbits .code32 #define sym_offs(sym) ((sym) - __XEN_VIRT_START) diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S index 506bc8e404..960c51eb4c 100644 --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -73,9 +73,7 @@ SECTIONS _start = .; DECL_SECTION(.text) { _stext = .; /* Text and read-only data */ - *(.text) - *(.text.__x86_indirect_thunk_*) - *(.text.page_aligned) + *(.text.header) . = ALIGN(PAGE_SIZE); _stextentry = .; @@ -87,7 +85,12 @@ SECTIONS kexec_reloc_end = .; *(.text.cold) - *(.text.unlikely) + *(.text.unlikely .text.*_unlikely .text.unlikely.*) + + *(.text) + *(.text.__x86_indirect_thunk_*) + *(.text.page_aligned) + *(.fixup) *(.gnu.warning) _etext = .; /* End of text section */ -- 2.34.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |