[llvm-commits] [llvm-gcc-4.2] r56865 - /llvm-gcc-4.2/trunk/gcc/config/darwin.c

Evan Cheng evan.cheng at apple.com
Tue Sep 30 10:57:49 PDT 2008


Author: evancheng
Date: Tue Sep 30 12:57:49 2008
New Revision: 56865

URL: http://llvm.org/viewvc/llvm-project?rev=56865&view=rev
Log:
Fix r56370 and subsequent changes: determine correct target triple when -mmacosx-version-min is specified.

Modified:
    llvm-gcc-4.2/trunk/gcc/config/darwin.c

Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.c?rev=56865&r1=56864&r2=56865&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/darwin.c (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin.c Tue Sep 30 12:57:49 2008
@@ -2674,19 +2674,17 @@
 
 /* LLVM LOCAL begin radar 6230142 */
 unsigned darwin_llvm_override_target_version(const char *triple, char **new_triple) {
-  int len = 0, version = 0;
+  int len = 0, pad = 0, version = 0;
 
   if (!darwin_macosx_version_min)
     return 0;
   
-  /* Triple string is expected to look something like 'i386-apple-darwin?' or
-     'i386-apple-darwin9.5.0'  */
-  len = strlen (triple);
-  if (len < 7)
-    return 0;
-  if (strncmp (&triple[len - 7], "darwin", 6) != 0 ||
-      (len > 11 && strncmp (&triple[len - 11], "darwin", 6) != 0))
+  /* Triple string is expected to look something like 'i386-*-darwin?' or
+     'i386-*-darwin9.5.0'  */
+  char *substr = strstr(triple, "darwin");
+  if (!substr)
     return 0;
+  len = substr + 6 - triple;
 
   /* llvm-gcc doesn't support pre-10.0 systems. */
   version = strverscmp (darwin_macosx_version_min, "10.0");
@@ -2698,16 +2696,17 @@
   
   /* Darwin version number will be 2 digits for 10.6 and up.  */
   if (version >= 10)
-    ++len;
-  *new_triple = ggc_alloc (len+1);
-  strcpy (*new_triple, triple);
+    pad = 1;
+  *new_triple = ggc_alloc (len+pad+1);
+  strncpy (*new_triple, triple, len);
   if (version >= 10)
     {
-      (*new_triple)[len-2] = '1';
+      (*new_triple)[len] = '1';
       version -= 10;
+      ++len;
     }
-  (*new_triple)[len-1] = '0' + version;
-  (*new_triple)[len] = '\0';
+  (*new_triple)[len] = '0' + version;
+  (*new_triple)[len+1] = '\0';
   
   return 1;
 }





More information about the llvm-commits mailing list