I reworked this patch with the hope that these changes will work with
the cygwin target. Unfortunately, I don't have a way to test these
changes using cygwin.
On 2/13/26 20:05, Nicholas Vinson wrote:
The i386-pc target now uses a linker script, so -Ttext is no longer
required.
Signed-off-by: Nicholas Vinson <[email protected]>
---
acinclude.m4 | 13 ++++++++++++-
configure.ac | 29 ++++++++++++++++++++++++++---
2 files changed, 38 insertions(+), 4 deletions(-)
diff --git a/acinclude.m4 b/acinclude.m4
index fa7840f09..478aab6d3 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -93,7 +93,18 @@ else
fi
grub_cv_prog_objcopy_absolute=yes
for link_addr in 0x2000 0x8000 0x7C00; do
- if AC_TRY_COMMAND([${CC-cc} ${TARGET_CFLAGS} ${TARGET_LDFLAGS} -nostdlib
${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},$link_addr conftest.o -o
conftest.exec]); then :
+
+ target_img_base_ld="${TARGET_IMG_BASE_LDOPT}"
+ case "$target_img_base_ld" in
+ *_grub_text_base)
+ target_img_base_ld="${target_img_base_ld}=$link_addr"
+ ;;
+ *)
+ target_img_base_ld="${target_img_base_ld},$link_addr"
+ ;;
+ esac
+
+ if AC_TRY_COMMAND([${CC-cc} ${TARGET_CFLAGS} ${TARGET_LDFLAGS} -nostdlib
${TARGET_IMG_LDFLAGS_AC} ${target_img_base_ld} conftest.o -o conftest.exec]);
then :
else
AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr])
fi
diff --git a/configure.ac b/configure.ac
index 3106bb11d..4febd084d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1454,6 +1454,7 @@ if test x$grub_cv_target_cc_link_format = x-arch,i386 ||
test x$grub_cv_target_c
TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
+ TARGET_IMG_BASE_LDOPT_ARG_SEP=","
TARGET_LDFLAGS_OLDMAGIC=""
elif test x$grub_cv_target_cc_link_format = x-mi386pe || test
x$grub_cv_target_cc_link_format = x-mi386pep ; then
TARGET_APPLE_LINKER=0
@@ -1461,7 +1462,8 @@ 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.lds"
TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/conf/i386-cygwin-img.lds"
- TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
+ TARGET_IMG_BASE_LDOPT=
This change is a mistake. I'll fix and resend this patch.
Regards,
Nicholas Vinson
+ TARGET_IMG_BASE_LDOPT_ARG_SEP=","
TARGET_IMG_CFLAGS=
else
TARGET_APPLE_LINKER=0
@@ -1469,7 +1471,16 @@ else
TARGET_IMG_LDSCRIPT=
TARGET_IMG_LDFLAGS='-Wl,-N'
TARGET_IMG_LDFLAGS_AC='-Wl,-N'
- TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
+ if test "x$target_cpu-$platform" != "xi386-pc"; then
+ TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
+ TARGET_IMG_BASE_LDOPT_ARG_SEP=","
+ else
+ TARGET_IMG_BASE_LDOPT="-Wl,--defsym,_grub_text_base"
+ TARGET_IMG_BASE_LDOPT_ARG_SEP="="
+ TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/conf/i386-pc-kernel.lds"
+ TARGET_IMG_LDFLAGS="${TARGET_IMG_LDFLAGS} -Wl,-T${TARGET_IMG_LDSCRIPT}"
+ TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/conf/i386-pc-kernel.lds"
+ fi
TARGET_IMG_CFLAGS=
fi
@@ -1802,7 +1813,18 @@ if test "x$target_cpu" = xi386; then
if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
if test ! -z "$TARGET_IMG_LDSCRIPT"; then
# Check symbols provided by linker script.
- CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC}
${TARGET_IMG_BASE_LDOPT},0x8000"
+ target_img_base_ld="${TARGET_IMG_BASE_LDOPT}"
+ case "$target_img_base_ld" in
+ *_grub_text_base)
+ target_img_base_ld="${target_img_base_ld}="
+ ;;
+ *)
+ target_img_base_ld="${target_img_base_ld},"
+ ;;
+ esac
+ target_img_base_ld="${target_img_base_ld}0x8000"
+ CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC}
${target_img_base_ld}"
+ target_img_base_ld=""
fi
grub_CHECK_BSS_START_SYMBOL
grub_CHECK_END_SYMBOL
@@ -2404,6 +2426,7 @@ AC_SUBST(TARGET_CCASFLAGS)
AC_SUBST(TARGET_IMG_LDFLAGS)
AC_SUBST(TARGET_IMG_CFLAGS)
AC_SUBST(TARGET_IMG_BASE_LDOPT)
+AC_SUBST(TARGET_IMG_BASE_LDOPT_ARG_SEP)
AC_SUBST(TARGET_APPLE_LINKER)
AC_SUBST(HOST_CFLAGS)
_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel