>I had an interesting conversation about telephony the other day. They
>handle upgrade by letting old processes run to completion while new process
>start with the new code. But this has no way for state in an existing
>process to roll over into a new one, unless you provide an interface to be
>able to do that, and that interface (and the state that passes through it)
>is in essence the real persistence/upgrade code.
Extending the digression slightly, it used to be even uglier than this.
For really hot patches, they used to patch the functions in place while executing by blasting the leading instruction of the function with a jump to the new function location.
A certain amount of the perversity of the COFF file formatted can be attributed to a misguided desire to make this exceptional situation simple. The COFF format was originally designed specifically to help deal with the need for such patches.
Jonathan S. Shapiro, Ph. D.
IBM T.J. Watson Research Center
Phone: +1 914 784 7085 (Tieline: 863)
Fax: +1 914 784 7595