[ros-kernel] ReactOS 0.3.0 Release Plans

Barubary barubary at cox.net
Sat Sep 18 00:06:36 CEST 2004


>> - *Relocatable EXEs*
>
> Damn, where did you get this? To my best knowledge binutils support 
> relocatable executables.

I never found a way, and neither did the ReactOS team.  binutils seems to 
assume that EXEs are never relocatable, while DLLs always are.  Both 
statements are false, though a non-relocatable DLL isn't very useful.

ntoskrnl.exe must always be relocatable, because it can run from either 
80010000 or C0010000, at ntldr's (or whatever ReactOS's equivalent is) 
option.  Microsoft's ntoskrnl.exe is a relocatable EXE.  Because binutils 
isn't capable of making a relocatable EXE, ReactOS's ntoskrnl.exe is 
actually a DLL.

With Microsoft's link.exe, the default is for DLLs to be relocatable and 
everything else not.  To force being not relocatable, use /FIXED.  To force 
being relocatable, used /FIXED:NO.  /FIXED:NO is what is probably what is 
used internally at Microsoft to build ntoskrnl.exe.

It is also known that Microsoft's Xbox development kit uses /FIXED:NO when 
building the EXE of an Xbox application - it is subsequently converted from 
EXE to XBE by "imagebld".  Conversion to XBE changes the base address from 
00400000 to 00020000, so naturally, the relocation information must be 
present for it to do this.

Melissa 



More information about the Ros-kernel mailing list