--- gcc/c-incpath.c 2007-09-01 08:28:30.000000000 -0700 +++ gcc/c-incpath.c 2008-09-19 20:32:27.000000000 -0700 @@ -332,6 +332,32 @@ tails[chain] = p; } +#ifdef CROSS_COMPILE +/* Rewrite the include paths for cross compiles */ +char *cross_fixup_path(char *path); +char *cross_fixup_path(char *path) { + char *name, *root, *ptr; + int len; + + root = getenv("ROOT"); + if (root == NULL) + return name; + + if (strstr(path, "/usr/include") != path) + return path; + + name = xstrdup(path); + len = strlen(root) + strlen(name) + 2; + ptr = (char *) xmalloc (len); + sprintf(ptr, "%s/%s", root, name); + fprintf(stderr, _("Autofixing Invalid Cross Include Path: %s -> %s\n"), name, ptr); + free(path); + path = ptr; + name = path; + return name; +} +#endif + /* Add PATH to the include chain CHAIN. PATH must be malloc-ed and NUL-terminated. */ void @@ -359,6 +385,11 @@ p->construct = 0; p->user_supplied_p = user_supplied_p; +#ifdef CROSS_COMPILE + path = cross_fixup_path(path); + p->name = path; +#endif + add_cpp_dir_path (p, chain); }