On Tue, Feb 10, 2026 at 04:47:41PM +0100, Daniel Kiper wrote: > On Mon, Feb 09, 2026 at 07:43:28PM -0500, Nicholas Vinson wrote: > > Starting with ld.llvm-21, any attempt create a non-relocatable binary and > > set > > one more secton addresses below 0x400000 results in a linker error. > > Furthermore, > > the differences between ld.bfd and ld.lld made finding a proper set of > > command-line flags tht worked with both linkers and bypass the image base > > address restriction difficult. Therefore, the approach of using a custom > > linker > > script was adopted to solve the issue. > > > > This approach was tested using: > > > > ../configure CC=clang CXX=clang++ LDFLAGS="-fuse-ld=lld" > > TARGET_LDFLAGS="-fuse-ld=lld" --with-platform=pc > > ../configure CC=clang CXX=clang++ --with-platform=pc (both with ld.lld as > > the default and ld.bfd as the default) > > ../configure CC=gcc CXX=g++ --with-platform=pc > > > > and a VM was used for testing. To build the disk images the VM was booted > > with, > > the following scripts were used: > > [...] > > > In all cases, the VM successfully booted to the standard GRUB prompt. > > > > Nicholas Vinson (8): > > i386/pc/int.h: conditionally apply regparm attr. > > grub-core: Update kernel image generation > > i386-cygwin-img-ld.sc -> i386-cygwin-img.lds > > Revert "configure: Print a more helpful error if autoconf-archive is > > not installed" > > Revert "configure: Check linker for --image-base support" > > Revert "INSTALL: Add note that the GNU Autoconf Archive may be needed" > > configure: drop -Ttext checks for i386-pc > > For all these patches Reviewed-by: Daniel Kiper <[email protected]>...
Sadly your patch set breaks Windows build... :-( $ ./configure --build=x86_64-linux-gnu --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-platform=pc $ make [...] i686-w64-mingw32-gcc -std=gnu99 -fno-common -Os -m32 -Wall -W -Wshadow -Wpointer-arith -Wundef -Wchar-subscripts -Wcomment -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wfloat-equal -Wformat-extra-args -Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-braces -Wmissing-format-attribute -Wmultichar -Wparentheses -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings -Wnested-externs -Wstrict-prototypes -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations -Wextra -Wattributes -Wendif-labels -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wmissing-field-initializers -Wnonnull -Woverflow -Wvla -Wpointer-to-int-cast -Wstrict-aliasing -Wvariadic-macros -Wvolatile-register-var -Wpointer-sign -Wmissing-include-dirs -Wmissing-prototypes -Wmissing-declarations -Wformat=2 -march=i386 -mrtd -mregparm=3 -falign-functions=1 -falign-loops=1 -falign-jumps=1 -freg-struct-return -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -msoft-float -fno-omit-frame-pointer -fno-dwarf2-cfi-asm -fno-reorder-functions -mno-stack-arg-probe -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-ident -fno-stack-protector -Wtrampolines -Werror -DGRUB_HAS_PCI -fno-builtin -m32 -Wl,-mi386pe -nostdlib -Wl,-N -Wl,-S -Wl,-T../conf/i386-cygwin-img.lds -Wl,-T../conf/i386-pc-kernel.lds -Wl,-Ttext=0x8200 -o lzma_decompress.image.exe boot/i386/pc/lzma_decompress_image-startup_raw.o /usr/bin/i686-w64-mingw32-ld:../conf/i386-pc-kernel.lds:19: undefined symbol `_grub_text_base' referenced in expression /usr/bin/i686-w64-mingw32-ld:../conf/i386-pc-kernel.lds:19: undefined symbol `_grub_text_base' referenced in expression collect2: error: ld returned 1 exit status collect2: error: ld returned 1 exit status /usr/bin/i686-w64-mingw32-ld:../conf/i386-pc-kernel.lds:19: undefined symbol `_grub_text_base' referenced in expression make[3]: *** [Makefile:33123: boot.image.exe] Error 1 make[3]: *** Waiting for unfinished jobs.... make[3]: *** [Makefile:33145: boot_hybrid.image.exe] Error 1 collect2: error: ld returned 1 exit status /usr/bin/i686-w64-mingw32-ld:../conf/i386-pc-kernel.lds:19: undefined symbol `_grub_text_base' referenced in expression collect2: error: ld returned 1 exit status make[3]: *** [Makefile:33276: cdboot.image.exe] Error 1 make[3]: *** [Makefile:36161: pxeboot.image.exe] Error 1 /usr/bin/i686-w64-mingw32-ld:../conf/i386-pc-kernel.lds:19: undefined symbol `_grub_text_base' referenced in expression /usr/bin/i686-w64-mingw32-ld:../conf/i386-pc-kernel.lds:19: undefined symbol `_grub_text_base' referenced in expression collect2: error: ld returned 1 exit status collect2: error: ld returned 1 exit status /usr/bin/i686-w64-mingw32-ld:../conf/i386-pc-kernel.lds:19: undefined symbol `_grub_text_base' referenced in expression collect2: error: ld returned 1 exit status make[3]: *** [Makefile:35303: lnxboot.image.exe] Error 1 make[3]: *** [Makefile:33499: diskboot.image.exe] Error 1 make[3]: *** [Makefile:35449: lzma_decompress.image.exe] Error 1 /usr/bin/i686-w64-mingw32-ld:../conf/i386-pc-kernel.lds:19: undefined symbol `_grub_text_base' referenced in expression collect2: error: ld returned 1 exit status make[3]: *** [Makefile:35180: kernel.exec.exe] Error 1 I suppose that the problem is due to inclusion in the command line two linker scripts... Daniel _______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
