Author: zhuqing
Date: 2010-12-27 01:24:31 -0500 (Mon, 27 Dec 2010)
New Revision: 3448

Modified:
   trunk/osprey/driver/phases.c
   trunk/osprey/ipa/common/ipc_compile.cxx
Log:
Fix bug626.

Link with "Scrt1.o,crtbeginS.o,crtendS.o" instead of 
"crt1.o,crtbegin.o,crtend.o" when build with Ofast pie executable. 

Reviewed by David Coakley.


Modified: trunk/osprey/driver/phases.c
===================================================================
--- trunk/osprey/driver/phases.c        2010-12-23 00:52:44 UTC (rev 3447)
+++ trunk/osprey/driver/phases.c        2010-12-27 06:24:31 UTC (rev 3448)
@@ -1796,9 +1796,15 @@
                if ((shared != DSO_SHARED) && (shared != RELOCATABLE)
                    && ! option_was_seen(O_nostartfiles)) 
                {
-                       add_string(args, find_crt_path("crt1.o"));
+                       if (option_was_seen(O_pie)) {
+                         add_string(args, find_crt_path("Scrt1.o"));
+                         add_string(args, find_crt_path("crtbeginS.o"));
+                       }
+                       else {
+                         add_string(args, find_crt_path("crt1.o"));
+                         add_string(args, find_crt_path("crtbegin.o"));
+                       }
                        add_string(args, find_crt_path("crti.o"));
-                       add_string(args, find_crt_path("crtbegin.o"));
                        if (ftz_crt) {
                                add_string(args, find_obj_path("ftz.o"));
                        }
@@ -2246,7 +2252,10 @@
 #else
        if (ipa == TRUE) {
          if (shared != DSO_SHARED && shared != RELOCATABLE) {
-           add_string(args, find_crt_path("crtend.o"));
+           if (option_was_seen(O_pie))
+             add_string(args, find_crt_path("crtendS.o"));
+           else
+             add_string(args, find_crt_path("crtend.o"));
 #ifndef TARG_SL
            add_string(args, find_crt_path("crtn.o"));
 #endif

Modified: trunk/osprey/ipa/common/ipc_compile.cxx
===================================================================
--- trunk/osprey/ipa/common/ipc_compile.cxx     2010-12-23 00:52:44 UTC (rev 
3447)
+++ trunk/osprey/ipa/common/ipc_compile.cxx     2010-12-27 06:24:31 UTC (rev 
3448)
@@ -902,9 +902,12 @@
       const char *p;
 #ifndef TARG_SL // jczhang: use slcc specific crt*.o
       if (((p = strstr(*i, "/crt1.o")) && p[7] == '\0') ||
+          ((p = strstr(*i, "/Scrt1.o")) && p[8] == '\0') ||
          ((p = strstr(*i, "/crti.o")) && p[7] == '\0') ||
          ((p = strstr(*i, "/crtbegin.o")) && p[11] == '\0') ||
+          ((p = strstr(*i, "/crtbeginS.o")) && p[12] == '\0') ||
          ((p = strstr(*i, "/crtend.o")) && p[9] == '\0') ||
+          ((p = strstr(*i, "/crtendS.o")) && p[10] == '\0') ||
          ((p = strstr(*i, "/crtn.o")) && p[7] == '\0')) {
        continue;
       }


------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to