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>
This commit is contained in:
Vincent Stehlé
2025-07-08 12:01:15 +02:00
committed by Julien Olivain
parent 250a115c32
commit 2c868ca44d
2 changed files with 131 additions and 0 deletions

View File

@@ -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

View File

@@ -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