runtime linking (was: Aliasing text and data segments of a process)

Dave Jones djones at megatest.UUCP
Thu Feb 4 08:17:03 AEST 1988


in article <208 at sdti.UUCP>, mjy at sdti.UUCP (Michael J. Young) says:
> 
> In article <246 at vcvax1.UUCP> naren at vcvax1.UUCP (naren) writes:
>>	Doug Gwyn is right about architectures that enforce distinctions 
>>between code and data spaces (ex: 80386). On UNIX/386, an sbrk() allocates 
>>space in the Data Segment of the process. Type casting this pointer and 
>>issuing a 'call' to this address will result in a protection exception. 
> 
> This happens on many other 80x86 ports as well.  Microport (the only 286
> port I'm familiar with) enforces separation between text and data regions
> as well.  Unfortunately, they don't seem to provide ld(1) options to
> override the protection. 

Well, don't BUY those operating systems! (Too late?)

On a related note:  I have some applications for which the runtime
load trick is just perfect. The SunOS-3 linker, ld(1), supports the concept.
(-A flag.)

But if you do the link-edit part, ld -A, before load time, the incremental 
load-file is dependant on the symbol resolution of the main program remaining
unchanged.  So, one wants to do the incremental link-edit at runtime.  

But ld(1) is too SLOWWWWW.  I wrote a replacement, "dynald", to do the 
incremental link, and it does a small file in from 6 to 50 milliseconds.
The SunOS ld(1) takes six seconds!  It makes the assembler, as(1), look almost
speedy by comparison.



More information about the Comp.unix.wizards mailing list