|
From: Brian P. <br...@sg...> - 2001-10-15 15:50:32
|
Right now FreeLoader is fully gcc+binutils compliant and will build under most x86 gcc dists. It uses AT&T assembly. The real problem with MingW is that it cannot assemble 16-bit code. Every time I use the .code16 directive it complains that it cannot represent reloc type BFD_RELOC_16. For some reason they have the 16-bit code support compiled out of MingW. AFAIK this is the only pending issue that is keeping FreeLoader from compiling. About ReactOS being multiboot compliant -- I don't see how we can accomplish this without an intermediate boot loader. ReactOS will need to have hardware & registry information passed in from the boot loader, and the list of modules to load is specified in the registry. All this doesn't fit very well into the multiboot spec. Brian -----Original Message----- From: Robert Collins [mailto:rob...@it...] Sent: Monday, October 15, 2001 7:36 AM To: ros...@re... Subject: [ros-kernel] Re: Gcc and binutils release ----- Original Message ----- From: "Robert Collins" <rob...@it...> To: <ros...@re...> Sent: Monday, October 15, 2001 9:30 PM Subject: [ros-kernel] Re: Gcc and binutils release > All I know is that on Linux, 16 bit code for bootloaders is generated > and linked by the gcc-gas-ld toolchain. I can look into their makefiles > for you guys ... if you'd like. > Side question: Can someone remind me why making ReactOS multi-boot compliant so that Grub et al can boot it was a bad thing? - Grub should build under cygwin very happily. The makefiles would need a little tweaking for use under mingw without cygwin. --- and now onto the Main issue: generating boot code from gcc + binutils. Grub is built from gcc + binutils. http://savannah.gnu.org/cgi-bin/viewcvs/grub/grub/stage1/ contains the stage1 portion of Grub, which is the assembly code. They simply use -fno-builtin -nostdinc on the commandline to gcc to prevent accidentally pulling in a library header... So I can offer the following: It *is* possible with a standard x86 targeted gcc+recent binutils (all the ReactOS ones are ok) to generate 16 bit assembly suitable for bootstrapping a bootloader. I can see several options: 1) convert freeloader to use standard gcc+binutils as Grub does. 2) make ReactOS multiboot compliant so that it can be used with Grub or other multiboot bootloaders. then phase out freeloader, or make it a multiboot compliant bootloader. 3) Start from scratch under gcc+binutils. I suspect that 1) is actually quite easy and is the way to go... However you'll need to get gcc to support Intel asm memnomics or change to AT&T as it only supports AT&T by default. I'm sure there are patchs out there to give gcc Intel support, this came up somewhere else recently I think... maybe even here:}. Rob ==================================================== = To remove yourself from this mailing list, go to = = http://www.reactos.com/home/mailing.html = ==================================================== ==================================================== = To remove yourself from this mailing list, go to = = http://www.reactos.com/home/mailing.html = ==================================================== |