Less of a bug report and more of a request to implement the ; the "-static-pie" flag is already available in most newer versions of GCC and Clang, but it is an unrecognized flag by icc/icpc, and -static -pie is not the same as -static-pie (because -static and -static-pie are mutually exclusive in GCC).
The implementation is fairly simple, with the largest change being that when linking to startfiles, it just needs to link to rcrt1.o for -static-pie and to grcrt1.o for -static-pie with PGO, instead of linking to Scrt1.o (PIE) or crt1.o(static lib). When linking to the end files, it would use crtbeginS.o instead of crtbeginT.o (as is usually used for static libs.)
Some relevant info/files:
- Development Tools
- Intel® C++ Compiler
- Intel® Parallel Studio XE
- Intel® System Studio
- Parallel Computing
While there are some more difficult ways to work around this by using --no-start-files, etc., I noticed that the compiler has an option for crt files, but there is no documentation for it, nor do any of the generally-sensible options for passing them seem to work. Most of the other linux-only options have no indications on their use either. "command line warning #10139: invalid component in crt"
https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-qoption "-Qoption,crt,options - Indicates the crt%.o files linked into executables to contain the place to start execution."
Is there any documentation on how to use "-Qoption,crt,"?