On Sun, Dec 04, 2011 at 08:18:32PM +0100, Jakub Jelinek wrote: > On Sun, Dec 04, 2011 at 02:00:20PM -0500, Jack Howarth wrote: > > > > at -m32/-m64 on x86_64-apple-darwin11 due to the -pie linker default. > > > > Iain had wanted > > > > to leave these in place to encourage boehm-gc to be fixed but I doubt > > > > that is a realistic > > > > goal in the near/middle term. Perhaps we could patch > > > > boehm-gc/testsuite/lib/boehm-gc.exp > > > > to pass -fno-pie on darwin (now that it is functional)? > > > > > > I think we should just find a way to add -fno-pie... Are there any > > > flags that are added because we are doing gc that we can key off of? > > -f{pic,PIC,pie,PIE,no-pic} aren't option that should have any effect on how > are binaries/shared libraries linked, these options control solely > compilation. -shared, -pie or lack of these options determines how are > things linked. So, either you should pass -no-pie or whatever linker option > you need to generate position dependent binaries by default, unless -shared > or -pie is specified, or you should add -no-pie or something similar, but > IMHO it shouldn't be -fno-pie, that is a compilation option/too similar to > them.
Jakub, This isn't really an option on darwin11 and later since the linker defaults to -pie and this results in warnings from the linker of the form... ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in _f from /var/tmp//ccVNy9V9.o. To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie Author: mrs Date: Sun Dec 4 07:09:56 2011 New Revision: 181982 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=181982 Log: 2011-12-03 Jack Howarth <howa...@bromo.med.uc.edu> * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Pass -no_pie for non-PIC code when targeting 10.7 or later. Modified: trunk/gcc/ChangeLog trunk/gcc/config/darwin10.h is designed to inhibit this linker noise by explicitly disabling pie linkage. Also, FSF gcc previously wasn't honoring -fno-pie since this didn't inhibit the darwin11 linker from creating a PIE executable. Unfortunately the linker option -no_pie isn't recognized by earlier darwin linkers which makes -fno-pie preferred since it only passes -no_pie to the linker when targeting 10.7 or later. So we may have to make the change darwin-specific. Jack > > Jakub