ИМХО, это можно сделать вообще топорно сделать: смержить два файла:
екзешник и so-шку. Потом в екзешнике в main() сделать мапление второй
части файла в настоящую so-библиотеку, и юзать ее через dlopen/dlsym.
А можно после мапления выставить LD_LIBRARY_PATH или что-нибудь вроде
LD_PRELOAD, чтобы затянулась эта новая библиотека, а затем execv...()
на самого себя.