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

[Xen-changelog] [xen staging] x86/linker: add a reloc section to ELF linker script



commit 597c57becbeba21ff9f0c078ba2e32973d09d258
Author:     Roger Pau Monne <roger.pau@xxxxxxxxxx>
AuthorDate: Thu Jun 27 11:33:33 2019 +0200
Commit:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Thu Jun 27 18:50:41 2019 +0100

    x86/linker: add a reloc section to ELF linker script
    
    if the hypervisor has been built with EFI support (ie: multiboot2).
    This allows to position the .reloc section correctly in the output
    binary.
    
    Note that for the ELF output format the .reloc section is moved before
    .bss because the data it contains is read-only, so it belongs with the
    other sections containing read-only data.
    
    Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
    Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
    Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
 xen/arch/x86/xen.lds.S | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
index 98a99444c2..cee7cf80dd 100644
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -175,6 +175,19 @@ SECTIONS
   } :text
 #endif
 #endif
+
+/*
+ * ELF builds are linked to a fixed virtual address, and in principle
+ * shouldn't have a .reloc section.  However, due to the way EFI support is
+ * currently implemented, retaining the .reloc section is necessary.
+ */
+#if defined(XEN_BUILD_EFI) && !defined(EFI)
+  . = ALIGN(4);
+  DECL_SECTION(.reloc) {
+    *(.reloc)
+  } :text
+#endif
+
   _erodata = .;
 
   . = ALIGN(SECTION_ALIGN);
--
generated by git-patchbot for /home/xen/git/xen.git#staging

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

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