On 2/27/20 9:03 PM, Ondrej Mosnacek wrote: > Ulrich, could you help us understand the macros you proposed to add to > the SELinux libraries (probably a very long time ago)? Specifically, > we are talking about those defined in "dso.h" header files such as > this one [1]. See also GH issue 204 [2] for related discussion. The use of the hidden infrastructure is not just a means to reduce overhead in the form of PLTs. It also ensures that internals for the library don't leak out. If calls between functions within the same DSO use the PLT they can be intercepted by DSO earlier in the search path of the dynamic linker. This can have unwanted consequences. I advise that this isn't changed. The infrastructure to do this should change, though. You could look at the code glibc uses today. The functionality is still there, just slightly changed. An alternative is to use gcc's -fno-semantic-interposition option. This should ensure that PLT entries are avoided. For Python this was used to achieve significant speedups due to the PLT reduction. I know you don't care about speed that much but this is a way to achieve it. Python uses LTO but since the compiler is told about the symbol use there are not problems.