I've been thinking about this for a while because I've observed that even really fundamental libraries like libc have a GOT/PLT, consisting of important functionality such as malloc() and its friends.
Is it even possible to create a shared library that has no GOT/PLT? Would such a library ever crop up in the wild, outside of an academic exercise? (If it helps, consider exclusively the x86 platform)
My gut tells me the answers to those questions are "no" and "yes" respectively, but I'm not 100% certain on either.
Is it possible that a .so file that just contains a list of C types won't have a GOT/PLT? Maybe, but I can't understand why that would occur in practice when you can just #include a .h file to do that!