Preloading is done by doing a binary patch to the library to add it as a dependency. The 2.3 series of glibc will let this be done with just a wrapper that calls ld.so and with the --preload option.