On Tue, 26 Mar 2013 16:39:54 -0700, Philip Guenther wrote:
> On Tue, Mar 26, 2013 at 3:45 PM, Pascal Stumpf <pascal.stu...@cubes.de> wrote:
> ...
> >> Anyway, can we then just ignore the -pg option if it doesn't work for
> >> shared instead of breaking the link? Or do you have a better solution?
> >
> > I could do that (if I figure out the correct gcc specs), sure.
> 
> Change this:
>    %l %{pie:-pie} %{p|pg|nopie:-nopie}
> 
> to this:
>    %{pie:-pie} %{p|pg|nopie:-nopie} %l
> 
> in the link_command spec.

That would require changing how LINK_PIE_SPEC is integrated into
LINK_COMMAND_SPEC, and it exploits the -nopie/-shared ordering nits I
mentioned, so I'm not a fan of that.  I thought of something like this:

Index: gcc.c
===================================================================
RCS file: /home/pascal/cvs/src/gnu/gcc/gcc/gcc.c,v
retrieving revision 1.2
diff -u -p -r1.2 gcc.c
--- gcc.c       28 Aug 2012 18:59:28 -0000      1.2
+++ gcc.c       26 Mar 2013 23:29:00 -0000
@@ -684,7 +684,7 @@ proper position among the other output f
 
 #ifndef LINK_PIE_SPEC
 #ifdef HAVE_LD_PIE
-#define LINK_PIE_SPEC "%{pie:-pie} %{p|pg|nopie:-nopie} "
+#define LINK_PIE_SPEC "%{pie:-pie} %{!shared:%{p|pg:-nopie}} %{nopie:-nopie} "
 #else
 #define LINK_PIE_SPEC "%{pie:} "
 #endif

> ...but I also like Mark's suggestion, to make -nopie not change the
> link mode (shared-object vs executable).
> 
> 
> Philip Guenther
> 
> 

Reply via email to