[llvm-commits] [llvm-gcc-4.2] r56128 - in /llvm-gcc-4.2/trunk/gcc: c-incpath.c config/darwin.c config/darwin.h target-def.h

Devang Patel dpatel at apple.com
Thu Sep 11 15:34:07 PDT 2008


Author: dpatel
Date: Thu Sep 11 17:34:07 2008
New Revision: 56128

URL: http://llvm.org/viewvc/llvm-project?rev=56128&view=rev
Log:
Fix sdk header search. 
More info. in the comments.

Modified:
    llvm-gcc-4.2/trunk/gcc/c-incpath.c
    llvm-gcc-4.2/trunk/gcc/config/darwin.c
    llvm-gcc-4.2/trunk/gcc/config/darwin.h
    llvm-gcc-4.2/trunk/gcc/target-def.h

Modified: llvm-gcc-4.2/trunk/gcc/c-incpath.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/c-incpath.c?rev=56128&r1=56127&r2=56128&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/c-incpath.c (original)
+++ llvm-gcc-4.2/trunk/gcc/c-incpath.c Thu Sep 11 17:34:07 2008
@@ -127,7 +127,8 @@
 }
 
 /* LLVM LOCAL begin sysroot */
-static char *
+char *default_build_sysroot_path(const char *sysroot, const char *path);
+char *
 default_build_sysroot_path(const char *sysroot, const char *path) {
   return concat (sysroot, path, NULL);
 }

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=56128&r1=56127&r2=56128&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/darwin.c (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin.c Thu Sep 11 17:34:07 2008
@@ -1534,6 +1534,46 @@
 }
 
 /* LLVM LOCAL begin */
+extern char * mempcpy (char *dst, const char *src, size_t len);
+char *darwin_build_sysroot_path(const char *sysroot, const char *path) {
+  char *str = NULL;
+  char *str1 = NULL;
+  char *darwin = NULL;
+#ifndef ENABLE_LLVM
+  return concat (sysroot, path, NULL);
+#endif
+
+  /* FIXME : When time is appropriate, handle other sdks.  */
+  if (sysroot && strstr(sysroot, "MacOSX10.5.sdk") == NULL)
+    return concat (sysroot, path, NULL);
+
+  /* libstdc++ headers are fixed magically through sym link jungle.  */
+  if (strstr(path, "c++") != NULL)
+    return concat (sysroot, path, NULL);
+
+  darwin = strstr(path, "apple-darwin");
+  if (!darwin)
+    return concat (sysroot, path, NULL);
+
+  /* Released 10.5 SDK uses header paths that include OS version
+     number, for example 9 in 
+     .../MacOSX10.5.sdk/.../lib/gcc/i686-apple-darwin9/4.2.1/include
+     However the 9 is constructed based on the host OS version on
+     which the compiler is built. This means, the compiler will
+     not be able to use 10.5 SDK unless it is built on 10.5 system.
+     Fix header path here to make it work.
+     
+     Path includes "apple-darwinXYZ/" substring. Replace
+     this substring with "apple-darwin9/". */
+  str = XNEWVEC(char, strlen(sysroot) + strlen(path) + 2);
+  str1 = mempcpy(str, sysroot, strlen(sysroot));
+  str1 = mempcpy(str1, path, darwin - path);
+  str1 = mempcpy(str1, "apple-darwin9", strlen("apple-darwin9"));
+  darwin = strchr(darwin, '/');
+  str1 = mempcpy(str1, darwin, strlen(darwin));
+  return str;
+}
+
 #ifdef ENABLE_LLVM
 const char *darwin_objc_llvm_special_name_section(const char* name) {
   if (!strncmp (name, "CLASS_METHODS_", 14))

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

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/darwin.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin.h Thu Sep 11 17:34:07 2008
@@ -1555,4 +1555,9 @@
 #endif /* CROSS_DIRECTORY_STRUCTURE */
 /* APPLE LOCAL end mainline 2007-06-14 5235474 */
 
+/* LLVM LOCAL begin sysroot */
+char *darwin_build_sysroot_path(const char *sysroot, const char *path);
+#undef TARGET_BUILD_SYSROOT_PATH
+#define TARGET_BUILD_SYSROOT_PATH(S,P) darwin_build_sysroot_path((S), (P))
+/* LLVM LOCAL end sysroot */
 #endif /* CONFIG_DARWIN_H */

Modified: llvm-gcc-4.2/trunk/gcc/target-def.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/target-def.h?rev=56128&r1=56127&r2=56128&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/target-def.h (original)
+++ llvm-gcc-4.2/trunk/gcc/target-def.h Thu Sep 11 17:34:07 2008
@@ -759,7 +759,10 @@
   /* APPLE LOCAL end radar 5155743, mainline candidate */	\
 }
 
-/* LLVM LOCAL sysroot */
+/* LLVM LOCAL begin sysroot */
+#ifndef TARGET_BUILD_SYSROOT_PATH
 #define TARGET_BUILD_SYSROOT_PATH(S,P) default_build_sysroot_path((S), (P))
+#endif
+/* LLVM LOCAL end sysroot */
 #include "hooks.h"
 #include "targhooks.h"





More information about the llvm-commits mailing list