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
