I wonder if this would even be possible to do with non-relocatable code. You'd probably have to use a child process that was smart about where it was executing in memory, then manually load the various code and data segments. Could be an interesting project.