Right now if you run "gcc -fpie -fpic" you get, in effect, "gcc -fpie". I think you should get "gcc -fpic". In general I think that of the options -fpic, -fPIC, -fpie, -fPIE, -fno-pic, -fno-PIC, -fno-pie, -fno-PIE the compiler should act as though only the last of those options were specified. That follows the usual formulat in which the last option wins.
This patch implements that. Bootstrapped and tested on x86_64-unknown-linux-gnu. OK for mainline? Ian 2012-11-13 Ian Lance Taylor <i...@google.com> * common.opt (fPIC, fPIE, fpic, fpie): Create a Negative loop such that any of these options disables the others.
Index: common.opt =================================================================== --- common.opt (revision 193484) +++ common.opt (working copy) @@ -1583,19 +1583,19 @@ Common Report Var(flag_peephole2) Optimi Enable an RTL peephole pass before sched2 fPIC -Common Report Var(flag_pic,2) +Common Report Var(flag_pic,2) Negative(fPIE) Generate position-independent code if possible (large mode) fPIE -Common Report Var(flag_pie,2) +Common Report Var(flag_pie,2) Negative(fpic) Generate position-independent code for executables if possible (large mode) fpic -Common Report Var(flag_pic,1) +Common Report Var(flag_pic,1) Negative(fpie) Generate position-independent code if possible (small mode) fpie -Common Report Var(flag_pie,1) +Common Report Var(flag_pie,1) Negative(fPIC) Generate position-independent code for executables if possible (small mode) fplugin=