[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