Currently, I am looking into the SafeStack feature in llvm. Clang 5 documentation notes the compatibility limitations of SafeStack. http://clang.llvm.org/docs/SafeStack.html#known-compatibility-limitations
“SafeStack supports linking statically modules that are compiled with and without SafeStack. An executable compiled with SafeStack can load dynamic libraries that are not compiled with SafeStack. At the moment, compiling dynamic libraries with SafeStack is not supported.”
My question is why compiling dynamic libraries with SafeStack is not supported(or working). When I tested with a simple example on a X86 machine, it worked just fine. (I compiled both the main program and the dynamic library with SafeStack option, and link the main program against the dynamic library. The main function calls a function in the dynamic library and both functions have unsafe stack.) I couldn’t think of any reason why it would not work especially with dynamic libraries.
It would be appreciated, if you could let me know the detail of the SafeStack’s limitation in dynamic libraries.
Thank you so much!