فهرست منبع

package/xen: fix build for arm with binutils >= 2.41

Xen currently fails to build for 32-bit Arm v7 with binutils >= 2.41,
with the following error:

    proc-v7.S:33: Error: junk at end of line, first unrecognized character is `#'

The failure can be reproduced with the commands:

    cat >.config <<EOF
    BR2_arm=y
    BR2_cortex_a9=y
    BR2_ARM_ENABLE_VFP=y
    BR2_ARM_EABIHF=y
    BR2_TOOLCHAIN_EXTERNAL=y
    BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
    BR2_PACKAGE_XEN=y
    BR2_PACKAGE_XEN_HYPERVISOR=y
    BR2_PACKAGE_XEN_TOOLS=y
    EOF
    make olddefconfig
    make xen

Backport a patch from Xen 4.18 plus one patch it depends on to fix the
build.

Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
Cc: Alistair Francis <alistair@alistair23.me>
[Julien:
 - reword commit title
 - add commands to reproduce the issue in commit log
 - add missing SoB lines to patches
]
Signed-off-by: Julien Olivain <ju.o@free.fr>
(cherry picked from commit 2c868ca44d44e92c73758fc9381cb54129f1388c)
Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
Vincent Stehlé 4 هفته پیش
والد
کامیت
06c832c767

+ 58 - 0
package/xen/0007-xen-arm32-avoid-.rodata-to-be-marked-as-executable.patch

@@ -0,0 +1,58 @@
+From 99314e08c6450a841d4f7155b7ce364e0990df1c Mon Sep 17 00:00:00 2001
+From: Jan Beulich <jbeulich@suse.com>
+Date: Fri, 11 Jun 2021 11:19:15 +0200
+Subject: [PATCH] xen/arm32: avoid .rodata to be marked as executable
+
+The section .proc.info lives in .rodata as it doesn't contain any
+executable code. However, the section is still marked as executable
+as the consequence .rodata will also be marked executable.
+
+Xen doesn't use the ELF permissions to decide the page-table mapping
+permission. However, this will confuse disassemblers.
+
+'#execinstr' is now removed on all the pushsection dealing with
+.proc.info
+
+Signed-off-by: Jan Beulich <jbeulich@suse.com>
+[julieng: Rework the commit message]
+Acked-by: Julien Grall <jgrall@amazon.com>
+Upstream: https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=163f47c14737cfa9dfb3240deea356b08caf7614
+Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
+---
+ xen/arch/arm/arm32/proc-v7.S | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/xen/arch/arm/arm32/proc-v7.S b/xen/arch/arm/arm32/proc-v7.S
+index 46bfc7a..8b418ed 100644
+--- a/xen/arch/arm/arm32/proc-v7.S
++++ b/xen/arch/arm/arm32/proc-v7.S
+@@ -30,7 +30,7 @@ brahma15mp_init:
+         mcr   CP32(r0, ACTLR)
+         mov   pc, lr
+ 
+-        .section ".proc.info", #alloc, #execinstr
++        .section ".proc.info", #alloc
+         .type __v7_ca15mp_proc_info, #object
+ __v7_ca15mp_proc_info:
+         .long 0x410FC0F0             /* Cortex-A15 */
+@@ -39,7 +39,7 @@ __v7_ca15mp_proc_info:
+         .long caxx_processor
+         .size __v7_ca15mp_proc_info, . - __v7_ca15mp_proc_info
+ 
+-        .section ".proc.info", #alloc, #execinstr
++        .section ".proc.info", #alloc
+         .type __v7_ca7mp_proc_info, #object
+ __v7_ca7mp_proc_info:
+         .long 0x410FC070             /* Cortex-A7 */
+@@ -48,7 +48,7 @@ __v7_ca7mp_proc_info:
+         .long caxx_processor
+         .size __v7_ca7mp_proc_info, . - __v7_ca7mp_proc_info
+ 
+-        .section ".proc.info", #alloc, #execinstr
++        .section ".proc.info", #alloc
+         .type __v7_brahma15mp_proc_info, #object
+ __v7_brahma15mp_proc_info:
+         .long 0x420F00F0             /* Broadcom Brahma-B15 */
+-- 
+2.48.1
+

+ 73 - 0
package/xen/0008-arm-Avoid-using-solaris-syntax-for-.section-directiv.patch

@@ -0,0 +1,73 @@
+From be0ff8586e38823d6ee08e031c28e5831bbb0991 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 1 Aug 2023 10:49:30 -0700
+Subject: [PATCH] arm: Avoid using solaris syntax for .section directive
+
+Assembler from binutils 2.41 will rejects ([1], [2]) the following
+syntax
+
+.section "name", #alloc
+
+for any other any target other than ELF SPARC. This means we can't use
+it in the Arm code.
+
+So switch to the GNU syntax
+
+.section name [, "flags"[, @type]]
+
+[1] https://sourceware.org/bugzilla/show_bug.cgi?id=11601
+[2] https://sourceware.org/binutils/docs-2.41/as.html#Section
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Reviewed-by: Michal Orzel <michal.orzel@amd.com>
+[jgrall: Reword commit message]
+Acked-by: Julien Grall <jgrall@amazon.com>
+Upstream: https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=dfc490a3740bb7d6889939934afadcb58891fbce
+Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
+---
+ xen/arch/arm/arm32/proc-v7.S | 6 +++---
+ xen/arch/arm/dtb.S           | 2 +-
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/xen/arch/arm/arm32/proc-v7.S b/xen/arch/arm/arm32/proc-v7.S
+index 8b418ed..9869780 100644
+--- a/xen/arch/arm/arm32/proc-v7.S
++++ b/xen/arch/arm/arm32/proc-v7.S
+@@ -30,7 +30,7 @@ brahma15mp_init:
+         mcr   CP32(r0, ACTLR)
+         mov   pc, lr
+ 
+-        .section ".proc.info", #alloc
++        .section .proc.info, "a"
+         .type __v7_ca15mp_proc_info, #object
+ __v7_ca15mp_proc_info:
+         .long 0x410FC0F0             /* Cortex-A15 */
+@@ -39,7 +39,7 @@ __v7_ca15mp_proc_info:
+         .long caxx_processor
+         .size __v7_ca15mp_proc_info, . - __v7_ca15mp_proc_info
+ 
+-        .section ".proc.info", #alloc
++        .section .proc.info, "a"
+         .type __v7_ca7mp_proc_info, #object
+ __v7_ca7mp_proc_info:
+         .long 0x410FC070             /* Cortex-A7 */
+@@ -48,7 +48,7 @@ __v7_ca7mp_proc_info:
+         .long caxx_processor
+         .size __v7_ca7mp_proc_info, . - __v7_ca7mp_proc_info
+ 
+-        .section ".proc.info", #alloc
++        .section .proc.info, "a"
+         .type __v7_brahma15mp_proc_info, #object
+ __v7_brahma15mp_proc_info:
+         .long 0x420F00F0             /* Broadcom Brahma-B15 */
+diff --git a/xen/arch/arm/dtb.S b/xen/arch/arm/dtb.S
+index c703aef..8771daf 100644
+--- a/xen/arch/arm/dtb.S
++++ b/xen/arch/arm/dtb.S
+@@ -1,2 +1,2 @@
+-        .section .dtb,#alloc
++        .section .dtb, "a"
+         .incbin CONFIG_DTB_FILE
+-- 
+2.48.1
+