On Tue, Dec 22, 2015 at 10:53:10PM +0000, Richard W.M. Jones wrote:
https://gcc.gnu.org/gcc-6/changes.html seems like the right place
for
general information about changes (.. right?)
Yes.
So one thing I heard was the PIE would be the default in GCC 6. (I
can't find now who said that). That's not mentioned on the page
above, but it is mentioned that there is a --enable-default-pie flag.
Will we be using that flag? (I'm still, as I guess many other people
No. We have a way to enable it for packages through redhat-rpm-config,
I think it is undesirable to change the default behavior of the compiler.
will be, very unclear on the difference between -pie and just
compiling everything in your program with -fPIC).
-pie is a link option like -shared is, -fPIC has -fPIE counterpart.
-fPIC enables position independent code and allows symbol interposition,
-fPIE only enables position indepent code and disallows symbol interposition
(i.e. whether a non-hidden symbol defined in the same source file must bind
to that definition or could bind to some other definition).
Thus, -shared libraries should contain -fpic/-fPIC code only, -pie binaries
should contain -fpie/-fPIE code, but could contain -fpic/-fPIC code too
(though unnecessarily slightly less efficient), normal position dependent
binaries can contain any code, but -fpie/-fPIE in there will be less
efficient and -fpic/-fPIC even more so.
Jakub