Community
cancel
Showing results for 
Search instead for 
Did you mean: 
288 Views

Not Compatible With "-static-pie" as in GCC

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:

https://github.com/gcc-mirror/gcc/blob/master/gcc/config/gnu-user.h ;

0 Kudos
3 Replies
Viet_H_Intel
Moderator
288 Views

Thanks for your report.

288 Views

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,"?

Viet_H_Intel
Moderator
288 Views

It seems to be a bug in the documentation. crt should be valid for Qlocation only (-Qlocation,crt,path). 

Reply