On Tue, Nov 18, 2025 at 07:38:07PM -0500, Nicholas Vinson wrote:
> 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: 67662
> Signed-off-by: Nicholas Vinson <[email protected]>
To save time for people who got the following error as I did after
applying this patch, it means that 'autoconf-archive' is missing in the
system.
configure.ac:1800: error: possibly undefined macro: AC_LANG_SOURCE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1
The error is completely misleading. The real missing macro is
"AX_CHECK_LINK_FLAG" and 'autoconf' could not detect the error
correctly...
Gary Lin
> ---
> 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.51.2
>
>
> _______________________________________________
> Grub-devel mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/grub-devel
_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel