commit:     54fe12b56e0df99f054a44e7cc424190822ddbd6
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Sat Jan  3 23:23:42 2026 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sat Jan  3 23:27:21 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=54fe12b5

sys-boot/grub: backport fix for lld

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

 sys-boot/grub/files/grub-2.12-image-base.patch | 83 ++++++++++++++++++++++++++
 sys-boot/grub/grub-2.12-r10.ebuild             |  7 ++-
 sys-boot/grub/grub-2.14_rc1-r3.ebuild          |  5 +-
 sys-boot/grub/grub-9999.ebuild                 |  4 +-
 4 files changed, 95 insertions(+), 4 deletions(-)

diff --git a/sys-boot/grub/files/grub-2.12-image-base.patch 
b/sys-boot/grub/files/grub-2.12-image-base.patch
new file mode 100644
index 000000000000..4408cfe91dcc
--- /dev/null
+++ b/sys-boot/grub/files/grub-2.12-image-base.patch
@@ -0,0 +1,83 @@
+https://bugs.gentoo.org/965424
+
+From 1a5417f39a0ccefcdd5440f2a67f84d2d2e26960 Mon Sep 17 00:00:00 2001
+From: Nicholas Vinson <[email protected]>
+Date: Tue, 18 Nov 2025 19:38:07 -0500
+Subject: [PATCH] configure: Check linker for --image-base support
+
+In several scenarios, configure tests assume it's safe to use
+"-Wl,-Ttext,<address>", but starting with ld.lld-21, blindly using that
+flag may result in configure-test failures due to ld.lld failing to
+link. The failure is because ld.lld-21 no longer allows the specified
+address is less than the base address.
+
+However, ld.lld-21+ and ld.bfd-2.44+ both provide support for the
+--image-base flag making it preferable over the older -Ttext flag.
+
+Fixes: https://savannah.gnu.org/bugs/?67662
+
+Signed-off-by: Nicholas Vinson <[email protected]>
+Reviewed-by: Daniel Kiper <[email protected]>
+---
+ acinclude.m4 |  5 +++++
+ configure.ac | 14 ++++++++++++--
+ 2 files changed, 17 insertions(+), 2 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index fa7840f09..70c1912f8 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -79,6 +79,11 @@ AC_DEFUN([grub_PROG_OBJCOPY_ABSOLUTE],
+ [AC_MSG_CHECKING([whether ${TARGET_OBJCOPY} works for absolute addresses])
+ AC_CACHE_VAL(grub_cv_prog_objcopy_absolute,
+ [cat > conftest.c <<\EOF
++asm (
++    ".globl start, _start, __start\n"
++    ".ifdef cmain; .set start = _start = __start = cmain\n.endif\n"
++    ".ifdef _cmain; .set start = _start = __start = _cmain\n.endif\n"
++);
+ void cmain (void);
+ void
+ cmain (void)
+diff --git a/configure.ac b/configure.ac
+index 17937baf4..a282bf7bf 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1461,7 +1461,6 @@ elif test x$grub_cv_target_cc_link_format = x-mi386pe || 
test x$grub_cv_target_c
+   TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/conf/i386-cygwin-img-ld.sc"
+   TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
+   TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/conf/i386-cygwin-img-ld.sc"
+-  TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
+   TARGET_IMG_CFLAGS=
+ else
+   TARGET_APPLE_LINKER=0
+@@ -1469,7 +1468,6 @@ else
+   TARGET_IMG_LDSCRIPT=
+   TARGET_IMG_LDFLAGS='-Wl,-N'
+   TARGET_IMG_LDFLAGS_AC='-Wl,-N'
+-  TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
+   TARGET_IMG_CFLAGS=
+ fi
+ 
+@@ -1795,6 +1793,18 @@ LIBS=""
+ grub_ASM_USCORE
+ grub_PROG_TARGET_CC
+ if test "x$TARGET_APPLE_LINKER" != x1 ; then
++AX_CHECK_LINK_FLAG([-Wl,--image-base,0x400000],
++    [TARGET_IMG_BASE_LDOPT="-Wl,--image-base"],
++    [TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"],
++    [],
++    [AC_LANG_SOURCE([
++asm (".globl start; start:");
++asm (".globl _start; _start:");
++asm (".globl __start; __start:");
++void __main (void);
++void __main (void) {}
++int main (void);
++    ])])
+ grub_PROG_OBJCOPY_ABSOLUTE
+ fi
+ grub_PROG_LD_BUILD_ID_NONE
+-- 
+2.52.0
+

diff --git a/sys-boot/grub/grub-2.12-r10.ebuild 
b/sys-boot/grub/grub-2.12-r10.ebuild
index 3c5395caec32..e6668ae35315 100644
--- a/sys-boot/grub/grub-2.12-r10.ebuild
+++ b/sys-boot/grub/grub-2.12-r10.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
@@ -24,6 +24,7 @@ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/grub.asc
 
 if [[ -n ${GRUB_AUTORECONF} ]]; then
        inherit autotools
+       BDEPEND+=" dev-build/autoconf-archive"
 fi
 
 inherit bash-completion-r1 eapi9-ver flag-o-matic multibuild optfeature
@@ -33,6 +34,7 @@ DESCRIPTION="GNU GRUB boot loader"
 HOMEPAGE="https://www.gnu.org/software/grub/";
 
 MY_P=${P}
+
 if [[ ${PV} != 9999 ]]; then
        inherit verify-sig
 
@@ -52,7 +54,7 @@ if [[ ${PV} != 9999 ]]; then
                "
                S=${WORKDIR}/${P%_*}
        fi
-       BDEPEND="verify-sig? ( sec-keys/openpgp-keys-grub )"
+       BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-grub )"
        KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
 else
        inherit git-r3
@@ -67,6 +69,7 @@ PATCHES=(
        "${WORKDIR}"/grub-2.12-bash-completion.patch
        "${FILESDIR}"/grub-2.12-zfs-zstd-compression-support.patch
        "${FILESDIR}"/grub-2.12-fix-for-bash-completion-_split_longopt.patch
+       "${FILESDIR}"/grub-2.12-image-base.patch
 )
 
 DEJAVU=dejavu-sans-ttf-2.37

diff --git a/sys-boot/grub/grub-2.14_rc1-r3.ebuild 
b/sys-boot/grub/grub-2.14_rc1-r3.ebuild
index b999f4f2177f..e5735945a7e4 100644
--- a/sys-boot/grub/grub-2.14_rc1-r3.ebuild
+++ b/sys-boot/grub/grub-2.14_rc1-r3.ebuild
@@ -26,6 +26,7 @@ WANT_LIBTOOL=none
 
 if [[ -n ${GRUB_AUTORECONF} ]]; then
        inherit autotools
+       BDEPEND+=" dev-build/autoconf-archive"
 fi
 
 inherit bash-completion-r1 eapi9-ver flag-o-matic multibuild optfeature
@@ -35,6 +36,7 @@ DESCRIPTION="GNU GRUB boot loader"
 HOMEPAGE="https://www.gnu.org/software/grub/";
 
 MY_P=${P}
+
 if [[ ${PV} != 9999 ]]; then
        if [[ ${PV} == *_alpha* || ${PV} == *_beta* || ${PV} == *_rc* ]]; then
                # The quote style is to work with <=bash-4.2 and >=bash-4.3 
#503860
@@ -51,7 +53,7 @@ if [[ ${PV} != 9999 ]]; then
                "
                S=${WORKDIR}/${P%_*}
        fi
-       BDEPEND="
+       BDEPEND+="
                verify-sig? (
                        sec-keys/openpgp-keys-grub
                        sec-keys/openpgp-keys-unifont
@@ -68,6 +70,7 @@ PATCHES=(
        "${FILESDIR}"/grub-2.02_beta2-KERNEL_GLOBS.patch
        "${FILESDIR}"/grub-2.06-test-words.patch
        "${FILESDIR}"/grub-2.14_rc1-configure.ac-avoid-bashisms.patch
+       "${FILESDIR}"/grub-2.12-image-base.patch
 )
 
 DEJAVU_VER=2.37

diff --git a/sys-boot/grub/grub-9999.ebuild b/sys-boot/grub/grub-9999.ebuild
index 447fff13f574..d5ea70dcf75f 100644
--- a/sys-boot/grub/grub-9999.ebuild
+++ b/sys-boot/grub/grub-9999.ebuild
@@ -26,6 +26,7 @@ WANT_LIBTOOL=none
 
 if [[ -n ${GRUB_AUTORECONF} ]]; then
        inherit autotools
+       BDEPEND+=" dev-build/autoconf-archive"
 fi
 
 inherit bash-completion-r1 eapi9-ver flag-o-matic multibuild optfeature
@@ -35,6 +36,7 @@ DESCRIPTION="GNU GRUB boot loader"
 HOMEPAGE="https://www.gnu.org/software/grub/";
 
 MY_P=${P}
+
 if [[ ${PV} != 9999 ]]; then
        if [[ ${PV} == *_alpha* || ${PV} == *_beta* || ${PV} == *_rc* ]]; then
                # The quote style is to work with <=bash-4.2 and >=bash-4.3 
#503860
@@ -51,7 +53,7 @@ if [[ ${PV} != 9999 ]]; then
                "
                S=${WORKDIR}/${P%_*}
        fi
-       BDEPEND="
+       BDEPEND+="
                verify-sig? (
                        sec-keys/openpgp-keys-grub
                        sec-keys/openpgp-keys-unifont

Reply via email to