[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC v1 18/74] x86/link: Relocate program headers
From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> When the xen binary is loaded by libelf (in the future) we rely on the elf loader to load the binary accordingly. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- xen/arch/x86/xen.lds.S | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S index 6164ad094f..400d8a56c4 100644 --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -13,6 +13,7 @@ #undef __XEN_VIRT_START #define __XEN_VIRT_START __image_base__ #define SECTION_ALIGN MB(2) +#define DECL_SECTION(x) x : ENTRY(efi_start) @@ -20,8 +21,9 @@ ENTRY(efi_start) #define FORMAT "elf64-x86-64" #define SECTION_ALIGN PAGE_SIZE +#define DECL_SECTION(x) x : AT(ADDR(x) - __XEN_VIRT_START) -ENTRY(start) +ENTRY(start_pa) #endif /* EFI */ @@ -56,9 +58,11 @@ SECTIONS __2M_text_start = .; /* Start of 2M superpages, mapped RX. */ #endif + start_pa = ABSOLUTE(start - __XEN_VIRT_START); + . = __XEN_VIRT_START + XEN_IMG_OFFSET; _start = .; - .text : { + DECL_SECTION(.text) { _stext = .; /* Text and read-only data */ *(.text) *(.text.cold) @@ -73,7 +77,7 @@ SECTIONS __2M_text_end = .; __2M_rodata_start = .; /* Start of 2M superpages, mapped RO. */ - .rodata : { + DECL_SECTION(.rodata) { _srodata = .; /* Bug frames table */ __start_bug_frames = .; @@ -132,13 +136,13 @@ SECTIONS * compiler may want to inject other things in the .note which we don't care * about - hence this unique name. */ - .note.gnu.build-id : { + DECL_SECTION(.note.gnu.build-id) { __note_gnu_build_id_start = .; *(.note.gnu.build-id) __note_gnu_build_id_end = .; } :note :text #elif defined(BUILD_ID_EFI) - .buildid : { + DECL_SECTION(.buildid) { __note_gnu_build_id_start = .; *(.buildid) __note_gnu_build_id_end = .; @@ -153,7 +157,7 @@ SECTIONS __2M_init_start = .; /* Start of 2M superpages, mapped RWX (boot only). */ . = ALIGN(PAGE_SIZE); /* Init code and data */ __init_begin = .; - .init : { + DECL_SECTION(.init) { _sinittext = .; *(.init.text) /* @@ -215,7 +219,7 @@ SECTIONS __2M_rwdata_start = .; /* Start of 2M superpages, mapped RW. */ . = ALIGN(SMP_CACHE_BYTES); - .data.read_mostly : { + DECL_SECTION(.data.read_mostly) { *(.data.read_mostly) . = ALIGN(8); __start_schedulers_array = .; @@ -223,7 +227,7 @@ SECTIONS __end_schedulers_array = .; } :text - .data : { /* Data */ + DECL_SECTION(.data) { *(.data.page_aligned) *(.data) *(.data.rel) @@ -231,7 +235,7 @@ SECTIONS CONSTRUCTORS } :text - .bss : { /* BSS */ + DECL_SECTION(.bss) { __bss_start = .; *(.bss.stack_aligned) *(.bss.page_aligned*) -- 2.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |