1. Microsoft has banned GPLv3 and similar licences to be used in bootloader
2. There are some agreements that you have to sign with Microsoft with go beyond UEFI. These can be problematic.
Real Programs don't use shared text. Otherwise, how can they use functions for scratch space after they are finished calling them?