Hey, there,
Recently I'm trying to build a non-gnu toolchain with musl, clang, llvm, libc++, compiler-rt. While static-pie feature is very useful in our project, musl-clang force to link a dynamic linker into the binary. This behavior will cause a crash in c++ programs with compiler-rt and libc++. For more details and reproduction of this bug, you can read my previous email to llvm-dev mail lists.[1]
I spend a few days to find the reason -- in function _dlstart_c, the program will get a "base" of relocation in /lib/ld-musl-x86_64.so.1, which is not right when it tries to relocate .rel.dyn section in the binary.
Overall, the static-pie program does not need a dynamic linker at all. So maybe we should remove this argument in wrapper when static-pie is enabled.

Thank you very much.

[1]. https://groups.google.com/forum/#!msg/llvm-dev/XPrSPqD2zjM/YtH6Fi2YAgAJ
--
Best Regards.
Youren Shen.