Subject: Re: exec_elf.c
To: None <pefo@enea.se>
From: Gordon W. Ross <gwr@mc.com>
List: tech-kern
Date: 03/25/1996 12:03:09
> From: Per Fogelstrom <pefo@enea.se>
> Date: Sun, 24 Mar 1996 00:36:15 +0100 (MET)

> Well, I assume that all people concerned are subscribed to this list.
> 
> I'm now at the point regarding shared libs for mips that i need to
> select the path for fixing exec_elf.c or the mips elf.c code.
> ld.so loads, initializes but now need the aux args...
> 
> a) mips/elf.c dosen't set up auxinfo and loads interpreters.
> 
> b) exec_elf.c does not do demand paging.
> 
> Ok, i'll probably do some kind of merge between the two. But:
> 
> 1) why isn't exec_elf.c doing demand paging? mips/elf.c does it
>    at least on text segments. so what's the catch? some experimenting
>    with mips/elf.c to demand page the data segment did not work out
>    well. Any hints before i dive into the vm code?

I haven't had a chance to play with it, but I think exec_elf.c
can be made to do demand paging if it correctly computes the
boundaries between text/data/bss segments and sets protections
appropriately.  Note, you can not just use the boundaries given
by the ELF section info (in general) because they may not be
aligned correctly.  For example, the boundary between text/data
has to be rounded down to a page boundary, which actually makes
the last partial page of text writable.  (Map text COW!)  Also
have to round up the data/bss boundary (where data is COW) and
zero out the bss part of the boundary page.  The rest of BSS can
be demand paged from a zero-fill-on-demand (ZFOD) pager.

Gordon