> > > > This version can load only such images where the .text and .data
> > > > sections are countinously placed in the memory. I'll finish the
> > > > non-countinuous case support in some days.
> Please someone enlighten me... I could find no docs on it, only Ralf's code.
> Does such an executable exist where the .text and .data regions aren't placed
> continuously in the memory ? i.e. the .text let's say from 0x8003000 to
> 0x8004000 and the .data from 0x8006000 to 0x8007000 so there's a gap
> between them. So far I haven't seen a file like this, but in
> theory one can imagine... milo assumes it's continuos.
> Anyway, it's just a 20 lines of code matter.
Well, Milo was written to deal with OMAGIC (gcc/ld option -N) a.out
executables. For these .text and .data are always continous. OMAGIC
is best for the kernel since it uses the least space and the kernel
isn't demand pageable anyway ...
ZMAGIC and QMAGIC are very similar to OMAGIC. For these the startaddress
of .data is the endaddress of .text aligned up to the next page boundary.
For the Linux/i386 and Linux/MIPS a.out linker based on binutils 2.5.2
and 2.6 QMAGIC is the format produced without giving special options;
it is impossible to create ZMAGIC. There are also NMAGIC executables.
The only difference is that for this type .text is readonly. And the
difference between ZMAGIC and QMAGIC executables is that QMAGIC gets
loaded at address PAGE_SIZE including the 32 bytes big a.out header while
ZMAGIC files get loaded at address zero.
Note also that from what I wrote follows that there can't be an a.out
executable with the addresses from your example. .text from 0x80003000 -
0x80005678 and .data from 0x80006000 to 0x8000789a would be valid
examples for ZMAGIC and QMAGIC a.out on a machine with 4kb page size.
For OMAGIC there would be no gap between .text and .data.
Hope that explains it ...