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

Reply via email to