> The solaris dynamic linker does this at run time, it collapses
> together only the functions/data which your program could ever
> reference into one contiguous chunk of pages.
Mhm, you mean, it moves the functions and data around? This looks
interesting. How does the Solaris linker find this out?
On the presentation at Usenix, they used feed the profiling
information into this executable-reorganizer program and the output
was this "optimized" executable.
Actually, I just found the program, from the cord(1) man page:
In the example below, a program foo is run through pixie(1) which
generates foo.pixie. The instrumented executable is run and prof is used
to produce a feedback file from the profiled data. Cord is then used to
reorder the procedures in foo, generating a new binary foo.cord.
prof -pixie -feedback foo
cord foo foo.fb
In the paper they presented some other optimizations to dynamically
linked programs. Let me see if I can get the paper from the Usenix