commit:     a7a8cf1a580486ae3923fea714f1e6c09a032757
Author:     Yuan Liao <liaoyuan <AT> gmail <DOT> com>
AuthorDate: Sat Mar 30 23:08:38 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Apr  1 06:49:44 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a7a8cf1a

sys-apps/kexec-tools: Add patch for build error with binutils 2.42

The patch carries upstream commit
328de8e00e298f00d7ba6b25dc3950147e9642e6.

Bug: https://bugs.gentoo.org/925010
Signed-off-by: Yuan Liao <liaoyuan <AT> gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/36007
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../kexec-tools-2.0.28-binutils-2.42-x86_64.patch  | 94 ++++++++++++++++++++++
 sys-apps/kexec-tools/kexec-tools-2.0.28.ebuild     |  1 +
 2 files changed, 95 insertions(+)

diff --git 
a/sys-apps/kexec-tools/files/kexec-tools-2.0.28-binutils-2.42-x86_64.patch 
b/sys-apps/kexec-tools/files/kexec-tools-2.0.28-binutils-2.42-x86_64.patch
new file mode 100644
index 000000000000..31a18d0bf5e8
--- /dev/null
+++ b/sys-apps/kexec-tools/files/kexec-tools-2.0.28-binutils-2.42-x86_64.patch
@@ -0,0 +1,94 @@
+From 328de8e00e298f00d7ba6b25dc3950147e9642e6 Mon Sep 17 00:00:00 2001
+From: Michel Lind <[email protected]>
+Date: Tue, 30 Jan 2024 04:14:31 -0600
+Subject: Fix building on x86_64 with binutils 2.41
+
+Bug: https://bugs.gentoo.org/925010
+
+Newer versions of the GNU assembler (observed with binutils 2.41) will
+complain about the ".arch i386" in files assembled with "as --64",
+with the message "Error: 64bit mode not supported on 'i386'".
+
+Fix by moving ".arch i386" below the relevant ".code32" directive, so
+that the assembler is no longer expecting 64-bit instructions to be used
+by the time that the ".arch i386" directive is encountered.
+
+Based on similar iPXE fix:
+https://github.com/ipxe/ipxe/commit/6ca597eee
+
+Signed-off-by: Michel Lind <[email protected]>
+Signed-off-by: Simon Horman <[email protected]>
+---
+ purgatory/arch/i386/entry32-16-debug.S | 2 +-
+ purgatory/arch/i386/entry32-16.S       | 2 +-
+ purgatory/arch/i386/entry32.S          | 2 +-
+ purgatory/arch/i386/setup-x86.S        | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/purgatory/arch/i386/entry32-16-debug.S 
b/purgatory/arch/i386/entry32-16-debug.S
+index 5167944d..12e11649 100644
+--- a/purgatory/arch/i386/entry32-16-debug.S
++++ b/purgatory/arch/i386/entry32-16-debug.S
+@@ -25,10 +25,10 @@
+       .globl entry16_debug_pre32
+       .globl entry16_debug_first32
+       .globl entry16_debug_old_first32
+-      .arch i386
+       .balign 16
+ entry16_debug:
+       .code32
++      .arch i386
+       /* Compute where I am running at (assumes esp valid) */
+       call    1f
+ 1:    popl    %ebx
+diff --git a/purgatory/arch/i386/entry32-16.S 
b/purgatory/arch/i386/entry32-16.S
+index c051aab0..eace0958 100644
+--- a/purgatory/arch/i386/entry32-16.S
++++ b/purgatory/arch/i386/entry32-16.S
+@@ -20,10 +20,10 @@
+ #undef i386   
+       .text
+       .globl entry16, entry16_regs
+-      .arch i386
+       .balign 16
+ entry16:
+       .code32
++      .arch i386
+       /* Compute where I am running at (assumes esp valid) */
+       call    1f
+ 1:    popl    %ebx
+diff --git a/purgatory/arch/i386/entry32.S b/purgatory/arch/i386/entry32.S
+index f7a494f1..8ce9e316 100644
+--- a/purgatory/arch/i386/entry32.S
++++ b/purgatory/arch/i386/entry32.S
+@@ -20,10 +20,10 @@
+ #undef i386
+ 
+       .text
+-      .arch   i386
+       .globl entry32, entry32_regs
+ entry32:
+       .code32
++      .arch   i386
+ 
+       /* Setup a gdt that should that is generally usefully */
+       lgdt    %cs:gdt
+diff --git a/purgatory/arch/i386/setup-x86.S b/purgatory/arch/i386/setup-x86.S
+index 201bb2cb..a212eed4 100644
+--- a/purgatory/arch/i386/setup-x86.S
++++ b/purgatory/arch/i386/setup-x86.S
+@@ -21,10 +21,10 @@
+ #undef i386
+ 
+       .text
+-      .arch   i386
+       .globl purgatory_start
+ purgatory_start:
+       .code32
++      .arch   i386
+ 
+       /* Load a gdt so I know what the segment registers are */
+       lgdt    %cs:gdt
+-- 
+cgit 1.2.3-korg
+

diff --git a/sys-apps/kexec-tools/kexec-tools-2.0.28.ebuild 
b/sys-apps/kexec-tools/kexec-tools-2.0.28.ebuild
index c107633e4b71..a19771a7837b 100644
--- a/sys-apps/kexec-tools/kexec-tools-2.0.28.ebuild
+++ b/sys-apps/kexec-tools/kexec-tools-2.0.28.ebuild
@@ -39,6 +39,7 @@ CONFIG_CHECK="~KEXEC"
 PATCHES=(
        "${FILESDIR}"/${PN}-2.0.4-disable-kexec-test.patch
        "${FILESDIR}"/${PN}-2.0.4-out-of-source.patch
+       "${FILESDIR}"/${PN}-2.0.28-binutils-2.42-x86_64.patch # Bug 925010
 )
 
 pkg_setup() {

Reply via email to