commit:     abe655fe66964de0a45e8d0c158bdf3958cdfd1c
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 23 18:47:53 2021 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Thu Sep 23 18:47:53 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=abe655fe

sys-boot/grub: fix xen build with binutils-2.36

Closes: https://bugs.gentoo.org/787221
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 sys-boot/grub/files/grub-2.06-binutils-2.36.patch | 44 +++++++++++++++++++++++
 sys-boot/grub/grub-2.06-r1.ebuild                 |  3 +-
 2 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/sys-boot/grub/files/grub-2.06-binutils-2.36.patch 
b/sys-boot/grub/files/grub-2.06-binutils-2.36.patch
new file mode 100644
index 00000000000..5cb327003ad
--- /dev/null
+++ b/sys-boot/grub/files/grub-2.06-binutils-2.36.patch
@@ -0,0 +1,44 @@
+From 5cea201f288246488e2189c49d969d00ebec2898 Mon Sep 17 00:00:00 2001
+From: Michael Chang <[email protected]>
+Date: Fri, 19 Feb 2021 17:40:43 +0800
+Subject: [PATCH] Fix build error in binutils 2.36
+
+The build fails in binutils 2.36
+
+[  520s] cat kernel_syms.lst > syminfo.lst.new
+[  520s] 
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: 
section .note.gnu.property VMA [0000000000400158,0000000000400187] overlaps 
section .bss VMA [000000000000f000,000000000041e1af]
+
+It is caused by assembler now generates the GNU property notes section
+by default. Use the assmbler option -mx86-used-note=no to disable the
+section from being generated to workaround the ensuing linker issue.
+
+Signed-off-by: Michael Chang <[email protected]>
+---
+ configure.ac | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index fa8f74bb9..38ee5f579 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -836,6 +836,20 @@ if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = 
xx86_64 ) && test "x$p
+   TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-sse3 
-mno-3dnow"
+ fi
+ 
++if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ); then
++  AC_CACHE_CHECK([whether -Wa,-mx86-used-note works], 
[grub_cv_cc_mx86_used_note], [
++    CFLAGS="$TARGET_CFLAGS -Wa,-mx86-used-note=no -Werror"
++    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
++      [grub_cv_cc_mx86_used_note=yes],
++      [grub_cv_cc_mx86_used_note=no])
++  ])
++
++  if test "x$grub_cv_cc_mx86_used_note" = xyes; then
++    TARGET_CFLAGS="$TARGET_CFLAGS -Wa,-mx86-used-note=no"
++    TARGET_CCASFLAGS="$TARGET_CCASFLAGS -Wa,-mx86-used-note=no"
++  fi
++fi
++
+ # GRUB doesn't use float or doubles at all. Yet some toolchains may decide
+ # that floats are a good fit to run instead of what's written in the code.
+ # Given that floating point unit is disabled (if present to begin with)

diff --git a/sys-boot/grub/grub-2.06-r1.ebuild 
b/sys-boot/grub/grub-2.06-r1.ebuild
index d80b215cc47..4224c4f643f 100644
--- a/sys-boot/grub/grub-2.06-r1.ebuild
+++ b/sys-boot/grub/grub-2.06-r1.ebuild
@@ -17,10 +17,10 @@ EAPI=7
 # corresponding variable in make.conf or the environment.
 
 if [[ ${PV} == 9999  ]]; then
-       GRUB_AUTORECONF=1
        GRUB_BOOTSTRAP=1
 fi
 
+GRUB_AUTORECONF=1
 PYTHON_COMPAT=( python{2_7,3_{6,7,8,9}} )
 WANT_LIBTOOL=none
 
@@ -55,6 +55,7 @@ PATCHES=(
        "${FILESDIR}"/gfxpayload.patch
        "${FILESDIR}"/grub-2.02_beta2-KERNEL_GLOBS.patch
        "${FILESDIR}"/grub-2.06-test-words.patch
+       "${FILESDIR}"/grub-2.06-binutils-2.36.patch
 )
 
 DEJAVU=dejavu-sans-ttf-2.37

Reply via email to